library highstock;

import 'package:uuid/uuid.dart';
import 'dart:js';
import 'package:js/js.dart';
import 'dart:html';

@JS('Date.UTC')
external DateTime dateUTC (year, month, day);

@JS('Highcharts.StockChart')
class HighstockChart {
  external HighstockChart (StockChartOptions options);
  external List<Series> get series;
  external List<Axis> get axes;
  external bool get alignTicks;
  external void set alignTicks (bool a_alignTicks);
  /**
   * <p>Set the overall animation for all chart updating. Animation can be disabled throughout

      the chart by setting it to false here. It can be overridden for each individual

      API method as a function parameter. The only animation not affected by this option is the

      initial series animation, see <a class="internal" href="#plotOptions.series">plotOptions.series</a>

      =&gt; animation.</p>



      <p>The animation can either be set as a boolean or a configuration object. If <code>true</code>,

      it will use the 'swing' jQuery easing and a duration of 500 ms. If used as a configuration object,

      the following properties are supported:

      </p><dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>



      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>
   */
  external dynamic get animation;
  external void set animation (dynamic a_animation);
  /**
   * The background color or gradient for the outer chart area.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The color of the outer chart border.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the outer chart border.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The pixel width of the outer chart border.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * A CSS class name to apply to the charts container <code>div</code>, allowing unique CSS styling
      for each chart.
   */
  external String get className;
  external void set className (String a_className);
  /**
   * Event listeners for the chart.
   */
  external ChartEvents get events;
  external void set events (ChartEvents a_events);
  /**
   * An explicit height for the chart. By default the height is calculated from the offset height of the containing element, or 400 pixels if the containing element's height is 0.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * If true, the axes will scale to the remaining visible series once one series is hidden. If false, hiding and showing a series will not affect the axes or the other series. For stacks, once one series within the stack is hidden, the rest of the stack will close in around it even if the axis is not affected.
   */
  external bool get ignoreHiddenSeries;
  external void set ignoreHiddenSeries (bool a_ignoreHiddenSeries);
  /**
   * <p>The margin between the outer edge of the chart and the plot area. The numbers in the array designate top, right, bottom and left respectively. Use the options <code>marginTop</code>, <code>marginRight</code>, <code>marginBottom</code> and <code>marginLeft</code> for shorthand setting of one option.</p> <p>Since version 2.1, the margin is 0 by default. The actual space is dynamically calculated  from the offset of axis labels, axis title, title, subtitle and legend in addition to the <code>spacingTop</code>, <code>spacingRight</code>, <code>spacingBottom</code> and <code>spacingLeft</code> options.</p>
      Defaults to <code>[null]</code>.
   */
  external List get margin;
  external void set margin (List a_margin);
  /**
   * The margin between the bottom outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingBottom</code>.
   */
  external num get marginBottom;
  external void set marginBottom (num a_marginBottom);
  /**
   * The margin between the left outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingLeft</code>.
   */
  external num get marginLeft;
  external void set marginLeft (num a_marginLeft);
  /**
   * The margin between the right outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingRight</code>.
   */
  external num get marginRight;
  external void set marginRight (num a_marginRight);
  /**
   * The margin between the top outer edge of the chart and the plot area. Use this to set a fixed pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingTop</code>.
   */
  external num get marginTop;
  external void set marginTop (num a_marginTop);
  /**
   * Allow panning the zoomed area by click and drag on the chart. When the <code>zoomType</code> option is set, panning is disabled.
   */
  external bool get panning;
  external void set panning (bool a_panning);
  /**
   * Equivalent to <a href="#chart.zoomType">zoomType</a>, but for multitouch gestures only. By default, the <code>pinchType</code> is the same as the <code>zoomType</code> setting. However, pinching can be enabled separately in some cases, for example in stock charts where a mouse drag pans the chart, while pinching is enabled.
   */
  external String get pinchType;
  external void set pinchType (String a_pinchType);
  /**
   * The background color or gradient for the plot area.
   */
  external dynamic get plotBackgroundColor;
  external void set plotBackgroundColor (dynamic a_plotBackgroundColor);
  /**
   * The URL for an image to use as the plot background. To set an image as the background for the entire chart, set a CSS background image to the container element. Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.
   */
  external String get plotBackgroundImage;
  external void set plotBackgroundImage (String a_plotBackgroundImage);
  /**
   * The color of the inner chart or plot area border.
   */
  external dynamic get plotBorderColor;
  external void set plotBorderColor (dynamic a_plotBorderColor);
  /**
   * The pixel width of the plot area border.
   */
  external num get plotBorderWidth;
  external void set plotBorderWidth (num a_plotBorderWidth);
  /**
   * Whether to apply a drop shadow to the plot area. Requires that plotBackgroundColor
      be set. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get plotShadow;
  external void set plotShadow (dynamic a_plotShadow);
  /**
   * Whether to reflow the chart to fit the width of the container div on resizing the window.
   */
  external bool get reflow;
  external void set reflow (bool a_reflow);
  /**
   * The HTML element where the chart will be rendered. If it is a string, the element by that id is used. The HTML element can also be passed by direct reference.
   */
  external dynamic get renderTo;
  external void set renderTo (dynamic a_renderTo);
  /**
   * The background color of the marker square when selecting (zooming in on) an area of the chart.
      Defaults to <code>rgba(69,114,167,0.25)</code>.
   */
  external dynamic get selectionMarkerFill;
  external void set selectionMarkerFill (dynamic a_selectionMarkerFill);
  /**
   * Whether to apply a drop shadow to the outer chart area. Requires that
      backgroundColor be set. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The distance between the outer edge of the chart and the content, like title, legend, axis title or labels. The numbers in the array designate top, right, bottom and left respectively. Use the options spacingTop, spacingRight, spacingBottom and spacingLeft options for shorthand setting of one option.
   */
  external List<num> get spacing;
  external void set spacing (List<num> a_spacing);
  /**
   * <p>The space between the bottom edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingBottom;
  external void set spacingBottom (num a_spacingBottom);
  /**
   * <p>The space between the left edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingLeft;
  external void set spacingLeft (num a_spacingLeft);
  /**
   * <p>The space between the right edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingRight;
  external void set spacingRight (num a_spacingRight);
  /**
   * <p>The space between the top edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingTop;
  external void set spacingTop (num a_spacingTop);
  /**
   * Additional CSS styles to apply inline to the container <code>div</code>. Note that since the default font styles are applied in the renderer, it is ignorant of the individual chart  options and must be set globally. Defaults to:
      <pre>style: {
      fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif', // default font
      fontSize: '12px'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The default series type for the chart. Can be any of the chart types listed under <a href="#plotOptions">plotOptions</a>.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * An explicit width for the chart. By default the width is calculated from the offset width of the containing element.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * Decides in what dimensions the user can zoom by dragging the mouse. Can be one of <code>x</code>, <code>y</code> or <code>xy</code>.
   */
  external String get zoomType;
  external void set zoomType (String a_zoomType);
  /**
   * options: Object<br>The series options, as documented under <a class="internal" href="#plotOptions.series">plotOptions.series</a> and under the plotOptions for each series type.||



      redraw: Boolean<bcalr>Defaults to <code>true</code>. Whether to redraw the chart after the series is added. See the <code>redraw()</code> method below.||animation: Mixed<br>Defaults to true. When true, the series' updating will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external dynamic addSeries ( dynamic options, bool redraw, dynamic animation);
  /**
   *
   */
  external void destroy ();
  /**
   * options: Object<br>Exporting options. Out of the <a class="internal" href="#exporting">exporting</a> options, the following options can be given as parameters to the exportChart method. All options default to the values given in the exporting config options.

      <code>filename</code>: the filename for the export without extension,

      <code>url</code>: the URL for the server module to do the conversion,

      <code>width</code>: the width of the PNG or JPEG image generated on the server,

      <code>type</code>: the MIME type of the converted image,

      <code>sourceWidth</code>: the width of the source (in-page) chart,

      <code>sourceHeight</code>: the height of the source chart.||



      chartOptions: Object<br>Additional chart options for the exported chart. For example a different background color can be added here.
   */
  external void exportChart ( dynamic options, dynamic chartOptions);
  /**
   * See <a href="#Chart.exportChart">exportChart</a> for parameter description.
   */
  external void exportChartLocal ( dynamic options, dynamic chartOptions);
  /**
   * id: String<br>The id of the axis, series or point to get.
   */
  external dynamic get ( String id);
  /**
   * additionalOptions: Object<br>Chart options to add to the exported chart in addition to the options given for the original chart. For example if series.lineWidth should be greater in the exported chart than in the original, or the chart should have a different background color, this is added here.
   */
  external String getSVG ( dynamic additionalOptions);
  /**
   * An array of the selected points.
   */
  external dynamic getSelectedPoints ();
  /**
   * An array of the selected Series items.
   */
  external dynamic getSelectedSeries ();
  /**
   *
   */
  external void hideLoading ();
  /**
   *
   */
  external void print ();
  /**
   * animation: Mixed<br>Defaults to true. When true, the update will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void redraw ( dynamic animation);
  /**
   * width: Number<br>The new pixel width of the chart.||height: Number<br>The new pixel height of the chart.||animation: Mixed<br>Defaults to true. When true, the resize will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void setSize ( num width, num height, dynamic animation);
  /**
   * title: Object<br>A configuration object for the new title as defined at <a class="internal" href="#title">#title</a>.||

      subtitle: Object<br>A configuration object for the new subtitle as defined at <a class="internal" href="#subtitle">#subtitle</a>.||

      redraw: Boolean<br>Whether to redraw the chart. Defaults to true.
   */
  external void setTitle ( dynamic title, dynamic subtitle, bool redraw);
  /**
   *
   */
  external dynamic showLoading ( String str);
}

@JS()
@anonymous
class OptionsObject {
  static Uuid uidGen = new Uuid();
  JsObject jsChart;
}

@JS()
@anonymous
class Axis extends OptionsObject {
}

@JS()
@anonymous
class StockChartOptions extends OptionsObject {
  external factory StockChartOptions ();

  external Chart get chart;
  external void set chart (Chart a_chart);

  external List<String> get colors;
  external void set colors (List<String> a_colors);

  external Credits get credits;
  external void set credits (Credits a_credits);

  external Exporting get exporting;
  external void set exporting (Exporting a_exporting);

  external Labels get labels;
  external void set labels (Labels a_labels);

  external Legend get legend;
  external void set legend (Legend a_legend);

  external Loading get loading;
  external void set loading (Loading a_loading);

  external Navigation get navigation;
  external void set navigation (Navigation a_navigation);

  external PlotOptions get plotOptions;
  external void set plotOptions (PlotOptions a_plotOptions);

  external RangeSelector get rangeSelector;
  external void set rangeSelector (RangeSelector a_rangeSelector);

  external Scrollbar get scrollbar;
  external void set scrollbar (Scrollbar a_scrollbar);

  external List<Series> get series;
  external void set series (List<Series> a_series);

  external Subtitle get subtitle;
  external void set subtitle (Subtitle a_subtitle);

  external Title get title;
  external void set title (Title a_title);

  external Tooltip get tooltip;
  external void set tooltip (Tooltip a_tooltip);

  external XAxis get xAxis;
  external void set xAxis (XAxis a_xAxis);

  external YAxis get yAxis;
  external void set yAxis (YAxis a_yAxis);

}

@JS()
@anonymous
class Chart extends OptionsObject {
  external factory Chart ();
  /**
   * When using multiple axis, the ticks of two or more opposite axes will  automatically be aligned by adding ticks to the axis or axes with the least ticks. This can be prevented by setting <code>alignTicks</code> to false. If the grid lines look messy, it's a good idea to hide them for the secondary axis by setting <code>gridLineWidth</code> to 0.
   */
  external bool get alignTicks;
  external void set alignTicks (bool a_alignTicks);
  /**
   * <p>Set the overall animation for all chart updating. Animation can be disabled throughout

      the chart by setting it to false here. It can be overridden for each individual

      API method as a function parameter. The only animation not affected by this option is the

      initial series animation, see <a class="internal" href="#plotOptions.series">plotOptions.series</a>

      =&gt; animation.</p>



      <p>The animation can either be set as a boolean or a configuration object. If <code>true</code>,

      it will use the 'swing' jQuery easing and a duration of 500 ms. If used as a configuration object,

      the following properties are supported:

      </p><dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>



      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>
   */
  external dynamic get animation;
  external void set animation (dynamic a_animation);
  /**
   * The background color or gradient for the outer chart area.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The color of the outer chart border.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the outer chart border.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The pixel width of the outer chart border.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * A CSS class name to apply to the charts container <code>div</code>, allowing unique CSS styling
      for each chart.
   */
  external String get className;
  external void set className (String a_className);
  /**
   * Event listeners for the chart.
   */
  external ChartEvents get events;
  external void set events (ChartEvents a_events);
  /**
   * An explicit height for the chart. By default the height is calculated from the offset height of the containing element, or 400 pixels if the containing element's height is 0.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * If true, the axes will scale to the remaining visible series once one series is hidden. If false, hiding and showing a series will not affect the axes or the other series. For stacks, once one series within the stack is hidden, the rest of the stack will close in around it even if the axis is not affected.
   */
  external bool get ignoreHiddenSeries;
  external void set ignoreHiddenSeries (bool a_ignoreHiddenSeries);
  /**
   * <p>The margin between the outer edge of the chart and the plot area. The numbers in the array designate top, right, bottom and left respectively. Use the options <code>marginTop</code>, <code>marginRight</code>, <code>marginBottom</code> and <code>marginLeft</code> for shorthand setting of one option.</p> <p>Since version 2.1, the margin is 0 by default. The actual space is dynamically calculated  from the offset of axis labels, axis title, title, subtitle and legend in addition to the <code>spacingTop</code>, <code>spacingRight</code>, <code>spacingBottom</code> and <code>spacingLeft</code> options.</p>
      Defaults to <code>[null]</code>.
   */
  external List get margin;
  external void set margin (List a_margin);
  /**
   * The margin between the bottom outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingBottom</code>.
   */
  external num get marginBottom;
  external void set marginBottom (num a_marginBottom);
  /**
   * The margin between the left outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingLeft</code>.
   */
  external num get marginLeft;
  external void set marginLeft (num a_marginLeft);
  /**
   * The margin between the right outer edge of the chart and the plot area. Use this to set a fixed
      pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingRight</code>.
   */
  external num get marginRight;
  external void set marginRight (num a_marginRight);
  /**
   * The margin between the top outer edge of the chart and the plot area. Use this to set a fixed pixel value for the margin as opposed to the default dynamic margin. See also <code>spacingTop</code>.
   */
  external num get marginTop;
  external void set marginTop (num a_marginTop);
  /**
   * Allow panning the zoomed area by click and drag on the chart. When the <code>zoomType</code> option is set, panning is disabled.
   */
  external bool get panning;
  external void set panning (bool a_panning);
  /**
   * Equivalent to <a href="#chart.zoomType">zoomType</a>, but for multitouch gestures only. By default, the <code>pinchType</code> is the same as the <code>zoomType</code> setting. However, pinching can be enabled separately in some cases, for example in stock charts where a mouse drag pans the chart, while pinching is enabled.
   */
  external String get pinchType;
  external void set pinchType (String a_pinchType);
  /**
   * The background color or gradient for the plot area.
   */
  external dynamic get plotBackgroundColor;
  external void set plotBackgroundColor (dynamic a_plotBackgroundColor);
  /**
   * The URL for an image to use as the plot background. To set an image as the background for the entire chart, set a CSS background image to the container element. Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.
   */
  external String get plotBackgroundImage;
  external void set plotBackgroundImage (String a_plotBackgroundImage);
  /**
   * The color of the inner chart or plot area border.
   */
  external dynamic get plotBorderColor;
  external void set plotBorderColor (dynamic a_plotBorderColor);
  /**
   * The pixel width of the plot area border.
   */
  external num get plotBorderWidth;
  external void set plotBorderWidth (num a_plotBorderWidth);
  /**
   * Whether to apply a drop shadow to the plot area. Requires that plotBackgroundColor
      be set. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get plotShadow;
  external void set plotShadow (dynamic a_plotShadow);
  /**
   * Whether to reflow the chart to fit the width of the container div on resizing the window.
   */
  external bool get reflow;
  external void set reflow (bool a_reflow);
  /**
   * The HTML element where the chart will be rendered. If it is a string, the element by that id is used. The HTML element can also be passed by direct reference.
   */
  external dynamic get renderTo;
  external void set renderTo (dynamic a_renderTo);
  /**
   * The background color of the marker square when selecting (zooming in on) an area of the chart.
      Defaults to <code>rgba(69,114,167,0.25)</code>.
   */
  external dynamic get selectionMarkerFill;
  external void set selectionMarkerFill (dynamic a_selectionMarkerFill);
  /**
   * Whether to apply a drop shadow to the outer chart area. Requires that
      backgroundColor be set. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The distance between the outer edge of the chart and the content, like title, legend, axis title or labels. The numbers in the array designate top, right, bottom and left respectively. Use the options spacingTop, spacingRight, spacingBottom and spacingLeft options for shorthand setting of one option.
   */
  external List<num> get spacing;
  external void set spacing (List<num> a_spacing);
  /**
   * <p>The space between the bottom edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingBottom;
  external void set spacingBottom (num a_spacingBottom);
  /**
   * <p>The space between the left edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingLeft;
  external void set spacingLeft (num a_spacingLeft);
  /**
   * <p>The space between the right edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingRight;
  external void set spacingRight (num a_spacingRight);
  /**
   * <p>The space between the top edge of the chart and the content (plot area, axis title and labels, title, subtitle or
      legend in top position).</p>
   */
  external num get spacingTop;
  external void set spacingTop (num a_spacingTop);
  /**
   * Additional CSS styles to apply inline to the container <code>div</code>. Note that since the default font styles are applied in the renderer, it is ignorant of the individual chart  options and must be set globally. Defaults to:
      <pre>style: {
      fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif', // default font
      fontSize: '12px'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The default series type for the chart. Can be any of the chart types listed under <a href="#plotOptions">plotOptions</a>.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * An explicit width for the chart. By default the width is calculated from the offset width of the containing element.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * Decides in what dimensions the user can zoom by dragging the mouse. Can be one of <code>x</code>, <code>y</code> or <code>xy</code>.
   */
  external String get zoomType;
  external void set zoomType (String a_zoomType);
  /**
   * options: Object<br>The series options, as documented under <a class="internal" href="#plotOptions.series">plotOptions.series</a> and under the plotOptions for each series type.||



      redraw: Boolean<bcalr>Defaults to <code>true</code>. Whether to redraw the chart after the series is added. See the <code>redraw()</code> method below.||animation: Mixed<br>Defaults to true. When true, the series' updating will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external dynamic addSeries ( dynamic options, bool redraw, dynamic animation);
  /**
   *
   */
  external void destroy ();
  /**
   * options: Object<br>Exporting options. Out of the <a class="internal" href="#exporting">exporting</a> options, the following options can be given as parameters to the exportChart method. All options default to the values given in the exporting config options.

      <code>filename</code>: the filename for the export without extension,

      <code>url</code>: the URL for the server module to do the conversion,

      <code>width</code>: the width of the PNG or JPEG image generated on the server,

      <code>type</code>: the MIME type of the converted image,

      <code>sourceWidth</code>: the width of the source (in-page) chart,

      <code>sourceHeight</code>: the height of the source chart.||



      chartOptions: Object<br>Additional chart options for the exported chart. For example a different background color can be added here.
   */
  external void exportChart ( dynamic options, dynamic chartOptions);
  /**
   * See <a href="#Chart.exportChart">exportChart</a> for parameter description.
   */
  external void exportChartLocal ( dynamic options, dynamic chartOptions);
  /**
   * id: String<br>The id of the axis, series or point to get.
   */
  external dynamic get ( String id);
  /**
   * additionalOptions: Object<br>Chart options to add to the exported chart in addition to the options given for the original chart. For example if series.lineWidth should be greater in the exported chart than in the original, or the chart should have a different background color, this is added here.
   */
  external String getSVG ( dynamic additionalOptions);
  /**
   * An array of the selected points.
   */
  external dynamic getSelectedPoints ();
  /**
   * An array of the selected Series items.
   */
  external dynamic getSelectedSeries ();
  /**
   *
   */
  external void hideLoading ();
  /**
   *
   */
  external void print ();
  /**
   * animation: Mixed<br>Defaults to true. When true, the update will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void redraw ( dynamic animation);
  /**
   * width: Number<br>The new pixel width of the chart.||height: Number<br>The new pixel height of the chart.||animation: Mixed<br>Defaults to true. When true, the resize will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void setSize ( num width, num height, dynamic animation);
  /**
   * title: Object<br>A configuration object for the new title as defined at <a class="internal" href="#title">#title</a>.||

      subtitle: Object<br>A configuration object for the new subtitle as defined at <a class="internal" href="#subtitle">#subtitle</a>.||

      redraw: Boolean<br>Whether to redraw the chart. Defaults to true.
   */
  external void setTitle ( dynamic title, dynamic subtitle, bool redraw);
  /**
   *
   */
  external dynamic showLoading ( String str);
}
@JS()
@anonymous
class ChartEvents extends OptionsObject {
  external factory ChartEvents ();
  /**
   * Fires when a series is added to the chart after load time, using the <code>addSeries</code> method. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Through <code>event.options</code> you can access the series options that was passed to the <code>addSeries</code>  method. Returning false prevents the series from being added.
   */
  external Function get addSeries;
  external void set addSeries (Function a_addSeries);
  /**
   * Fires after a chart is printed through the context menu item or the <code>Chart.print</code> method. Requires the exporting module.
   */
  external Function get afterPrint;
  external void set afterPrint (Function a_afterPrint);
  /**
   * Fires before a chart is printed through the context menu item or the <code>Chart.print</code> method. Requires the exporting module.
   */
  external Function get beforePrint;
  external void set beforePrint (Function a_beforePrint);
  /**
   * <p>Fires when clicking on the plot background. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.</p> <p>Information on the clicked spot can be found through <code>event.xAxis</code> and  <code>event.yAxis</code>, which are arrays containing the axes of each dimension and each axis' value at the clicked spot. The primary axes are <code>event.xAxis[0]</code> and <code>event.yAxis[0]</code>. Remember the unit of a datetime axis is milliseconds since 1970-01-01 00:00:00.</p>

      <pre>click: function(e) {

      console.log(

      Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', e.xAxis[0].value),

      e.yAxis[0].value

      )

      }</pre>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * <p>Fires when the chart is finished loading. Since v4.2.2, it also waits for images to be loaded, for example from point markers. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.</p>



      <p>There is also a second parameter to the chart constructor where a callback function can be passed to be executed on chart.load.</p>
   */
  external Function get load;
  external void set load (Function a_load);
  /**
   * Fires when the chart is redrawn, either after a call to chart.redraw() or after an axis, series or point is modified with the <code>redraw</code> option set to true. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get redraw;
  external void set redraw (Function a_redraw);
  /**
   * <p>Fires when an area of the chart has been selected. Selection is enabled by setting the chart's zoomType. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. The default action for the  selection event is to zoom the  chart to the selected area. It can be prevented by calling  <code>event.preventDefault()</code>.</p> <p>Information on the selected area can be found through <code>event.xAxis</code> and  <code>event.yAxis</code>, which are arrays containing the axes of each dimension and each axis' min and max values. The primary axes are <code>event.xAxis[0]</code> and <code>event.yAxis[0]</code>. Remember the unit of a datetime axis is milliseconds since 1970-01-01 00:00:00.</p>

      <pre>selection: function(event) {

      // log the min and max of the primary, datetime x-axis

      console.log(

      Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', event.xAxis[0].min),

      Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', event.xAxis[0].max)

      );

      // log the min and max of the y axis

      console.log(event.yAxis[0].min, event.yAxis[0].max);

      }</pre>
   */
  external Function get selection;
  external void set selection (Function a_selection);
}
@JS()
@anonymous
class Credits extends OptionsObject {
  external factory Credits ();
  /**
   * Whether to show the credits text.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The URL for the credits label.
   */
  external String get href;
  external void set href (String a_href);
  /**
   * Position configuration for the credits label. Supported properties are  <code>align</code>, <code>verticalAlign</code>, <code>x</code> and <code>y</code>. Defaults to

      <pre>position: {

      align: 'right',

      x: -10,

      verticalAlign: 'bottom',

      y: -5

      }</pre>
   */
  external JsObject get position;
  external void set position (JsObject a_position);
  /**
   * CSS styles for the credits label. Defaults to:

      <pre>style: {

      cursor: 'pointer',

      color: '#909090',

      fontSize: '10px'



      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The text for the credits label.
   */
  external String get text;
  external void set text (String a_text);
}
@JS()
@anonymous
class Exporting extends OptionsObject {
  external factory Exporting ();
  /**
   * <p>Experimental setting to allow HTML inside the chart (added through the <code>useHTML</code> options), directly in the exported image. This allows you to preserve complicated HTML structures like tables or bi-directional text in exported charts.</p>



      <p>Disclaimer: The HTML is rendered in a <code>foreignObject</code> tag in the generated SVG. The official export server is based on PhantomJS, which supports this, but other SVG clients, like Batik, does not support it. This also applies to downloaded SVG that you want to open in a desktop client.</p>
   */
  external bool get allowHTML;
  external void set allowHTML (bool a_allowHTML);
  /**
   * Options for the export related buttons, print and export.
   */
  external ExportingButtons get buttons;
  external void set buttons (ExportingButtons a_buttons);
  /**
   * Additional chart options to be merged into an exported chart. For example, a common use case is to add data labels to improve readaility of the exported chart, or to add a printer-friendly color scheme.
   */
  external JsObject get chartOptions;
  external void set chartOptions (JsObject a_chartOptions);
  /**
   * Whether to enable the exporting module. Disabling the module will hide the context button, but API methods will still be available.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Whether or not to fall back to the export server if the offline-exporting module is unable to export the chart on the client side.
   */
  external bool get fallbackToExportServer;
  external void set fallbackToExportServer (bool a_fallbackToExportServer);
  /**
   * The filename, without extension, to use for the exported chart.
   */
  external String get filename;
  external void set filename (String a_filename);
  /**
   * An object containing additional attributes for the POST form that sends the SVG to the export server. For example, a <code>target</code> can be set to make sure the generated image is received in another frame, or a custom <code>enctype</code> or <code>encoding</code> can be set.
   */
  external JsObject get formAttributes;
  external void set formAttributes (JsObject a_formAttributes);
  /**
   * Defines the scale or zoom factor for the exported image compared to the on-screen display. While for instance a 600px wide chart may look good on a website, it will look bad in print. The default scale of 2 makes this chart export to a 1200px PNG or JPG.
   */
  external num get scale;
  external void set scale (num a_scale);
  /**
   * Analogous to <a href="#exporting.sourceWidth">sourceWidth</a>
   */
  external num get sourceHeight;
  external void set sourceHeight (num a_sourceHeight);
  /**
   * The width of the original chart when exported, unless an explicit <a href="#chart.width">chart.width</a> is set. The width exported raster image is then multiplied by <a href="#exporting.scale">scale</a>.
   */
  external num get sourceWidth;
  external void set sourceWidth (num a_sourceWidth);
  /**
   * Default MIME type for exporting if <code>chart.exportChart()</code> is called without specifying a <code>type</code> option. Possible values are <code>image/png</code>, <code>image/jpeg</code>, <code>application/pdf</code> and <code>image/svg+xml</code>.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * The URL for the server module converting the SVG string to an image format. By default this points to Highslide Software's free web service.
   */
  external String get url;
  external void set url (String a_url);
  /**
   * The pixel width of charts exported to PNG or JPG. As of Highstock 1.3, the default pixel width is a function of the <a href="#chart.width">chart.width</a> or <a href="#exporting.sourceWidth">exporting.sourceWidth</a> and the <a href="#exporting.scale">exporting.scale</a>.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ExportingButtons extends OptionsObject {
  external factory ExportingButtons ();
  /**
   * Options for the export button.
   */
  external ExportingButtonsContextButton get contextButton;
  external void set contextButton (ExportingButtonsContextButton a_contextButton);
}
@JS()
@anonymous
class ExportingButtonsContextButton extends OptionsObject {
  external factory ExportingButtonsContextButton ();
  /**
   * Alignment for the buttons.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to enable buttons.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Pixel height of the buttons.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * <p>A collection of config options for the menu items. Each options object consists
      of a <code>text</code> option which is a string to show in the menu item, as
      well as an <code>onclick</code> parameter which is a callback function to run
      on click.</p>
      <p>By default, there is the "Print" menu item plus one menu item for each of the available export types.
      Menu items can be customized by defining a new array of items and assigning
      <code>null</code> to unwanted positions (see override example below).</p>
   */
  external List<JsObject> get menuItems;
  external void set menuItems (List<JsObject> a_menuItems);
  /**
   * A click handler callback to use on the button directly instead of the popup menu.
   */
  external Function get onclick;
  external void set onclick (Function a_onclick);
  /**
   * The symbol for the button. Points to a definition function in the
      <code>Highcharts.Renderer.symbols</code> collection. The default
      <code>exportIcon</code> function is part of the exporting module.
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * See <a class="internal" href="#navigation.buttonOptions">navigation.buttonOptions</a> =&gt; symbolFill.
   */
  external String get symbolFill;
  external void set symbolFill (String a_symbolFill);
  /**
   * The pixel size of the symbol on the button.
   */
  external num get symbolSize;
  external void set symbolSize (num a_symbolSize);
  /**
   * The color of the symbol's stroke or line.
   */
  external dynamic get symbolStroke;
  external void set symbolStroke (dynamic a_symbolStroke);
  /**
   * The pixel stroke width of the symbol on the button.
   */
  external num get symbolStrokeWidth;
  external void set symbolStrokeWidth (num a_symbolStrokeWidth);
  /**
   * The x position of the center of the symbol inside the button.
   */
  external num get symbolX;
  external void set symbolX (num a_symbolX);
  /**
   * The y position of the center of the symbol inside the button.
   */
  external num get symbolY;
  external void set symbolY (num a_symbolY);
  /**
   * A text string to add to the individual button.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * A configuration object for the button theme. The object accepts SVG properties like <code>stroke-width</code>, <code>stroke</code> and <code>fill</code>. Tri-state button styles are supported by the <code>states.hover</code> and <code>states.select</code> objects.
   */
  external JsObject get theme;
  external void set theme (JsObject a_theme);
  /**
   * The vertical alignment of the buttons. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The pixel width of the button.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The horizontal position of the button relative to the <code>align</code>

      option.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The vertical offset of the button's position relative to its <code>verticalAlign</code>.			 .
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class Labels extends OptionsObject {
  external factory Labels ();
  /**
   * A HTML label that can be positioned anywhere in the chart area.
   */
  external LabelsItems get items;
  external void set items (LabelsItems a_items);
  /**
   * Shared CSS styles for all labels. Defaults to:
      <pre>style: {
      color: '#3E576F'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class LabelsItems extends OptionsObject {
  external factory LabelsItems ();
  /**
   * Inner HTML or text for the label.
   */
  external String get html;
  external void set html (String a_html);
  /**
   * CSS styles for each label. To position the label, use left and top like this:
      <pre>style: {
      left: '100px',
      top: '100px'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class Legend extends OptionsObject {
  external factory Legend ();
  /**
   * <p>The horizontal alignment of the legend box within the chart area. Valid values are <code>left</code>, <code>center</code> and <code>right</code>.</p>



      <p>In the case that the legend is aligned in a corner position, the <code>layout</code> option will determine whether to place it above/below or on the side of the plot area.</p>
   */
  external String get align;
  external void set align (String a_align);
  /**
   * The background color of the legend.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The color of the drawn border around the legend.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border corner radius of the legend.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The width of the drawn border around the legend.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * Enable or disable the legend.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When the legend is floating, the plot area ignores it and is allowed to be placed below it.
   */
  external bool get floating;
  external void set floating (bool a_floating);
  /**
   * In a legend with horizontal layout, the itemDistance defines the pixel distance between each item.
   */
  external num get itemDistance;
  external void set itemDistance (num a_itemDistance);
  /**
   * CSS styles for each legend item when the corresponding series or point is hidden. Only a subset of CSS is supported, notably those options related to text. Properties are inherited from <code>style</code> unless overridden here. Defaults to:

      <pre>itemHiddenStyle: {

      color: '#CCC'

      }</pre>
   */
  external dynamic get itemHiddenStyle;
  external void set itemHiddenStyle (dynamic a_itemHiddenStyle);
  /**
   * CSS styles for each legend item in hover mode. Only a subset of CSS is supported, notably those options related to text. Properties are inherited from <code>style</code> unless overridden here. Defaults to:

      <pre>itemHoverStyle: {

      color: '#000'

      }</pre>
   */
  external dynamic get itemHoverStyle;
  external void set itemHoverStyle (dynamic a_itemHoverStyle);
  /**
   * The pixel bottom margin for each legend item.
   */
  external num get itemMarginBottom;
  external void set itemMarginBottom (num a_itemMarginBottom);
  /**
   * The pixel top margin for each legend item.
   */
  external num get itemMarginTop;
  external void set itemMarginTop (num a_itemMarginTop);
  /**
   * CSS styles for each legend item. Only a subset of CSS is supported, notably those options related to text.
   */
  external dynamic get itemStyle;
  external void set itemStyle (dynamic a_itemStyle);
  /**
   * The width for each legend item. This is useful in a horizontal layout with many items when you want the items to align vertically.  .
   */
  external num get itemWidth;
  external void set itemWidth (num a_itemWidth);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for each legend label. Available variables relates to properties on the series, or the point in case of pies.
   */
  external String get labelFormat;
  external void set labelFormat (String a_labelFormat);
  /**
   * Callback function to format each of the series' labels. The <em>this</em> keyword refers to the series object, or the point object in case of pie charts. By default the series or point name is printed.
   */
  external Function get labelFormatter;
  external void set labelFormatter (Function a_labelFormatter);
  /**
   * The layout of the legend items. Can be one of "horizontal" or "vertical".
   */
  external String get layout;
  external void set layout (String a_layout);
  /**
   * If the plot area sized is calculated automatically and the legend is not floating, the legend margin is the  space between the legend and the axis labels or plot area.
   */
  external num get margin;
  external void set margin (num a_margin);
  /**
   * Maximum pixel height for the legend. When the maximum height is extended, navigation will show.
   */
  external num get maxHeight;
  external void set maxHeight (num a_maxHeight);
  /**
   * Options for the paging or navigation appearing when the legend is overflown.
   */
  external LegendNavigation get navigation;
  external void set navigation (LegendNavigation a_navigation);
  /**
   * The inner padding of the legend box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Whether to reverse the order of the legend items compared to the order of the series or points as defined in the configuration object.
   */
  external bool get reversed;
  external void set reversed (bool a_reversed);
  /**
   * Whether to apply a drop shadow to the legend. A <code>backgroundColor</code>
      also needs to be applied for this to take effect. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * CSS styles for the legend area. In the 1.x versions the position of the legend area was determined by CSS. In 2.x, the position is determined by properties like  <code>align</code>, <code>verticalAlign</code>, <code>x</code> and <code>y</code>, but the styles are still parsed for backwards compatibility.
   */
  @deprecated
  external dynamic get style;
  @deprecated
  external void set style (dynamic a_style);
  /**
   * The pixel height of the symbol for series types that use a rectangle in the legend. Defaults to the font size of legend items.
   */
  external num get symbolHeight;
  external void set symbolHeight (num a_symbolHeight);
  /**
   * The pixel padding between the legend item symbol and the legend item text.
   */
  external num get symbolPadding;
  external void set symbolPadding (num a_symbolPadding);
  /**
   * The border radius of the symbol for series types that use a rectangle in the legend.
   */
  external num get symbolRadius;
  external void set symbolRadius (num a_symbolRadius);
  /**
   * The pixel width of the legend item symbol.
   */
  external num get symbolWidth;
  external void set symbolWidth (num a_symbolWidth);
  /**
   * A title to be added on top of the legend
   */
  external JsObject get title;
  external void set title (JsObject a_title);
  /**
   * <p>Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the legend item texts. Prior to 2.1.7, when using HTML, <a href="#legend.navigation">legend.navigation</a> was disabled.</p>
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * <p>The vertical alignment of the legend box. Can be one of <code>top</code>, <code>middle</code> or  <code>bottom</code>. Vertical position can be further determined by the <code>y</code> option.</p>



      <p>In the case that the legend is aligned in a corner position, the <code>layout</code> option will determine whether to place it above/below or on the side of the plot area.</p>
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The width of the legend box.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The x offset of the legend relative to its horizontal alignment <code>align</code> within chart.spacingLeft and chart.spacingRight. Negative x moves it to the left, positive x moves it to the right.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The vertical offset of the legend relative to it's vertical alignment <code>verticalAlign</code> within chart.spacingTop and chart.spacingBottom. Negative y moves it up, positive y moves it down.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class LegendNavigation extends OptionsObject {
  external factory LegendNavigation ();
  /**
   * The color for the active up or down arrow in the legend page navigation.
   */
  external dynamic get activeColor;
  external void set activeColor (dynamic a_activeColor);
  /**
   * How to animate the pages when navigating up or down. A value of <code>true</code> applies the default navigation given in  the chart.animation option. Additional options can be given as an object containing values for easing and duration.  .
   */
  external dynamic get animation;
  external void set animation (dynamic a_animation);
  /**
   * The pixel size of the up and down arrows in the legend paging navigation.  .
   */
  external num get arrowSize;
  external void set arrowSize (num a_arrowSize);
  /**
   * The color of the inactive up or down arrow in the legend page navigation.  .
   */
  external dynamic get inactiveColor;
  external void set inactiveColor (dynamic a_inactiveColor);
  /**
   * Text styles for the legend page navigation.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class LegendTitle extends OptionsObject {
  external factory LegendTitle ();
  /**
   * Generic CSS styles for the legend title.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * A text or HTML string for the title.
   */
  external String get text;
  external void set text (String a_text);
}
@JS()
@anonymous
class Loading extends OptionsObject {
  external factory Loading ();
  /**
   * The duration in milliseconds of the fade out effect.
   */
  external num get hideDuration;
  external void set hideDuration (num a_hideDuration);
  /**
   * CSS styles for the loading label <code>span</code>.
   */
  external dynamic get labelStyle;
  external void set labelStyle (dynamic a_labelStyle);
  /**
   * The duration in milliseconds of the fade in effect.
   */
  external num get showDuration;
  external void set showDuration (num a_showDuration);
  /**
   * CSS styles for the loading screen that covers the plot area. Defaults to:
      <pre>style: {
      position: 'absolute',
      backgroundColor: 'white',
      opacity: 0.5,
      textAlign: 'center'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class Navigation extends OptionsObject {
  external factory Navigation ();
  /**
   * A collection of options for buttons appearing in the exporting module.
   */
  external NavigationButtonOptions get buttonOptions;
  external void set buttonOptions (NavigationButtonOptions a_buttonOptions);
  /**
   * CSS styles for the hover state of the individual items within the popup menu appearing by  default when the export icon is clicked. The menu items are rendered in HTML. Defaults to

      <pre>menuItemHoverStyle: {

      background: '#4572A5',

      color: '#FFFFFF'

      }</pre>
   */
  external dynamic get menuItemHoverStyle;
  external void set menuItemHoverStyle (dynamic a_menuItemHoverStyle);
  /**
   * CSS styles for the individual items within the popup menu appearing by  default when the export icon is clicked. The menu items are rendered in HTML. Defaults to

      <pre>menuItemStyle: {

      padding: '0 5px',

      background: NONE,

      color: '#303030'

      }</pre>
   */
  external dynamic get menuItemStyle;
  external void set menuItemStyle (dynamic a_menuItemStyle);
  /**
   * CSS styles for the popup menu appearing by default when the export icon is clicked. This menu is rendered in HTML. Defaults to

      <pre>menuStyle: {

      border: '1px solid #A0A0A0',

      background: '#FFFFFF'

      }</pre>
   */
  external dynamic get menuStyle;
  external void set menuStyle (dynamic a_menuStyle);
}
@JS()
@anonymous
class NavigationButtonOptions extends OptionsObject {
  external factory NavigationButtonOptions ();
  /**
   * Alignment for the buttons.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to enable buttons.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Pixel height of the buttons.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * Fill color for the symbol within the button.
   */
  external dynamic get symbolFill;
  external void set symbolFill (dynamic a_symbolFill);
  /**
   * The pixel size of the symbol on the button.
   */
  external num get symbolSize;
  external void set symbolSize (num a_symbolSize);
  /**
   * The color of the symbol's stroke or line.
   */
  external dynamic get symbolStroke;
  external void set symbolStroke (dynamic a_symbolStroke);
  /**
   * The pixel stroke width of the symbol on the button.
   */
  external num get symbolStrokeWidth;
  external void set symbolStrokeWidth (num a_symbolStrokeWidth);
  /**
   * The x position of the center of the symbol inside the button.
   */
  external num get symbolX;
  external void set symbolX (num a_symbolX);
  /**
   * The y position of the center of the symbol inside the button.
   */
  external num get symbolY;
  external void set symbolY (num a_symbolY);
  /**
   * A text string to add to the individual button.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * A configuration object for the button theme. The object accepts SVG properties like <code>stroke-width</code>, <code>stroke</code> and <code>fill</code>. Tri-state button styles are supported by the <code>states.hover</code> and <code>states.select</code> objects.
   */
  external JsObject get theme;
  external void set theme (JsObject a_theme);
  /**
   * The vertical alignment of the buttons. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The pixel width of the button.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The vertical offset of the button's position relative to its <code>verticalAlign</code>.			 .
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class Navigator extends OptionsObject {
  external factory Navigator ();
  /**
   * Whether the navigator and scrollbar should adapt to updated data in the base X axis. When loading data async, as in the demo below, this should be <code>false</code>. Otherwise new data will trigger navigator redraw, which will cause unwanted looping. In the demo below, the data in the navigator is set only once. On navigating, only the main chart content is updated.
   */
  external bool get adaptToUpdatedData;
  external void set adaptToUpdatedData (bool a_adaptToUpdatedData);
  /**
   * An integer identifying the index to use for the base series, or a string representing the id of the series.
   */
  external dynamic get baseSeries;
  external void set baseSeries (dynamic a_baseSeries);
  /**
   * Enable or disable the navigator.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the handles for dragging the zoomed area.
   */
  external JsObject get handles;
  external void set handles (JsObject a_handles);
  /**
   * The height of the navigator.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The distance from the nearest element, the X axis or X axis labels.
   */
  external num get margin;
  external void set margin (num a_margin);
  /**
   * The color of the mask covering the areas of the navigator series that are currently not visible in the main series. The default color is bluish with an opacity of 0.3 to see the series below.
   */
  external dynamic get maskFill;
  external void set maskFill (dynamic a_maskFill);
  /**
   * Whether the mask should be inside the range marking the zoomed range, or outside. In Highstock 1.x it was always <code>false</code>.
   */
  external bool get maskInside;
  external void set maskInside (bool a_maskInside);
  /**
   * The color of the line marking the currently zoomed area in the navigator.
   */
  external dynamic get outlineColor;
  external void set outlineColor (dynamic a_outlineColor);
  /**
   * The width of the line marking the currently zoomed area in the navigator.
   */
  external num get outlineWidth;
  external void set outlineWidth (num a_outlineWidth);
  /**
   * <p>Options for the navigator series. Available options are the same as any series, documented at <a class="internal" href="#plotOptions.series">plotOptions</a> and <a class="internal" href="#series">series</a>.</p>



      <p>Unless data is explicitly defined on navigator.series, the data is borrowed from the first series in the chart.</p>



      <p>Default series options for the navigator series are:</p>

      <pre>series: {

      type: 'areaspline',

      color: '#4572A7',

      fillOpacity: 0.05,

      dataGrouping: {

      smoothed: true

      },

      lineWidth: 1,

      marker: {

      enabled: false

      }

      }</pre>
   */
  external JsObject get series;
  external void set series (JsObject a_series);
  /**
   * Options for the navigator X axis. Available options are the same as any X axis, documented at <a class="internal" href="#xAxis">xAxis</a>. Default series options for the navigator xAxis are:

      <pre>xAxis: {

      tickWidth: 0,

      lineWidth: 0,

      gridLineWidth: 1,

      tickPixelInterval: 200,

      labels: {

      align: 'left',

      style: {

      color: '#888'

      },

      x: 3,

      y: -4

      }

      }</pre>
   */
  external JsObject get xAxis;
  external void set xAxis (JsObject a_xAxis);
  /**
   * Options for the navigator Y axis. Available options are the same as any y axis, documented at <a class="internal" href="#yAxis">yAxis</a>. Default series options for the navigator yAxis are:
      <pre>yAxis: {
      gridLineWidth: 0,
      startOnTick: false,
      endOnTick: false,
      minPadding: 0.1,
      maxPadding: 0.1,
      labels: {
      enabled: false
      },
      title: {
      text: null
      },
      tickWidth: 0
      }</pre>
   */
  external JsObject get yAxis;
  external void set yAxis (JsObject a_yAxis);
}
@JS()
@anonymous
class NavigatorHandles extends OptionsObject {
  external factory NavigatorHandles ();
  /**
   * The fill for the handle.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The stroke for the handle border and the stripes inside.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
}
@JS()
@anonymous
class PlotOptions extends OptionsObject {
  external factory PlotOptions ();
  /**
   * null
   */
  external PlotOptionsArea get area;
  external void set area (PlotOptionsArea a_area);
  /**
   * The area range is a cartesian series type with higher and lower Y values along an X axis. Requires <code>highcharts-more.js</code>.
   */
  external PlotOptionsArearange get arearange;
  external void set arearange (PlotOptionsArearange a_arearange);
  /**
   * null
   */
  external PlotOptionsAreaspline get areaspline;
  external void set areaspline (PlotOptionsAreaspline a_areaspline);
  /**
   * The area spline range is a cartesian series type with higher and lower Y values along an X axis. Requires <code>highcharts-more.js</code>.
   */
  external PlotOptionsAreasplinerange get areasplinerange;
  external void set areasplinerange (PlotOptionsAreasplinerange a_areasplinerange);
  /**
   *
   */
  external dynamic get candlestick;
  external void set candlestick (dynamic a_candlestick);
  /**
   * null
   */
  external PlotOptionsColumn get column;
  external void set column (PlotOptionsColumn a_column);
  /**
   * The column range is a cartesian series type with higher and lower Y values along an X axis. Requires <code>highcharts-more.js</code>. To display horizontal bars, set <a href="#chart.inverted">chart.inverted</a> to <code>true</code>.
   */
  external JsObject get columnrange;
  external void set columnrange (JsObject a_columnrange);
  /**
   *
   */
  external dynamic get flags;
  external void set flags (dynamic a_flags);
  /**
   * null
   */
  external PlotOptionsLine get line;
  external void set line (PlotOptionsLine a_line);
  /**
   *
   */
  external dynamic get ohlc;
  external void set ohlc (dynamic a_ohlc);
  /**
   * A polygon series can be used to draw any freeform shape in the cartesian coordinate system. A fill is applied with the <code>color</code> option, and stroke is applied through <code>lineWidth</code> and <code>lineColor</code> options. Requires the <code>highcharts-more.js</code> file.
   */
  external JsObject get polygon;
  external void set polygon (JsObject a_polygon);
  /**
   * null
   */
  external PlotOptionsScatter get scatter;
  external void set scatter (PlotOptionsScatter a_scatter);
  /**
   * <p>General options for all series types.</p>
   */
  external PlotOptionsSeries get series;
  external void set series (PlotOptionsSeries a_series);
  /**
   * null
   */
  external PlotOptionsSpline get spline;
  external void set spline (PlotOptionsSpline a_spline);
}
@JS()
@anonymous
class PlotOptionsArea extends OptionsObject {
  external factory PlotOptionsArea ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsAreaDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsAreaDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsAreaDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsAreaDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsAreaEvents get events;
  external void set events (PlotOptionsAreaEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsAreaMarker get marker;
  external void set marker (PlotOptionsAreaMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsAreaPoint get point;
  external void set point (PlotOptionsAreaPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The Y axis value to serve as the base for the area, for distinguishing between values above and below a threshold. If <code>null</code>, the area behaves like a line series with fill between the graph and the Y axis minimum.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsAreaDataGrouping extends OptionsObject {
  external factory PlotOptionsAreaDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsAreaDataLabels extends OptionsObject {
  external factory PlotOptionsAreaDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsAreaEvents extends OptionsObject {
  external factory PlotOptionsAreaEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsAreaMarker extends OptionsObject {
  external factory PlotOptionsAreaMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsAreaMarkerStates get states;
  external void set states (PlotOptionsAreaMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsAreaMarkerStates extends OptionsObject {
  external factory PlotOptionsAreaMarkerStates ();
  /**
   * null
   */
  external PlotOptionsAreaMarkerStatesHover get hover;
  external void set hover (PlotOptionsAreaMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsAreaMarkerStatesSelect get select;
  external void set select (PlotOptionsAreaMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsAreaMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsAreaMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsAreaMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsAreaMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsAreaPoint extends OptionsObject {
  external factory PlotOptionsAreaPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsAreaPointEvents get events;
  external void set events (PlotOptionsAreaPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsAreaPointEvents extends OptionsObject {
  external factory PlotOptionsAreaPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsAreaStates extends OptionsObject {
  external factory PlotOptionsAreaStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsAreaStatesHover get hover;
  external void set hover (PlotOptionsAreaStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsAreaStatesHover extends OptionsObject {
  external factory PlotOptionsAreaStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsAreaStatesHoverMarker get marker;
  external void set marker (PlotOptionsAreaStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsAreaStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsAreaStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsAreaStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsAreaStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsAreaTooltip extends OptionsObject {
  external factory PlotOptionsAreaTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsAreaZones extends OptionsObject {
  external factory PlotOptionsAreaZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsArearange extends OptionsObject {
  external factory PlotOptionsArearange ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsArearangeDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsArearangeDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsArearangeEvents get events;
  external void set events (PlotOptionsArearangeEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel width of the arearange graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * Properties for each single point
   */
  external PlotOptionsArearangePoint get point;
  external void set point (PlotOptionsArearangePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsArearangeDataGrouping extends OptionsObject {
  external factory PlotOptionsArearangeDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsArearangeDataLabels extends OptionsObject {
  external factory PlotOptionsArearangeDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsArearangeEvents extends OptionsObject {
  external factory PlotOptionsArearangeEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsArearangePoint extends OptionsObject {
  external factory PlotOptionsArearangePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsArearangePointEvents get events;
  external void set events (PlotOptionsArearangePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsArearangePointEvents extends OptionsObject {
  external factory PlotOptionsArearangePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsArearangeStates extends OptionsObject {
  external factory PlotOptionsArearangeStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsArearangeStatesHover get hover;
  external void set hover (PlotOptionsArearangeStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsArearangeStatesHover extends OptionsObject {
  external factory PlotOptionsArearangeStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsArearangeStatesHoverMarker get marker;
  external void set marker (PlotOptionsArearangeStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsArearangeStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsArearangeStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsArearangeStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsArearangeStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsArearangeTooltip extends OptionsObject {
  external factory PlotOptionsArearangeTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsArearangeZones extends OptionsObject {
  external factory PlotOptionsArearangeZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsAreaspline extends OptionsObject {
  external factory PlotOptionsAreaspline ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsAreasplineDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsAreasplineDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsAreasplineDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsAreasplineDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsAreasplineEvents get events;
  external void set events (PlotOptionsAreasplineEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsAreasplineMarker get marker;
  external void set marker (PlotOptionsAreasplineMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsAreasplinePoint get point;
  external void set point (PlotOptionsAreasplinePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The Y axis value to serve as the base for the area, for distinguishing between values above and below a threshold. If <code>null</code>, the area behaves like a line series with fill between the graph and the Y axis minimum.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsAreasplineDataGrouping extends OptionsObject {
  external factory PlotOptionsAreasplineDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsAreasplineDataLabels extends OptionsObject {
  external factory PlotOptionsAreasplineDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsAreasplineEvents extends OptionsObject {
  external factory PlotOptionsAreasplineEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsAreasplineMarker extends OptionsObject {
  external factory PlotOptionsAreasplineMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsAreasplineMarkerStates get states;
  external void set states (PlotOptionsAreasplineMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsAreasplineMarkerStates extends OptionsObject {
  external factory PlotOptionsAreasplineMarkerStates ();
  /**
   * null
   */
  external PlotOptionsAreasplineMarkerStatesHover get hover;
  external void set hover (PlotOptionsAreasplineMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsAreasplineMarkerStatesSelect get select;
  external void set select (PlotOptionsAreasplineMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsAreasplineMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsAreasplineMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsAreasplineMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsAreasplineMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsAreasplinePoint extends OptionsObject {
  external factory PlotOptionsAreasplinePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsAreasplinePointEvents get events;
  external void set events (PlotOptionsAreasplinePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsAreasplinePointEvents extends OptionsObject {
  external factory PlotOptionsAreasplinePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsAreasplineStates extends OptionsObject {
  external factory PlotOptionsAreasplineStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsAreasplineStatesHover get hover;
  external void set hover (PlotOptionsAreasplineStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsAreasplineStatesHover extends OptionsObject {
  external factory PlotOptionsAreasplineStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsAreasplineStatesHoverMarker get marker;
  external void set marker (PlotOptionsAreasplineStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsAreasplineStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsAreasplineStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsAreasplineStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsAreasplineStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsAreasplineTooltip extends OptionsObject {
  external factory PlotOptionsAreasplineTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsAreasplineZones extends OptionsObject {
  external factory PlotOptionsAreasplineZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsAreasplinerange extends OptionsObject {
  external factory PlotOptionsAreasplinerange ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsAreasplinerangeDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsAreasplinerangeDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsAreasplinerangeEvents get events;
  external void set events (PlotOptionsAreasplinerangeEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel width of the arearange graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * Properties for each single point
   */
  external PlotOptionsAreasplinerangePoint get point;
  external void set point (PlotOptionsAreasplinerangePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeDataGrouping extends OptionsObject {
  external factory PlotOptionsAreasplinerangeDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeDataLabels extends OptionsObject {
  external factory PlotOptionsAreasplinerangeDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeEvents extends OptionsObject {
  external factory PlotOptionsAreasplinerangeEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangePoint extends OptionsObject {
  external factory PlotOptionsAreasplinerangePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsAreasplinerangePointEvents get events;
  external void set events (PlotOptionsAreasplinerangePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangePointEvents extends OptionsObject {
  external factory PlotOptionsAreasplinerangePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeStates extends OptionsObject {
  external factory PlotOptionsAreasplinerangeStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsAreasplinerangeStatesHover get hover;
  external void set hover (PlotOptionsAreasplinerangeStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeStatesHover extends OptionsObject {
  external factory PlotOptionsAreasplinerangeStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsAreasplinerangeStatesHoverMarker get marker;
  external void set marker (PlotOptionsAreasplinerangeStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsAreasplinerangeStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsAreasplinerangeStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeTooltip extends OptionsObject {
  external factory PlotOptionsAreasplinerangeTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsAreasplinerangeZones extends OptionsObject {
  external factory PlotOptionsAreasplinerangeZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsCandlestick extends OptionsObject {
  external factory PlotOptionsCandlestick ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * null
   */
  external PlotOptionsCandlestickDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsCandlestickDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsCandlestickDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsCandlestickDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsCandlestickEvents get events;
  external void set events (PlotOptionsCandlestickEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The color of the line/border of the candlestick.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The pixel width of the candlestick line/border. Defaults to <code>1</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * Properties for each single point
   */
  external PlotOptionsCandlestickPoint get point;
  external void set point (PlotOptionsCandlestickPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The fill color of the candlestick when values are rising. Defaults to <code>"white"</code>.
   */
  external dynamic get upColor;
  external void set upColor (dynamic a_upColor);
  /**
   * The specific line color for up candle sticks. The default is to inherit the general <code>lineColor</code> setting.
   */
  external dynamic get upLineColor;
  external void set upLineColor (dynamic a_upLineColor);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsCandlestickDataGrouping extends OptionsObject {
  external factory PlotOptionsCandlestickDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsCandlestickDataLabels extends OptionsObject {
  external factory PlotOptionsCandlestickDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsCandlestickEvents extends OptionsObject {
  external factory PlotOptionsCandlestickEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsCandlestickPoint extends OptionsObject {
  external factory PlotOptionsCandlestickPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsCandlestickPointEvents get events;
  external void set events (PlotOptionsCandlestickPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsCandlestickPointEvents extends OptionsObject {
  external factory PlotOptionsCandlestickPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsCandlestickStates extends OptionsObject {
  external factory PlotOptionsCandlestickStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsCandlestickStatesHover get hover;
  external void set hover (PlotOptionsCandlestickStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsCandlestickStatesHover extends OptionsObject {
  external factory PlotOptionsCandlestickStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The pixel width of the line/border around the candlestick. Defaults to <code>2</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
}
@JS()
@anonymous
class PlotOptionsCandlestickStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsCandlestickStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsCandlestickTooltip extends OptionsObject {
  external factory PlotOptionsCandlestickTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsCandlestickZones extends OptionsObject {
  external factory PlotOptionsCandlestickZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsColumn extends OptionsObject {
  external factory PlotOptionsColumn ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The color of the border surrounding each column or bar.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the border surrounding each column or bar.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The width of the border surrounding each column or bar.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * null
   */
  external PlotOptionsColumnDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsColumnDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsColumnDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsColumnDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsColumnEvents get events;
  external void set events (PlotOptionsColumnEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * Properties for each single point
   */
  external PlotOptionsColumnPoint get point;
  external void set point (PlotOptionsColumnPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsColumnDataGrouping extends OptionsObject {
  external factory PlotOptionsColumnDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsColumnDataLabels extends OptionsObject {
  external factory PlotOptionsColumnDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsColumnEvents extends OptionsObject {
  external factory PlotOptionsColumnEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsColumnPoint extends OptionsObject {
  external factory PlotOptionsColumnPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsColumnPointEvents get events;
  external void set events (PlotOptionsColumnPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsColumnPointEvents extends OptionsObject {
  external factory PlotOptionsColumnPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsColumnStates extends OptionsObject {
  external factory PlotOptionsColumnStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsColumnStatesHover get hover;
  external void set hover (PlotOptionsColumnStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsColumnStatesHover extends OptionsObject {
  external factory PlotOptionsColumnStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
}
@JS()
@anonymous
class PlotOptionsColumnStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsColumnStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsColumnTooltip extends OptionsObject {
  external factory PlotOptionsColumnTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsColumnZones extends OptionsObject {
  external factory PlotOptionsColumnZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsColumnrange extends OptionsObject {
  external factory PlotOptionsColumnrange ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The color of the border surrounding each column or bar.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the border surrounding each column or bar.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The width of the border surrounding each column or bar.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * null
   */
  external PlotOptionsColumnrangeDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsColumnrangeDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsColumnrangeEvents get events;
  external void set events (PlotOptionsColumnrangeEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * Properties for each single point
   */
  external PlotOptionsColumnrangePoint get point;
  external void set point (PlotOptionsColumnrangePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsColumnrangeDataGrouping extends OptionsObject {
  external factory PlotOptionsColumnrangeDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsColumnrangeDataLabels extends OptionsObject {
  external factory PlotOptionsColumnrangeDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsColumnrangeEvents extends OptionsObject {
  external factory PlotOptionsColumnrangeEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsColumnrangePoint extends OptionsObject {
  external factory PlotOptionsColumnrangePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsColumnrangePointEvents get events;
  external void set events (PlotOptionsColumnrangePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsColumnrangePointEvents extends OptionsObject {
  external factory PlotOptionsColumnrangePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsColumnrangeStates extends OptionsObject {
  external factory PlotOptionsColumnrangeStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsColumnrangeStatesHover get hover;
  external void set hover (PlotOptionsColumnrangeStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsColumnrangeStatesHover extends OptionsObject {
  external factory PlotOptionsColumnrangeStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
}
@JS()
@anonymous
class PlotOptionsColumnrangeStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsColumnrangeStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsColumnrangeTooltip extends OptionsObject {
  external factory PlotOptionsColumnrangeTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsColumnrangeZones extends OptionsObject {
  external factory PlotOptionsColumnrangeZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsFlags extends OptionsObject {
  external factory PlotOptionsFlags ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * null
   */
  external PlotOptionsFlagsDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsFlagsDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsFlagsEvents get events;
  external void set events (PlotOptionsFlagsEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The color of the line/border of the flag. Defaults to <code>"black"</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The pixel width of the candlestick line/border. Defaults to <code>1</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * In case the flag is placed on a series, on what point key to place it. Line and columns have one key, <code>y</code>. In range or OHLC-type series, however, the flag can optionally be placed on the <code>open</code>, <code>high</code>, <code>low</code> or <code>close</code> key.
   */
  external String get onKey;
  external void set onKey (String a_onKey);
  /**
   * The id of the series that the flags should be drawn on. If no id is given, the flags are drawn on the x axis.
   */
  external String get onSeries;
  external void set onSeries (String a_onSeries);
  /**
   * Properties for each single point
   */
  external PlotOptionsFlagsPoint get point;
  external void set point (PlotOptionsFlagsPoint a_point);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The shape of the marker. Can be one of "flag", "circlepin", "squarepin", or an image on the format <code>url(/path-to-image.jpg)</code>. Individual shapes can also be set for each point.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * When multiple flags in the same series fall on the same value, this number determines the vertical
      offset between them.
   */
  external num get stackDistance;
  external void set stackDistance (num a_stackDistance);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The text styles of the flag. Defaults to:
      <pre>style: {
      fontSize: '11px',
      fontWeight: 'bold',
      textAlign: 'center'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * The text to display on each flag. This can be defined on series level, or  individually for each point. Defaults to <code>"A"</code>.
   */
  external dynamic get title;
  external void set title (dynamic a_title);
  /**
   * Specific tooltip options for flag series. Flag series tooltips are different from most other types in that a flag doesn't have a data value, so the tooltip rather displays the <code>text</code> option for each point.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether to use HTML to render the flag texts. Using HTML allows for advanced formatting, images and reliable bi-directional text rendering. Note that exported images won't respect the HTML, and that HTML won't respect Z-index settings.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * The y position of the top left corner of the flag relative to either the series (if onSeries is defined), or the x axis. Defaults to <code>-30</code>.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsFlagsDataLabels extends OptionsObject {
  external factory PlotOptionsFlagsDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsFlagsEvents extends OptionsObject {
  external factory PlotOptionsFlagsEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsFlagsPoint extends OptionsObject {
  external factory PlotOptionsFlagsPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsFlagsPointEvents get events;
  external void set events (PlotOptionsFlagsPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsFlagsPointEvents extends OptionsObject {
  external factory PlotOptionsFlagsPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsFlagsStates extends OptionsObject {
  external factory PlotOptionsFlagsStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsFlagsStatesHover get hover;
  external void set hover (PlotOptionsFlagsStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsFlagsStatesHover extends OptionsObject {
  external factory PlotOptionsFlagsStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill or background color of the flag Defaults to <code>"#FCFFC5"</code>.
   */
  external String get fillColor;
  external void set fillColor (String a_fillColor);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The color of the line/border of the flag Defaults to <code>"black"</code>.
   */
  external String get lineColor;
  external void set lineColor (String a_lineColor);
}
@JS()
@anonymous
class PlotOptionsFlagsStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsFlagsStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsFlagsTooltip extends OptionsObject {
  external factory PlotOptionsFlagsTooltip ();
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsFlagsZones extends OptionsObject {
  external factory PlotOptionsFlagsZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsLine extends OptionsObject {
  external factory PlotOptionsLine ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsLineDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsLineDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsLineDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsLineDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsLineEvents get events;
  external void set events (PlotOptionsLineEvents a_events);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The SVG value used for the <code>stroke-linecap</code> and <code>stroke-linejoin</code> of a line graph. Round means that lines are rounded in the ends and bends.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsLineMarker get marker;
  external void set marker (PlotOptionsLineMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsLinePoint get point;
  external void set point (PlotOptionsLinePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsLineDataGrouping extends OptionsObject {
  external factory PlotOptionsLineDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsLineDataLabels extends OptionsObject {
  external factory PlotOptionsLineDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsLineEvents extends OptionsObject {
  external factory PlotOptionsLineEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsLineMarker extends OptionsObject {
  external factory PlotOptionsLineMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsLineMarkerStates get states;
  external void set states (PlotOptionsLineMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsLineMarkerStates extends OptionsObject {
  external factory PlotOptionsLineMarkerStates ();
  /**
   * null
   */
  external PlotOptionsLineMarkerStatesHover get hover;
  external void set hover (PlotOptionsLineMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsLineMarkerStatesSelect get select;
  external void set select (PlotOptionsLineMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsLineMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsLineMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsLineMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsLineMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsLinePoint extends OptionsObject {
  external factory PlotOptionsLinePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsLinePointEvents get events;
  external void set events (PlotOptionsLinePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsLinePointEvents extends OptionsObject {
  external factory PlotOptionsLinePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsLineStates extends OptionsObject {
  external factory PlotOptionsLineStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsLineStatesHover get hover;
  external void set hover (PlotOptionsLineStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsLineStatesHover extends OptionsObject {
  external factory PlotOptionsLineStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsLineStatesHoverMarker get marker;
  external void set marker (PlotOptionsLineStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsLineStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsLineStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsLineStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsLineStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsLineTooltip extends OptionsObject {
  external factory PlotOptionsLineTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsLineZones extends OptionsObject {
  external factory PlotOptionsLineZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsOhlc extends OptionsObject {
  external factory PlotOptionsOhlc ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * null
   */
  external PlotOptionsOhlcDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsOhlcDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsOhlcDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsOhlcDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsOhlcEvents get events;
  external void set events (PlotOptionsOhlcEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The pixel width of the line/border. Defaults to <code>1</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * Properties for each single point
   */
  external PlotOptionsOhlcPoint get point;
  external void set point (PlotOptionsOhlcPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsOhlcDataGrouping extends OptionsObject {
  external factory PlotOptionsOhlcDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsOhlcDataLabels extends OptionsObject {
  external factory PlotOptionsOhlcDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsOhlcEvents extends OptionsObject {
  external factory PlotOptionsOhlcEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsOhlcPoint extends OptionsObject {
  external factory PlotOptionsOhlcPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsOhlcPointEvents get events;
  external void set events (PlotOptionsOhlcPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsOhlcPointEvents extends OptionsObject {
  external factory PlotOptionsOhlcPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsOhlcStates extends OptionsObject {
  external factory PlotOptionsOhlcStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsOhlcStatesHover get hover;
  external void set hover (PlotOptionsOhlcStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsOhlcStatesHover extends OptionsObject {
  external factory PlotOptionsOhlcStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The pixel width of the line representing the OHLC point. Defaults to <code>3</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
}
@JS()
@anonymous
class PlotOptionsOhlcStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsOhlcStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsOhlcTooltip extends OptionsObject {
  external factory PlotOptionsOhlcTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsOhlcZones extends OptionsObject {
  external factory PlotOptionsOhlcZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsPolygon extends OptionsObject {
  external factory PlotOptionsPolygon ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsPolygonDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsPolygonDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsPolygonDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsPolygonDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsPolygonEvents get events;
  external void set events (PlotOptionsPolygonEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsPolygonMarker get marker;
  external void set marker (PlotOptionsPolygonMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsPolygonPoint get point;
  external void set point (PlotOptionsPolygonPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip. When <code>stickyTracking</code> is false and <code>tooltip.shared</code> is false, the
      tooltip will be hidden when moving the mouse between series.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a class="internal">#tooltip</a>. Overridable properties are <code>headerFormat</code>, <code>pointFormat</code>, <code>yDecimals</code>, <code>xDateFormat</code>, <code>yPrefix</code> and <code>ySuffix</code>.  Unlike other series, in a scatter plot the series.name by default shows in the headerFormat  and poin.x and point.y in the pointFormat.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsPolygonDataGrouping extends OptionsObject {
  external factory PlotOptionsPolygonDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsPolygonDataLabels extends OptionsObject {
  external factory PlotOptionsPolygonDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsPolygonEvents extends OptionsObject {
  external factory PlotOptionsPolygonEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsPolygonMarker extends OptionsObject {
  external factory PlotOptionsPolygonMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsPolygonMarkerStates get states;
  external void set states (PlotOptionsPolygonMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsPolygonMarkerStates extends OptionsObject {
  external factory PlotOptionsPolygonMarkerStates ();
  /**
   * null
   */
  external PlotOptionsPolygonMarkerStatesHover get hover;
  external void set hover (PlotOptionsPolygonMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsPolygonMarkerStatesSelect get select;
  external void set select (PlotOptionsPolygonMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsPolygonMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsPolygonMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsPolygonMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsPolygonMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsPolygonPoint extends OptionsObject {
  external factory PlotOptionsPolygonPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsPolygonPointEvents get events;
  external void set events (PlotOptionsPolygonPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsPolygonPointEvents extends OptionsObject {
  external factory PlotOptionsPolygonPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsPolygonStates extends OptionsObject {
  external factory PlotOptionsPolygonStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsPolygonStatesHover get hover;
  external void set hover (PlotOptionsPolygonStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsPolygonStatesHover extends OptionsObject {
  external factory PlotOptionsPolygonStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsPolygonStatesHoverMarker get marker;
  external void set marker (PlotOptionsPolygonStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsPolygonStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsPolygonStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsPolygonStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsPolygonStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsPolygonZones extends OptionsObject {
  external factory PlotOptionsPolygonZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsScatter extends OptionsObject {
  external factory PlotOptionsScatter ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsScatterDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsScatterDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsScatterDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsScatterDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsScatterEvents get events;
  external void set events (PlotOptionsScatterEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsScatterMarker get marker;
  external void set marker (PlotOptionsScatterMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsScatterPoint get point;
  external void set point (PlotOptionsScatterPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip. When <code>stickyTracking</code> is false and <code>tooltip.shared</code> is false, the
      tooltip will be hidden when moving the mouse between series.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a class="internal">#tooltip</a>. Overridable properties are <code>headerFormat</code>, <code>pointFormat</code>, <code>yDecimals</code>, <code>xDateFormat</code>, <code>yPrefix</code> and <code>ySuffix</code>.  Unlike other series, in a scatter plot the series.name by default shows in the headerFormat  and poin.x and point.y in the pointFormat.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsScatterDataGrouping extends OptionsObject {
  external factory PlotOptionsScatterDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsScatterDataLabels extends OptionsObject {
  external factory PlotOptionsScatterDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsScatterEvents extends OptionsObject {
  external factory PlotOptionsScatterEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsScatterMarker extends OptionsObject {
  external factory PlotOptionsScatterMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsScatterMarkerStates get states;
  external void set states (PlotOptionsScatterMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsScatterMarkerStates extends OptionsObject {
  external factory PlotOptionsScatterMarkerStates ();
  /**
   * null
   */
  external PlotOptionsScatterMarkerStatesHover get hover;
  external void set hover (PlotOptionsScatterMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsScatterMarkerStatesSelect get select;
  external void set select (PlotOptionsScatterMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsScatterMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsScatterMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsScatterMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsScatterMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsScatterPoint extends OptionsObject {
  external factory PlotOptionsScatterPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsScatterPointEvents get events;
  external void set events (PlotOptionsScatterPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsScatterPointEvents extends OptionsObject {
  external factory PlotOptionsScatterPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsScatterStates extends OptionsObject {
  external factory PlotOptionsScatterStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsScatterStatesHover get hover;
  external void set hover (PlotOptionsScatterStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsScatterStatesHover extends OptionsObject {
  external factory PlotOptionsScatterStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsScatterStatesHoverMarker get marker;
  external void set marker (PlotOptionsScatterStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsScatterStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsScatterStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsScatterStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsScatterStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsScatterZones extends OptionsObject {
  external factory PlotOptionsScatterZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsSeries extends Series {
  external factory PlotOptionsSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsSeriesDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsSeriesEvents get events;
  external void set events (PlotOptionsSeriesEvents a_events);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsSeriesMarker get marker;
  external void set marker (PlotOptionsSeriesMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsSeriesPoint get point;
  external void set point (PlotOptionsSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsSeriesDataGrouping extends OptionsObject {
  external factory PlotOptionsSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsSeriesDataLabels extends OptionsObject {
  external factory PlotOptionsSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsSeriesEvents extends OptionsObject {
  external factory PlotOptionsSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsSeriesMarker extends OptionsObject {
  external factory PlotOptionsSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsSeriesMarkerStates get states;
  external void set states (PlotOptionsSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsSeriesMarkerStates extends OptionsObject {
  external factory PlotOptionsSeriesMarkerStates ();
  /**
   * null
   */
  external PlotOptionsSeriesMarkerStatesHover get hover;
  external void set hover (PlotOptionsSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsSeriesMarkerStatesSelect get select;
  external void set select (PlotOptionsSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsSeriesMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsSeriesMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsSeriesPoint extends OptionsObject {
  external factory PlotOptionsSeriesPoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsSeriesPointEvents get events;
  external void set events (PlotOptionsSeriesPointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsSeriesPointEvents extends OptionsObject {
  external factory PlotOptionsSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsSeriesStates extends OptionsObject {
  external factory PlotOptionsSeriesStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsSeriesStatesHover get hover;
  external void set hover (PlotOptionsSeriesStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsSeriesStatesHover extends OptionsObject {
  external factory PlotOptionsSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsSeriesStatesHoverMarker get marker;
  external void set marker (PlotOptionsSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsSeriesStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsSeriesStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsSeriesTooltip extends OptionsObject {
  external factory PlotOptionsSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsSeriesZones extends OptionsObject {
  external factory PlotOptionsSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PlotOptionsSpline extends OptionsObject {
  external factory PlotOptionsSpline ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PlotOptionsSplineDataGrouping get dataGrouping;
  external void set dataGrouping (PlotOptionsSplineDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PlotOptionsSplineDataLabels get dataLabels;
  external void set dataLabels (PlotOptionsSplineDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PlotOptionsSplineEvents get events;
  external void set events (PlotOptionsSplineEvents a_events);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series within the legend.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PlotOptionsSplineMarker get marker;
  external void set marker (PlotOptionsSplineMarker a_marker);
  /**
   * Properties for each single point
   */
  external PlotOptionsSplinePoint get point;
  external void set point (PlotOptionsSplinePoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PlotOptionsSplineDataGrouping extends OptionsObject {
  external factory PlotOptionsSplineDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PlotOptionsSplineDataLabels extends OptionsObject {
  external factory PlotOptionsSplineDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PlotOptionsSplineEvents extends OptionsObject {
  external factory PlotOptionsSplineEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PlotOptionsSplineMarker extends OptionsObject {
  external factory PlotOptionsSplineMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PlotOptionsSplineMarkerStates get states;
  external void set states (PlotOptionsSplineMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsSplineMarkerStates extends OptionsObject {
  external factory PlotOptionsSplineMarkerStates ();
  /**
   * null
   */
  external PlotOptionsSplineMarkerStatesHover get hover;
  external void set hover (PlotOptionsSplineMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PlotOptionsSplineMarkerStatesSelect get select;
  external void set select (PlotOptionsSplineMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PlotOptionsSplineMarkerStatesHover extends OptionsObject {
  external factory PlotOptionsSplineMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PlotOptionsSplineMarkerStatesSelect extends OptionsObject {
  external factory PlotOptionsSplineMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PlotOptionsSplinePoint extends OptionsObject {
  external factory PlotOptionsSplinePoint ();
  /**
   * Events for each single point
   */
  external PlotOptionsSplinePointEvents get events;
  external void set events (PlotOptionsSplinePointEvents a_events);
}
@JS()
@anonymous
class PlotOptionsSplinePointEvents extends OptionsObject {
  external factory PlotOptionsSplinePointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PlotOptionsSplineStates extends OptionsObject {
  external factory PlotOptionsSplineStates ();
  /**
   * Options for the hovered series
   */
  external PlotOptionsSplineStatesHover get hover;
  external void set hover (PlotOptionsSplineStatesHover a_hover);
}
@JS()
@anonymous
class PlotOptionsSplineStatesHover extends OptionsObject {
  external factory PlotOptionsSplineStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PlotOptionsSplineStatesHoverMarker get marker;
  external void set marker (PlotOptionsSplineStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PlotOptionsSplineStatesHoverHalo extends OptionsObject {
  external factory PlotOptionsSplineStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PlotOptionsSplineStatesHoverMarker extends OptionsObject {
  external factory PlotOptionsSplineStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PlotOptionsSplineTooltip extends OptionsObject {
  external factory PlotOptionsSplineTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class PlotOptionsSplineZones extends OptionsObject {
  external factory PlotOptionsSplineZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class RangeSelector extends OptionsObject {
  external factory RangeSelector ();
  /**
   * Whether to enable all buttons from the start. By default buttons are only enabled if the corresponding time range exists on the X axis, but enabling all buttons allows for dynamically loading different time ranges.
   */
  external bool get allButtonsEnabled;
  external void set allButtonsEnabled (bool a_allButtonsEnabled);
  /**
   * The space in pixels between the buttons in the range selector.
   */
  external num get buttonSpacing;
  external void set buttonSpacing (num a_buttonSpacing);
  /**
   * <p>A collection of attributes for the buttons. The object takes SVG attributes like <code>fill</code>, <code>stroke</code>, <code>stroke-width</code>, as well as <code>style</code>, a collection of CSS properties for the text.</p>



      <p>The object can also be extended with states, so you can set presentational options for <code>hover</code>, <code>select</code> or <code>disabled</code> button states.</p>
   */
  external JsObject get buttonTheme;
  external void set buttonTheme (JsObject a_buttonTheme);
  /**
   * An array of configuration objects for the buttons. The individual options for each item are:



      <dl>

      <dt><code>type</code></dt>

      <dd>Defines the timespan, can be one of 'millisecond', 'second', 'minute', 'day', 'week',  		'month', 'ytd' (year to date), 'year' and 'all'.</dd>



      <dt><code>count</code></dt>

      <dd>Defines how many units of the defined type to use.</dd>



      <dt><code>dataGrouping</code></dt>

      <dd>A custom data grouping definition for the button.</dd>



      <dt><code>text</code></dt>

      <dd>The text for the button itself</dd>



      </dl>





      Defaults to

      <pre>buttons: [{

      type: 'month',

      count: 1,

      text: '1m'

      }, {

      type: 'month',

      count: 3,

      text: '3m'

      }, {

      type: 'month',

      count: 6,

      text: '6m'

      }, {

      type: 'ytd',

      text: 'YTD'

      }, {

      type: 'year',

      count: 1,

      text: '1y'

      }, {

      type: 'all',

      text: 'All'

      }]</pre>
   */
  external List get buttons;
  external void set buttons (List a_buttons);
  /**
   * Enable or disable the range selector.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The height of the range selector, used to reserve space for buttons and input.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The border color of the date input boxes.
   */
  external dynamic get inputBoxBorderColor;
  external void set inputBoxBorderColor (dynamic a_inputBoxBorderColor);
  /**
   * The pixel height of the date input boxes.
   */
  external num get inputBoxHeight;
  external void set inputBoxHeight (num a_inputBoxHeight);
  /**
   * CSS for the container DIV holding the input boxes. Deprecated as of 1.2.5. Use <a href="#rangeSelector.inputPosition">inputPosition</a> instead.
   */
  @deprecated
  external dynamic get inputBoxStyle;
  @deprecated
  external void set inputBoxStyle (dynamic a_inputBoxStyle);
  /**
   * The pixel width of the date input boxes.
   */
  external num get inputBoxWidth;
  external void set inputBoxWidth (num a_inputBoxWidth);
  /**
   * The date format in the input boxes when not selected for editing.

      Defaults to <code>%b %e, %Y</code>.
   */
  external String get inputDateFormat;
  external void set inputDateFormat (String a_inputDateFormat);
  /**
   * A custom callback function to parse values entered in the input boxes and return a valid JavaScript time as milliseconds since 1970.
   */
  external Function get inputDateParser;
  external void set inputDateParser (Function a_inputDateParser);
  /**
   * The date format in the input boxes when they are selected for editing. This must be a format that
      is recognized by JavaScript Date.parse.
   */
  external String get inputEditDateFormat;
  external void set inputEditDateFormat (String a_inputEditDateFormat);
  /**
   * Enable or disable the date input boxes. Defaults to enabled when there is enough space, disabled if not (typically mobile).
   */
  external bool get inputEnabled;
  external void set inputEnabled (bool a_inputEnabled);
  /**
   * Positioning for the input boxes. Allowed properties are <code>align</code>, <code>verticalAlign</code>, <code>x</code> and <code>y</code>.
   */
  external JsObject get inputPosition;
  external void set inputPosition (JsObject a_inputPosition);
  /**
   * CSS for the HTML inputs in the range selector.
   */
  external dynamic get inputStyle;
  external void set inputStyle (dynamic a_inputStyle);
  /**
   * CSS styles for the labels - the Zoom, From and To texts.
   */
  external dynamic get labelStyle;
  external void set labelStyle (dynamic a_labelStyle);
  /**
   * The index of the button to appear pre-selected.
   */
  external num get selected;
  external void set selected (num a_selected);
}
@JS()
@anonymous
class Scrollbar extends OptionsObject {
  external factory Scrollbar ();
  /**
   * The background color of the scrollbar itself.
   */
  external dynamic get barBackgroundColor;
  external void set barBackgroundColor (dynamic a_barBackgroundColor);
  /**
   * The color of the scrollbar's border.
   */
  external dynamic get barBorderColor;
  external void set barBorderColor (dynamic a_barBorderColor);
  /**
   * The border rounding radius of the bar.
   */
  external num get barBorderRadius;
  external void set barBorderRadius (num a_barBorderRadius);
  /**
   * The width of the bar's border.
   */
  external num get barBorderWidth;
  external void set barBorderWidth (num a_barBorderWidth);
  /**
   * The color of the small arrow inside the scrollbar buttons.
   */
  external dynamic get buttonArrowColor;
  external void set buttonArrowColor (dynamic a_buttonArrowColor);
  /**
   * The color of scrollbar buttons.
   */
  external dynamic get buttonBackgroundColor;
  external void set buttonBackgroundColor (dynamic a_buttonBackgroundColor);
  /**
   * The color of the border of the scrollbar buttons.
   */
  external dynamic get buttonBorderColor;
  external void set buttonBorderColor (dynamic a_buttonBorderColor);
  /**
   * The corner radius of the scrollbar buttons.
   */
  external num get buttonBorderRadius;
  external void set buttonBorderRadius (num a_buttonBorderRadius);
  /**
   * The border width of the scrollbar buttons.
   */
  external num get buttonBorderWidth;
  external void set buttonBorderWidth (num a_buttonBorderWidth);
  /**
   * Enable or disable the scrollbar.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The height of the scrollbar. The height also applies to the width of the scroll arrows so that they are always squares. Defaults to 20 for touch devices and 14 for mouse devices.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * Whether to redraw the main chart as the scrollbar or the navigator zoomed window is moved. Defaults to <code>true</code> for modern browsers and <code>false</code> for legacy IE browsers as well as mobile devices.
   */
  external bool get liveRedraw;
  external void set liveRedraw (bool a_liveRedraw);
  /**
   * The minimum width of the scrollbar.
   */
  external num get minWidth;
  external void set minWidth (num a_minWidth);
  /**
   * The color of the small rifles in the middle of the scrollbar.
   */
  external dynamic get rifleColor;
  external void set rifleColor (dynamic a_rifleColor);
  /**
   * The color of the track background.
   */
  external dynamic get trackBackgroundColor;
  external void set trackBackgroundColor (dynamic a_trackBackgroundColor);
  /**
   * The color of the border of the scrollbar track.
   */
  external dynamic get trackBorderColor;
  external void set trackBorderColor (dynamic a_trackBorderColor);
  /**
   * The corner radius of the border of the scrollbar track.
   */
  external num get trackBorderRadius;
  external void set trackBorderRadius (num a_trackBorderRadius);
  /**
   * The width of the border of the scrollbar track.
   */
  external dynamic get trackBorderWidth;
  external void set trackBorderWidth (dynamic a_trackBorderWidth);
}
@JS()
@anonymous
class Series extends PlotOptions {
  external factory Series ();
  /**
   * An array of data points for the series. The series object is expecting the points to be ordered from low to high.

      The reason for this is to increase performance. While in many cases the data is fetched from a server, it's also more convenient to sort on the server and thereby save on client resources.



      The points can be given in three ways:

      <ol>

      <li>A list of numerical values. In this case, the numerical values will be interpreted as y values, and x values will be automatically calculated, either starting at 0 and incrementing by 1, or from <code>pointStart</code> and <code>pointInterval</code> given in the plotOptions. This option is not available for series types with more than one value per point, like area range or OHLC. Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>A list of arrays with two values. In this case, the first value is the

      x value and the second is the y value. If the first value is a string, it is

      applied as the name of the point, and the x value is incremented following

      the above rules.</p> <p>For series with more than one value per point, like range or OHLC, the arrays will be interpreted as <code>[x, low, high]</code> or <code>[x, open, high, low, close]</code>. In these cases, the X value can be skipped altogether to make use of <code>pointStart</code> and <code>pointRange</code>.</p>



      Example:

      <pre>data: [[5, 2], [6, 3], [8, 2]]</pre></li>





      <li><p>A list of object with named values. In this case the objects are	point configuration objects as seen under <a href="#point">options.point</a>.</p>



      <p>Range series values are given by <code>low</code> and <code>high</code>, while candlestick/OHLC values are given by <code>open</code>, <code>high</code>, <code>low</code>, <code>close</code>.</p>



      Example:

      <pre>data: [{

      name: 'Point 1',

      color: '#00FF00',

      y: 0

      }, {

      name: 'Point 2',

      color: '#FF00FF',

      y: 5

      }]</pre></li>

      </ol>

      <p>

      In turbo mode, when working with series longer than <a class="internal" href="#plotOptions.series.turboThreshold">

      turboThreshold</a> (1000 points by default), only one- or two dimensional arrays of numbers are allowed. The

      first value is tested, and we assume that all the rest are defined the same

      way.</p>



      <p>Note data must be sorted by X in order for the tooltip positioning and data grouping to work.</p>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * options: Number|Array|Object<br>The point options. If options is a single number, a point with that y value is appended to the series. If it is an array, it will be interpreted as x and y values respectively, or in the case of OHLC or candlestick, as <code>[x, open, high, low, close]</code>. If it is an object, advanced options as outlined under <a class="internal" href="#series.data">series.data</a> are applied.||

      redraw: Boolean<br>Defaults to <code>true</code>. Whether to redraw the chart after the point is added. When adding more than one point, it is highly recommended that the <code>redraw</code> option be set to false, and instead <code>chart.redraw()</code> is explicitly called after the adding of points is finished.||shift: Boolean<br>Defaults to <code>false</code>. When shift is true, one point is shifted off the start of the series as one is appended to the end. Use this option for live charts monitoring a value over time.||animation: Mixed<br>Defaults to true. When true, the graph will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void addPoint ( dynamic options, bool redraw, bool shift, dynamic animation);
  /**
   * null
   */
  external void hide ();
  /**
   * redraw: Boolean<br>Defaults to <code>true</code>. Whether to redraw the chart after the series is removed.If doing more operations on the chart, it is a good idea to set redraw to false and call <code>chart.redraw()</code> after.
   */
  external void remove ( bool redraw);
  /**
   * index: Number<br>The index of the point in the data array.||

      redraw: Boolean<br>Defaults to <code>true</code>. Whether to redraw the chart after the point is added. When adding more than one point, it is highly recommended that the <code>redraw</code> option be set to false, and instead <code>chart.redraw()</code> is explicitly called after the adding of points is finished.||

      animation: Mixed<br>Defaults to true. When true, the graph will be animated with default animation options. The animation can also be a configuration object with properties <code>duration</code> and <code>easing</code>.
   */
  external void removePoint ( dynamic index, bool redraw, dynamic animation);
  /**
   * selected: Boolean|null<br>When <code>true</code>, the series is selected. When <code>false</code> it is unselected. When <code>null</code> or <code>undefined</code>, the series' selection state is toggled.
   */
  external void select ( bool selected_or_null);
  /**
   * compare: String<br>

      Can be one of <code>null</code>, <code>"percent"</code> or <code>"value"</code>.
   */
  external void setCompare ( String compare);
  /**
   * data: Array&lt;Number&gt;|Array&lt;Array&gt;|Array&lt;Object&gt;<br>Takes an array of data in the same format as described under <code>series&lt;type&gt;data</code> for the given series type.||



      redraw: Boolean<br>Defaults to <code>true</code>. Whether to redraw the chart after the series is altered.If doing more operations on the chart, it is a good idea to set redraw to false and call <code>chart.redraw()</code> after.||



      animation: Mixed<br>When the updated data is the same length as the existing data, points will be updated by default, and animation visualizes how the points are changed. Set false to disable animation, or a configuration object to set duration or easing.||



      updatePoints: Boolean<br>When the updated data is the same length as the existing data, points will be updated instead of replace. This option prevents this, and makes setData behave like it did prior to Highstock 1.3.10.
   */
  external void setData ( dynamic data, bool redraw, dynamic animation, bool updatePoints);
  /**
   * visible: Boolean<br>Whether to show or hide the series. If undefined, the visibility is toggled.||redraw: Boolean<br>Defaults to <code>true</code>. Whether to redraw the chart after the series is altered.If doing more operations on the chart, it is a good idea to set redraw to false and call <code>chart.redraw()</code> after.
   */
  external void setVisible ( bool visible, bool redraw);
  /**
   * null
   */
  external void show ();
  /**
   * options: Boolean<br>

      New options that will be merged into the series' existing options.



      ||



      redraw: Boolean<br>

      Defaults to <code>true</code>. Whether to redraw the chart after the series is altered. If doing more operations on the chart, it is a good idea to set redraw to false and call <code>chart.redraw()</code> after.
   */
  external void update ( dynamic options, bool redraw);
}
@JS()
@anonymous
class SeriesData extends OptionsObject {
  external factory SeriesData ();
}
@JS()
@anonymous
class AreaSeries extends Series {
  external factory AreaSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>area</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 1],
      [1, 9],
      [2, 1]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<area>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 3,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 0,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external AreaSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (AreaSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external AreaSeriesDataLabels get dataLabels;
  external void set dataLabels (AreaSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external AreaSeriesEvents get events;
  external void set events (AreaSeriesEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external AreaSeriesMarker get marker;
  external void set marker (AreaSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external AreaSeriesPoint get point;
  external void set point (AreaSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The Y axis value to serve as the base for the area, for distinguishing between values above and below a threshold. If <code>null</code>, the area behaves like a line series with fill between the graph and the Y axis minimum.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class AreaSeriesData extends OptionsObject {
  external factory AreaSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external AreaSeriesDataEvents get events;
  external void set events (AreaSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external AreaSeriesDataMarker get marker;
  external void set marker (AreaSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class AreaSeriesDataEvents extends OptionsObject {
  external factory AreaSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreaSeriesDataMarker extends OptionsObject {
  external factory AreaSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external AreaSeriesDataMarkerStates get states;
  external void set states (AreaSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreaSeriesDataMarkerStates extends OptionsObject {
  external factory AreaSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external AreaSeriesDataMarkerStatesHover get hover;
  external void set hover (AreaSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class AreaSeriesDataMarkerStatesHover extends OptionsObject {
  external factory AreaSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external AreaSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (AreaSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class AreaSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory AreaSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class AreaSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory AreaSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreaSeriesDataGrouping extends OptionsObject {
  external factory AreaSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class AreaSeriesDataLabels extends OptionsObject {
  external factory AreaSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class AreaSeriesEvents extends OptionsObject {
  external factory AreaSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class AreaSeriesMarker extends OptionsObject {
  external factory AreaSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external AreaSeriesMarkerStates get states;
  external void set states (AreaSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreaSeriesMarkerStates extends OptionsObject {
  external factory AreaSeriesMarkerStates ();
  /**
   * null
   */
  external AreaSeriesMarkerStatesHover get hover;
  external void set hover (AreaSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external AreaSeriesMarkerStatesSelect get select;
  external void set select (AreaSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class AreaSeriesMarkerStatesHover extends OptionsObject {
  external factory AreaSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class AreaSeriesMarkerStatesSelect extends OptionsObject {
  external factory AreaSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class AreaSeriesPoint extends OptionsObject {
  external factory AreaSeriesPoint ();
  /**
   * Events for each single point
   */
  external AreaSeriesPointEvents get events;
  external void set events (AreaSeriesPointEvents a_events);
}
@JS()
@anonymous
class AreaSeriesPointEvents extends OptionsObject {
  external factory AreaSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreaSeriesStates extends OptionsObject {
  external factory AreaSeriesStates ();
  /**
   * Options for the hovered series
   */
  external AreaSeriesStatesHover get hover;
  external void set hover (AreaSeriesStatesHover a_hover);
}
@JS()
@anonymous
class AreaSeriesStatesHover extends OptionsObject {
  external factory AreaSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external AreaSeriesStatesHoverMarker get marker;
  external void set marker (AreaSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class AreaSeriesStatesHoverHalo extends OptionsObject {
  external factory AreaSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class AreaSeriesStatesHoverMarker extends OptionsObject {
  external factory AreaSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreaSeriesTooltip extends OptionsObject {
  external factory AreaSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class AreaSeriesZones extends OptionsObject {
  external factory AreaSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class ArearangeSeries extends Series {
  external factory ArearangeSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>arearange</code> series type, points can be given in the following ways:

      <ol>

      <li><p>An array of arrays with 3 or 2 values. In this case, the values correspond to <code>x,low,high</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. The <code>x</code> value can also be omitted, in which case the inner arrays should be of length 2. Then the <code>x</code> value is automatically calculated, either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options.</p>

      <pre>data: [
      [0, 4, 3],
      [1, 9, 7],
      [2, 2, 6]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<arearange>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      low: 7,
      high: 2,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      low: 8,
      high: 10,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external ArearangeSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (ArearangeSeriesDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external ArearangeSeriesEvents get events;
  external void set events (ArearangeSeriesEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel width of the arearange graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external ArearangeSeriesPoint get point;
  external void set point (ArearangeSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class ArearangeSeriesData extends OptionsObject {
  external factory ArearangeSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external ArearangeSeriesDataEvents get events;
  external void set events (ArearangeSeriesDataEvents a_events);
  /**
   * The high or maximum value for each data point.
   */
  external num get high;
  external void set high (num a_high);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The low or minimum value for each data point.
   */
  external num get low;
  external void set low (num a_low);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
}
@JS()
@anonymous
class ArearangeSeriesDataEvents extends OptionsObject {
  external factory ArearangeSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ArearangeSeriesDataGrouping extends OptionsObject {
  external factory ArearangeSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class ArearangeSeriesDataLabels extends OptionsObject {
  external factory ArearangeSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class ArearangeSeriesEvents extends OptionsObject {
  external factory ArearangeSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class ArearangeSeriesPoint extends OptionsObject {
  external factory ArearangeSeriesPoint ();
  /**
   * Events for each single point
   */
  external ArearangeSeriesPointEvents get events;
  external void set events (ArearangeSeriesPointEvents a_events);
}
@JS()
@anonymous
class ArearangeSeriesPointEvents extends OptionsObject {
  external factory ArearangeSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ArearangeSeriesStates extends OptionsObject {
  external factory ArearangeSeriesStates ();
  /**
   * Options for the hovered series
   */
  external ArearangeSeriesStatesHover get hover;
  external void set hover (ArearangeSeriesStatesHover a_hover);
}
@JS()
@anonymous
class ArearangeSeriesStatesHover extends OptionsObject {
  external factory ArearangeSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external ArearangeSeriesStatesHoverMarker get marker;
  external void set marker (ArearangeSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class ArearangeSeriesStatesHoverHalo extends OptionsObject {
  external factory ArearangeSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class ArearangeSeriesStatesHoverMarker extends OptionsObject {
  external factory ArearangeSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ArearangeSeriesTooltip extends OptionsObject {
  external factory ArearangeSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class ArearangeSeriesZones extends OptionsObject {
  external factory ArearangeSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class AreasplineSeries extends Series {
  external factory AreasplineSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>areaspline</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 3],
      [1, 3],
      [2, 1]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<areaspline>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 8,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 5,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external AreasplineSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (AreasplineSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external AreasplineSeriesDataLabels get dataLabels;
  external void set dataLabels (AreasplineSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external AreasplineSeriesEvents get events;
  external void set events (AreasplineSeriesEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external AreasplineSeriesMarker get marker;
  external void set marker (AreasplineSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external AreasplineSeriesPoint get point;
  external void set point (AreasplineSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The Y axis value to serve as the base for the area, for distinguishing between values above and below a threshold. If <code>null</code>, the area behaves like a line series with fill between the graph and the Y axis minimum.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class AreasplineSeriesData extends OptionsObject {
  external factory AreasplineSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external AreasplineSeriesDataEvents get events;
  external void set events (AreasplineSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external AreasplineSeriesDataMarker get marker;
  external void set marker (AreasplineSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class AreasplineSeriesDataEvents extends OptionsObject {
  external factory AreasplineSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreasplineSeriesDataMarker extends OptionsObject {
  external factory AreasplineSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external AreasplineSeriesDataMarkerStates get states;
  external void set states (AreasplineSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreasplineSeriesDataMarkerStates extends OptionsObject {
  external factory AreasplineSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external AreasplineSeriesDataMarkerStatesHover get hover;
  external void set hover (AreasplineSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class AreasplineSeriesDataMarkerStatesHover extends OptionsObject {
  external factory AreasplineSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external AreasplineSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (AreasplineSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class AreasplineSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory AreasplineSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class AreasplineSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory AreasplineSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreasplineSeriesDataGrouping extends OptionsObject {
  external factory AreasplineSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class AreasplineSeriesDataLabels extends OptionsObject {
  external factory AreasplineSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class AreasplineSeriesEvents extends OptionsObject {
  external factory AreasplineSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class AreasplineSeriesMarker extends OptionsObject {
  external factory AreasplineSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external AreasplineSeriesMarkerStates get states;
  external void set states (AreasplineSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreasplineSeriesMarkerStates extends OptionsObject {
  external factory AreasplineSeriesMarkerStates ();
  /**
   * null
   */
  external AreasplineSeriesMarkerStatesHover get hover;
  external void set hover (AreasplineSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external AreasplineSeriesMarkerStatesSelect get select;
  external void set select (AreasplineSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class AreasplineSeriesMarkerStatesHover extends OptionsObject {
  external factory AreasplineSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class AreasplineSeriesMarkerStatesSelect extends OptionsObject {
  external factory AreasplineSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class AreasplineSeriesPoint extends OptionsObject {
  external factory AreasplineSeriesPoint ();
  /**
   * Events for each single point
   */
  external AreasplineSeriesPointEvents get events;
  external void set events (AreasplineSeriesPointEvents a_events);
}
@JS()
@anonymous
class AreasplineSeriesPointEvents extends OptionsObject {
  external factory AreasplineSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreasplineSeriesStates extends OptionsObject {
  external factory AreasplineSeriesStates ();
  /**
   * Options for the hovered series
   */
  external AreasplineSeriesStatesHover get hover;
  external void set hover (AreasplineSeriesStatesHover a_hover);
}
@JS()
@anonymous
class AreasplineSeriesStatesHover extends OptionsObject {
  external factory AreasplineSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external AreasplineSeriesStatesHoverMarker get marker;
  external void set marker (AreasplineSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class AreasplineSeriesStatesHoverHalo extends OptionsObject {
  external factory AreasplineSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class AreasplineSeriesStatesHoverMarker extends OptionsObject {
  external factory AreasplineSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreasplineSeriesTooltip extends OptionsObject {
  external factory AreasplineSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class AreasplineSeriesZones extends OptionsObject {
  external factory AreasplineSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class AreasplinerangeSeries extends Series {
  external factory AreasplinerangeSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>areasplinerange</code> series type, points can be given in the following ways:

      <ol>

      <li><p>An array of arrays with 3 or 2 values. In this case, the values correspond to <code>x,low,high</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. The <code>x</code> value can also be omitted, in which case the inner arrays should be of length 2. Then the <code>x</code> value is automatically calculated, either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options.</p>

      <pre>data: [
      [0, 4, 6],
      [1, 3, 3],
      [2, 0, 3]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<areasplinerange>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      low: 3,
      high: 1,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      low: 0,
      high: 0,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external AreasplinerangeSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (AreasplinerangeSeriesDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external AreasplinerangeSeriesEvents get events;
  external void set events (AreasplinerangeSeriesEvents a_events);
  /**
   * Fill color or gradient for the area. When <code>null</code>, the series' <code>color</code>  is  used with the series' <code>fillOpacity</code>.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Fill opacity for the area. Note that when you set an explicit <code>fillColor</code>, the <code>fillOpacity</code> is not applied. Instead, you should define the opacity in the <code>fillColor</code> with an rgba color definition.
   */
  external num get fillOpacity;
  external void set fillOpacity (num a_fillOpacity);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * A separate color for the graph line. By default the line takes the <code>color</code> of the series, but the lineColor setting allows setting a separate color for the line without altering the <code>fillColor</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * Pixel width of the arearange graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external AreasplinerangeSeriesPoint get point;
  external void set point (AreasplinerangeSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * Whether the whole area or just the line should respond to mouseover tooltips and other mouse or touch events.
   */
  external bool get trackByArea;
  external void set trackByArea (bool a_trackByArea);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class AreasplinerangeSeriesData extends OptionsObject {
  external factory AreasplinerangeSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external AreasplinerangeSeriesDataEvents get events;
  external void set events (AreasplinerangeSeriesDataEvents a_events);
  /**
   * The high or maximum value for each data point.
   */
  external num get high;
  external void set high (num a_high);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The low or minimum value for each data point.
   */
  external num get low;
  external void set low (num a_low);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
}
@JS()
@anonymous
class AreasplinerangeSeriesDataEvents extends OptionsObject {
  external factory AreasplinerangeSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreasplinerangeSeriesDataGrouping extends OptionsObject {
  external factory AreasplinerangeSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class AreasplinerangeSeriesDataLabels extends OptionsObject {
  external factory AreasplinerangeSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class AreasplinerangeSeriesEvents extends OptionsObject {
  external factory AreasplinerangeSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class AreasplinerangeSeriesPoint extends OptionsObject {
  external factory AreasplinerangeSeriesPoint ();
  /**
   * Events for each single point
   */
  external AreasplinerangeSeriesPointEvents get events;
  external void set events (AreasplinerangeSeriesPointEvents a_events);
}
@JS()
@anonymous
class AreasplinerangeSeriesPointEvents extends OptionsObject {
  external factory AreasplinerangeSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class AreasplinerangeSeriesStates extends OptionsObject {
  external factory AreasplinerangeSeriesStates ();
  /**
   * Options for the hovered series
   */
  external AreasplinerangeSeriesStatesHover get hover;
  external void set hover (AreasplinerangeSeriesStatesHover a_hover);
}
@JS()
@anonymous
class AreasplinerangeSeriesStatesHover extends OptionsObject {
  external factory AreasplinerangeSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external AreasplinerangeSeriesStatesHoverMarker get marker;
  external void set marker (AreasplinerangeSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class AreasplinerangeSeriesStatesHoverHalo extends OptionsObject {
  external factory AreasplinerangeSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class AreasplinerangeSeriesStatesHoverMarker extends OptionsObject {
  external factory AreasplinerangeSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class AreasplinerangeSeriesTooltip extends OptionsObject {
  external factory AreasplinerangeSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class AreasplinerangeSeriesZones extends OptionsObject {
  external factory AreasplinerangeSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class ColumnSeries extends Series {
  external factory ColumnSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The color of the border surrounding each column or bar.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the border surrounding each column or bar.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The width of the border surrounding each column or bar.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * An array of data points for the series. For the <code>column</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 4],
      [1, 2],
      [2, 5]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<column>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 8,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 10,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * null
   */
  external ColumnSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (ColumnSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external ColumnSeriesDataLabels get dataLabels;
  external void set dataLabels (ColumnSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external ColumnSeriesEvents get events;
  external void set events (ColumnSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external ColumnSeriesPoint get point;
  external void set point (ColumnSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class ColumnSeriesData extends OptionsObject {
  external factory ColumnSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external ColumnSeriesDataEvents get events;
  external void set events (ColumnSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class ColumnSeriesDataEvents extends OptionsObject {
  external factory ColumnSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ColumnSeriesDataGrouping extends OptionsObject {
  external factory ColumnSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class ColumnSeriesDataLabels extends OptionsObject {
  external factory ColumnSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class ColumnSeriesEvents extends OptionsObject {
  external factory ColumnSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class ColumnSeriesPoint extends OptionsObject {
  external factory ColumnSeriesPoint ();
  /**
   * Events for each single point
   */
  external ColumnSeriesPointEvents get events;
  external void set events (ColumnSeriesPointEvents a_events);
}
@JS()
@anonymous
class ColumnSeriesPointEvents extends OptionsObject {
  external factory ColumnSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ColumnSeriesStates extends OptionsObject {
  external factory ColumnSeriesStates ();
  /**
   * Options for the hovered series
   */
  external ColumnSeriesStatesHover get hover;
  external void set hover (ColumnSeriesStatesHover a_hover);
}
@JS()
@anonymous
class ColumnSeriesStatesHover extends OptionsObject {
  external factory ColumnSeriesStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
}
@JS()
@anonymous
class ColumnSeriesStatesHoverHalo extends OptionsObject {
  external factory ColumnSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class ColumnSeriesTooltip extends OptionsObject {
  external factory ColumnSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class ColumnSeriesZones extends OptionsObject {
  external factory ColumnSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class ColumnrangeSeries extends Series {
  external factory ColumnrangeSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The color of the border surrounding each column or bar.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The corner radius of the border surrounding each column or bar.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The width of the border surrounding each column or bar.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * An array of data points for the series. For the <code>columnrange</code> series type, points can be given in the following ways:

      <ol>

      <li><p>An array of arrays with 3 or 2 values. In this case, the values correspond to <code>x,low,high</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. The <code>x</code> value can also be omitted, in which case the inner arrays should be of length 2. Then the <code>x</code> value is automatically calculated, either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options.</p>

      <pre>data: [
      [0, 2, 7],
      [1, 6, 10],
      [2, 7, 5]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<columnrange>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      low: 10,
      high: 3,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      low: 1,
      high: 5,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * null
   */
  external ColumnrangeSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (ColumnrangeSeriesDataGrouping a_dataGrouping);
  /**
   * Extended data labels for range series types. Range series  data labels have no <code>x</code> and <code>y</code> options. Instead, they have <code>xLow</code>, <code>xHigh</code>, <code>yLow</code> and <code>yHigh</code> options to allow the higher and lower data label sets individually.
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external ColumnrangeSeriesEvents get events;
  external void set events (ColumnrangeSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external ColumnrangeSeriesPoint get point;
  external void set point (ColumnrangeSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class ColumnrangeSeriesData extends OptionsObject {
  external factory ColumnrangeSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external ColumnrangeSeriesDataEvents get events;
  external void set events (ColumnrangeSeriesDataEvents a_events);
  /**
   * The high or maximum value for each data point.
   */
  external num get high;
  external void set high (num a_high);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The low or minimum value for each data point.
   */
  external num get low;
  external void set low (num a_low);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
}
@JS()
@anonymous
class ColumnrangeSeriesDataEvents extends OptionsObject {
  external factory ColumnrangeSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ColumnrangeSeriesDataGrouping extends OptionsObject {
  external factory ColumnrangeSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class ColumnrangeSeriesDataLabels extends OptionsObject {
  external factory ColumnrangeSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * X offset of the higher data labels relative to the point value.
   */
  external num get xHigh;
  external void set xHigh (num a_xHigh);
  /**
   * X offset of the lower data labels relative to the point value.
   */
  external num get xLow;
  external void set xLow (num a_xLow);
  /**
   * Y offset of the higher data labels relative to the point value.
   */
  external num get yHigh;
  external void set yHigh (num a_yHigh);
  /**
   * Y offset of the lower data labels relative to the point value.
   */
  external num get yLow;
  external void set yLow (num a_yLow);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class ColumnrangeSeriesEvents extends OptionsObject {
  external factory ColumnrangeSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class ColumnrangeSeriesPoint extends OptionsObject {
  external factory ColumnrangeSeriesPoint ();
  /**
   * Events for each single point
   */
  external ColumnrangeSeriesPointEvents get events;
  external void set events (ColumnrangeSeriesPointEvents a_events);
}
@JS()
@anonymous
class ColumnrangeSeriesPointEvents extends OptionsObject {
  external factory ColumnrangeSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ColumnrangeSeriesStates extends OptionsObject {
  external factory ColumnrangeSeriesStates ();
  /**
   * Options for the hovered series
   */
  external ColumnrangeSeriesStatesHover get hover;
  external void set hover (ColumnrangeSeriesStatesHover a_hover);
}
@JS()
@anonymous
class ColumnrangeSeriesStatesHover extends OptionsObject {
  external factory ColumnrangeSeriesStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
}
@JS()
@anonymous
class ColumnrangeSeriesStatesHoverHalo extends OptionsObject {
  external factory ColumnrangeSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class ColumnrangeSeriesTooltip extends OptionsObject {
  external factory ColumnrangeSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class ColumnrangeSeriesZones extends OptionsObject {
  external factory ColumnrangeSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class FlagsSeries extends Series {
  external factory FlagsSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * An array of data points for the series. For the <code>flags</code> series type, points can be given in the following ways:

      <ol>

      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<flags>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      title: "A",
      text: "First event"
      }, {
      x: 1,
      title: "B",
      text: "Second event"
      }]</pre></li>

      </ol>
   */
  external List<JsObject> get data;
  external void set data (List<JsObject> a_data);
  /**
   * null
   */
  external FlagsSeriesDataLabels get dataLabels;
  external void set dataLabels (FlagsSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external FlagsSeriesEvents get events;
  external void set events (FlagsSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The color of the line/border of the flag. Defaults to <code>"black"</code>.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The pixel width of the candlestick line/border. Defaults to <code>1</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * In case the flag is placed on a series, on what point key to place it. Line and columns have one key, <code>y</code>. In range or OHLC-type series, however, the flag can optionally be placed on the <code>open</code>, <code>high</code>, <code>low</code> or <code>close</code> key.
   */
  external String get onKey;
  external void set onKey (String a_onKey);
  /**
   * The id of the series that the flags should be drawn on. If no id is given, the flags are drawn on the x axis.
   */
  external String get onSeries;
  external void set onSeries (String a_onSeries);
  /**
   * Properties for each single point
   */
  external FlagsSeriesPoint get point;
  external void set point (FlagsSeriesPoint a_point);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The shape of the marker. Can be one of "flag", "circlepin", "squarepin", or an image on the format <code>url(/path-to-image.jpg)</code>. Individual shapes can also be set for each point.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * When multiple flags in the same series fall on the same value, this number determines the vertical
      offset between them.
   */
  external num get stackDistance;
  external void set stackDistance (num a_stackDistance);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The text styles of the flag. Defaults to:
      <pre>style: {
      fontSize: '11px',
      fontWeight: 'bold',
      textAlign: 'center'
      }</pre>
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * The text to display on each flag. This can be defined on series level, or  individually for each point. Defaults to <code>"A"</code>.
   */
  external dynamic get title;
  external void set title (dynamic a_title);
  /**
   * Specific tooltip options for flag series. Flag series tooltips are different from most other types in that a flag doesn't have a data value, so the tooltip rather displays the <code>text</code> option for each point.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Whether to use HTML to render the flag texts. Using HTML allows for advanced formatting, images and reliable bi-directional text rendering. Note that exported images won't respect the HTML, and that HTML won't respect Z-index settings.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * The y position of the top left corner of the flag relative to either the series (if onSeries is defined), or the x axis. Defaults to <code>-30</code>.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class FlagsSeriesData extends OptionsObject {
  external factory FlagsSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * null
   */
  external FlagsSeriesDataEvents get events;
  external void set events (FlagsSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The longer text to be shown in the flag's tooltip.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * The short text to be shown on the flag.
   */
  external String get title;
  external void set title (String a_title);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
}
@JS()
@anonymous
class FlagsSeriesDataEvents extends OptionsObject {
  external factory FlagsSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class FlagsSeriesDataLabels extends OptionsObject {
  external factory FlagsSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class FlagsSeriesEvents extends OptionsObject {
  external factory FlagsSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class FlagsSeriesPoint extends OptionsObject {
  external factory FlagsSeriesPoint ();
  /**
   * Events for each single point
   */
  external FlagsSeriesPointEvents get events;
  external void set events (FlagsSeriesPointEvents a_events);
}
@JS()
@anonymous
class FlagsSeriesPointEvents extends OptionsObject {
  external factory FlagsSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class FlagsSeriesStates extends OptionsObject {
  external factory FlagsSeriesStates ();
  /**
   * Options for the hovered series
   */
  external FlagsSeriesStatesHover get hover;
  external void set hover (FlagsSeriesStatesHover a_hover);
}
@JS()
@anonymous
class FlagsSeriesStatesHover extends OptionsObject {
  external factory FlagsSeriesStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill or background color of the flag Defaults to <code>"#FCFFC5"</code>.
   */
  external String get fillColor;
  external void set fillColor (String a_fillColor);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The color of the line/border of the flag Defaults to <code>"black"</code>.
   */
  external String get lineColor;
  external void set lineColor (String a_lineColor);
}
@JS()
@anonymous
class FlagsSeriesStatesHoverHalo extends OptionsObject {
  external factory FlagsSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class FlagsSeriesTooltip extends OptionsObject {
  external factory FlagsSeriesTooltip ();
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class FlagsSeriesZones extends OptionsObject {
  external factory FlagsSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class LineSeries extends Series {
  external factory LineSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>line</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 0],
      [1, 5],
      [2, 3]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<line>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 9,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 1,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external LineSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (LineSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external LineSeriesDataLabels get dataLabels;
  external void set dataLabels (LineSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external LineSeriesEvents get events;
  external void set events (LineSeriesEvents a_events);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The SVG value used for the <code>stroke-linecap</code> and <code>stroke-linejoin</code> of a line graph. Round means that lines are rounded in the ends and bends.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external LineSeriesMarker get marker;
  external void set marker (LineSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external LineSeriesPoint get point;
  external void set point (LineSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Whether to apply steps to the line. Possible values are <code>left</code>, <code>center</code> and <code>right</code>. Prior to 1.2.5, only <code>left</code> was supported.
   */
  external String get step;
  external void set step (String a_step);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class LineSeriesData extends OptionsObject {
  external factory LineSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external LineSeriesDataEvents get events;
  external void set events (LineSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external LineSeriesDataMarker get marker;
  external void set marker (LineSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class LineSeriesDataEvents extends OptionsObject {
  external factory LineSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class LineSeriesDataMarker extends OptionsObject {
  external factory LineSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external LineSeriesDataMarkerStates get states;
  external void set states (LineSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class LineSeriesDataMarkerStates extends OptionsObject {
  external factory LineSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external LineSeriesDataMarkerStatesHover get hover;
  external void set hover (LineSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class LineSeriesDataMarkerStatesHover extends OptionsObject {
  external factory LineSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external LineSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (LineSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class LineSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory LineSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class LineSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory LineSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class LineSeriesDataGrouping extends OptionsObject {
  external factory LineSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class LineSeriesDataLabels extends OptionsObject {
  external factory LineSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class LineSeriesEvents extends OptionsObject {
  external factory LineSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class LineSeriesMarker extends OptionsObject {
  external factory LineSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external LineSeriesMarkerStates get states;
  external void set states (LineSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class LineSeriesMarkerStates extends OptionsObject {
  external factory LineSeriesMarkerStates ();
  /**
   * null
   */
  external LineSeriesMarkerStatesHover get hover;
  external void set hover (LineSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external LineSeriesMarkerStatesSelect get select;
  external void set select (LineSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class LineSeriesMarkerStatesHover extends OptionsObject {
  external factory LineSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class LineSeriesMarkerStatesSelect extends OptionsObject {
  external factory LineSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class LineSeriesPoint extends OptionsObject {
  external factory LineSeriesPoint ();
  /**
   * Events for each single point
   */
  external LineSeriesPointEvents get events;
  external void set events (LineSeriesPointEvents a_events);
}
@JS()
@anonymous
class LineSeriesPointEvents extends OptionsObject {
  external factory LineSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class LineSeriesStates extends OptionsObject {
  external factory LineSeriesStates ();
  /**
   * Options for the hovered series
   */
  external LineSeriesStatesHover get hover;
  external void set hover (LineSeriesStatesHover a_hover);
}
@JS()
@anonymous
class LineSeriesStatesHover extends OptionsObject {
  external factory LineSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external LineSeriesStatesHoverMarker get marker;
  external void set marker (LineSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class LineSeriesStatesHoverHalo extends OptionsObject {
  external factory LineSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class LineSeriesStatesHoverMarker extends OptionsObject {
  external factory LineSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class LineSeriesTooltip extends OptionsObject {
  external factory LineSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class LineSeriesZones extends OptionsObject {
  external factory LineSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class OhlcSeries extends Series {
  external factory OhlcSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * When using automatic point colors pulled from the <code>options.colors</code>
      collection, this option determines whether the chart should receive
      one color per series or one color per point.
   */
  external bool get colorByPoint;
  external void set colorByPoint (bool a_colorByPoint);
  /**
   * A series specific or series type specific color set to apply instead of the global <a href="#colors">colors</a> when <a href="#plotOptions.column.colorByPoint">colorByPoint</a> is true.
   */
  external List<String> get colors;
  external void set colors (List<String> a_colors);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * An array of data points for the series. For the <code>ohlc</code> series type, points can be given in the following ways:

      <ol>

      <li><p>An array of arrays with 5 or 4 values. In this case, the values correspond to <code>x,open,high,low,close</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. The <code>x</code> value can also be omitted, in which case the inner arrays should be of length 4. Then the <code>x</code> value is automatically calculated, either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options.</p>

      <pre>data: [
      [0, 6, 5, 6, 7],
      [1, 9, 4, 8, 2],
      [2, 6, 3, 4, 10]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<ohlc>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      open: 3,
      high: 4,
      low: 5,
      close: 2,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      open: 4,
      high: 3,
      low: 6,
      close: 7,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * null
   */
  external OhlcSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (OhlcSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external OhlcSeriesDataLabels get dataLabels;
  external void set dataLabels (OhlcSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external OhlcSeriesEvents get events;
  external void set events (OhlcSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * Padding between each value groups, in x axis units.
   */
  external num get groupPadding;
  external void set groupPadding (num a_groupPadding);
  /**
   * Whether to group non-stacked columns or to let them render independent of each other. Non-grouped columns will be laid out individually and overlap each other.
   */
  external bool get grouping;
  external void set grouping (bool a_grouping);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The pixel width of the line/border. Defaults to <code>1</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * The maximum allowed pixel width for a column, translated to the height of a bar in a bar chart. This prevents the columns from becoming too wide when there is a small number of points in the chart.
   */
  external num get maxPointWidth;
  external void set maxPointWidth (num a_maxPointWidth);
  /**
   * The minimal height for a column or width for a bar. By default, 0 values are not shown. To visualize a 0 (or close to zero) point, set the minimal point length to a  pixel value like 3. In stacked column charts, minPointLength might not be respected for tightly packed values.
   */
  external num get minPointLength;
  external void set minPointLength (num a_minPointLength);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external OhlcSeriesPoint get point;
  external void set point (OhlcSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * Padding between each column or bar, in x axis units.
   */
  external num get pointPadding;
  external void set pointPadding (num a_pointPadding);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day,
      the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed
      automatically, but this option can be used to override the automatic value. In a series on
      a categorized axis the pointRange is 1 by default.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * A pixel value specifying a fixed width for each column or bar. When <code>null</code>, the width is calculated from the <code>pointPadding</code> and <code>groupPadding</code>.
   */
  external num get pointWidth;
  external void set pointWidth (num a_pointWidth);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class OhlcSeriesData extends OptionsObject {
  external factory OhlcSeriesData ();
  /**
   * The closing value of each data point.
   */
  external num get close;
  external void set close (num a_close);
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external OhlcSeriesDataEvents get events;
  external void set events (OhlcSeriesDataEvents a_events);
  /**
   * The high or maximum value for each data point.
   */
  external num get high;
  external void set high (num a_high);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The low or minimum value for each data point.
   */
  external num get low;
  external void set low (num a_low);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * The opening value of each data point.
   */
  external num get open;
  external void set open (num a_open);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
}
@JS()
@anonymous
class OhlcSeriesDataEvents extends OptionsObject {
  external factory OhlcSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class OhlcSeriesDataGrouping extends OptionsObject {
  external factory OhlcSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. Defaults to <code>10</code>.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class OhlcSeriesDataLabels extends OptionsObject {
  external factory OhlcSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class OhlcSeriesEvents extends OptionsObject {
  external factory OhlcSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class OhlcSeriesPoint extends OptionsObject {
  external factory OhlcSeriesPoint ();
  /**
   * Events for each single point
   */
  external OhlcSeriesPointEvents get events;
  external void set events (OhlcSeriesPointEvents a_events);
}
@JS()
@anonymous
class OhlcSeriesPointEvents extends OptionsObject {
  external factory OhlcSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class OhlcSeriesStates extends OptionsObject {
  external factory OhlcSeriesStates ();
  /**
   * Options for the hovered series
   */
  external OhlcSeriesStatesHover get hover;
  external void set hover (OhlcSeriesStatesHover a_hover);
}
@JS()
@anonymous
class OhlcSeriesStatesHover extends OptionsObject {
  external factory OhlcSeriesStatesHover ();
  /**
   * How much to brighten the point on interaction. Requires the main color to be defined in hex or rgb(a) format.
   */
  external num get brightness;
  external void set brightness (num a_brightness);
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The pixel width of the line representing the OHLC point. Defaults to <code>3</code>.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
}
@JS()
@anonymous
class OhlcSeriesStatesHoverHalo extends OptionsObject {
  external factory OhlcSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class OhlcSeriesTooltip extends OptionsObject {
  external factory OhlcSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class OhlcSeriesZones extends OptionsObject {
  external factory OhlcSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class PolygonSeries extends Series {
  external factory PolygonSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>polygon</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 0],
      [1, 9],
      [2, 2]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<polygon>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 4,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 4,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external PolygonSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (PolygonSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external PolygonSeriesDataLabels get dataLabels;
  external void set dataLabels (PolygonSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external PolygonSeriesEvents get events;
  external void set events (PolygonSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external PolygonSeriesMarker get marker;
  external void set marker (PolygonSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external PolygonSeriesPoint get point;
  external void set point (PolygonSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip. When <code>stickyTracking</code> is false and <code>tooltip.shared</code> is false, the
      tooltip will be hidden when moving the mouse between series.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a class="internal">#tooltip</a>. Overridable properties are <code>headerFormat</code>, <code>pointFormat</code>, <code>yDecimals</code>, <code>xDateFormat</code>, <code>yPrefix</code> and <code>ySuffix</code>.  Unlike other series, in a scatter plot the series.name by default shows in the headerFormat  and poin.x and point.y in the pointFormat.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class PolygonSeriesData extends OptionsObject {
  external factory PolygonSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external PolygonSeriesDataEvents get events;
  external void set events (PolygonSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external PolygonSeriesDataMarker get marker;
  external void set marker (PolygonSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class PolygonSeriesDataEvents extends OptionsObject {
  external factory PolygonSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PolygonSeriesDataMarker extends OptionsObject {
  external factory PolygonSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PolygonSeriesDataMarkerStates get states;
  external void set states (PolygonSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PolygonSeriesDataMarkerStates extends OptionsObject {
  external factory PolygonSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external PolygonSeriesDataMarkerStatesHover get hover;
  external void set hover (PolygonSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class PolygonSeriesDataMarkerStatesHover extends OptionsObject {
  external factory PolygonSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PolygonSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (PolygonSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PolygonSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory PolygonSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PolygonSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory PolygonSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PolygonSeriesDataGrouping extends OptionsObject {
  external factory PolygonSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class PolygonSeriesDataLabels extends OptionsObject {
  external factory PolygonSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class PolygonSeriesEvents extends OptionsObject {
  external factory PolygonSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class PolygonSeriesMarker extends OptionsObject {
  external factory PolygonSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external PolygonSeriesMarkerStates get states;
  external void set states (PolygonSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PolygonSeriesMarkerStates extends OptionsObject {
  external factory PolygonSeriesMarkerStates ();
  /**
   * null
   */
  external PolygonSeriesMarkerStatesHover get hover;
  external void set hover (PolygonSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external PolygonSeriesMarkerStatesSelect get select;
  external void set select (PolygonSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class PolygonSeriesMarkerStatesHover extends OptionsObject {
  external factory PolygonSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class PolygonSeriesMarkerStatesSelect extends OptionsObject {
  external factory PolygonSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class PolygonSeriesPoint extends OptionsObject {
  external factory PolygonSeriesPoint ();
  /**
   * Events for each single point
   */
  external PolygonSeriesPointEvents get events;
  external void set events (PolygonSeriesPointEvents a_events);
}
@JS()
@anonymous
class PolygonSeriesPointEvents extends OptionsObject {
  external factory PolygonSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class PolygonSeriesStates extends OptionsObject {
  external factory PolygonSeriesStates ();
  /**
   * Options for the hovered series
   */
  external PolygonSeriesStatesHover get hover;
  external void set hover (PolygonSeriesStatesHover a_hover);
}
@JS()
@anonymous
class PolygonSeriesStatesHover extends OptionsObject {
  external factory PolygonSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external PolygonSeriesStatesHoverMarker get marker;
  external void set marker (PolygonSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class PolygonSeriesStatesHoverHalo extends OptionsObject {
  external factory PolygonSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class PolygonSeriesStatesHoverMarker extends OptionsObject {
  external factory PolygonSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class PolygonSeriesZones extends OptionsObject {
  external factory PolygonSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class ScatterSeries extends Series {
  external factory ScatterSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>scatter</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 5],
      [1, 2],
      [2, 4]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<scatter>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 2,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 9,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external ScatterSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (ScatterSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external ScatterSeriesDataLabels get dataLabels;
  external void set dataLabels (ScatterSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external ScatterSeriesEvents get events;
  external void set events (ScatterSeriesEvents a_events);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external ScatterSeriesMarker get marker;
  external void set marker (ScatterSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external ScatterSeriesPoint get point;
  external void set point (ScatterSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip. When <code>stickyTracking</code> is false and <code>tooltip.shared</code> is false, the
      tooltip will be hidden when moving the mouse between series.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a class="internal">#tooltip</a>. Overridable properties are <code>headerFormat</code>, <code>pointFormat</code>, <code>yDecimals</code>, <code>xDateFormat</code>, <code>yPrefix</code> and <code>ySuffix</code>.  Unlike other series, in a scatter plot the series.name by default shows in the headerFormat  and poin.x and point.y in the pointFormat.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class ScatterSeriesData extends OptionsObject {
  external factory ScatterSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external ScatterSeriesDataEvents get events;
  external void set events (ScatterSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external ScatterSeriesDataMarker get marker;
  external void set marker (ScatterSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class ScatterSeriesDataEvents extends OptionsObject {
  external factory ScatterSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ScatterSeriesDataMarker extends OptionsObject {
  external factory ScatterSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external ScatterSeriesDataMarkerStates get states;
  external void set states (ScatterSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ScatterSeriesDataMarkerStates extends OptionsObject {
  external factory ScatterSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external ScatterSeriesDataMarkerStatesHover get hover;
  external void set hover (ScatterSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class ScatterSeriesDataMarkerStatesHover extends OptionsObject {
  external factory ScatterSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external ScatterSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (ScatterSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class ScatterSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory ScatterSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class ScatterSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory ScatterSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ScatterSeriesDataGrouping extends OptionsObject {
  external factory ScatterSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class ScatterSeriesDataLabels extends OptionsObject {
  external factory ScatterSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class ScatterSeriesEvents extends OptionsObject {
  external factory ScatterSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class ScatterSeriesMarker extends OptionsObject {
  external factory ScatterSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external ScatterSeriesMarkerStates get states;
  external void set states (ScatterSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ScatterSeriesMarkerStates extends OptionsObject {
  external factory ScatterSeriesMarkerStates ();
  /**
   * null
   */
  external ScatterSeriesMarkerStatesHover get hover;
  external void set hover (ScatterSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external ScatterSeriesMarkerStatesSelect get select;
  external void set select (ScatterSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class ScatterSeriesMarkerStatesHover extends OptionsObject {
  external factory ScatterSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class ScatterSeriesMarkerStatesSelect extends OptionsObject {
  external factory ScatterSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class ScatterSeriesPoint extends OptionsObject {
  external factory ScatterSeriesPoint ();
  /**
   * Events for each single point
   */
  external ScatterSeriesPointEvents get events;
  external void set events (ScatterSeriesPointEvents a_events);
}
@JS()
@anonymous
class ScatterSeriesPointEvents extends OptionsObject {
  external factory ScatterSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class ScatterSeriesStates extends OptionsObject {
  external factory ScatterSeriesStates ();
  /**
   * Options for the hovered series
   */
  external ScatterSeriesStatesHover get hover;
  external void set hover (ScatterSeriesStatesHover a_hover);
}
@JS()
@anonymous
class ScatterSeriesStatesHover extends OptionsObject {
  external factory ScatterSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * The width of the line connecting the data points.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external ScatterSeriesStatesHoverMarker get marker;
  external void set marker (ScatterSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class ScatterSeriesStatesHoverHalo extends OptionsObject {
  external factory ScatterSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class ScatterSeriesStatesHoverMarker extends OptionsObject {
  external factory ScatterSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class ScatterSeriesZones extends OptionsObject {
  external factory ScatterSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class SplineSeries extends Series {
  external factory SplineSeries ();
  /**
   * Allow this series' points to be selected by clicking on the markers or bars.
   */
  external bool get allowPointSelect;
  external void set allowPointSelect (bool a_allowPointSelect);
  /**
   * <p>Enable or disable the initial animation when a series is displayed. The animation can also be set as a configuration object. Please note that this option only applies to the initial animation of the series itself. For other animations, see <a href="#chart.animation">chart.animation</a> and the animation parameter under the API methods.		The following properties are supported:</p>

      <dl>

      <dt>duration</dt>

      <dd>The duration of the animation in milliseconds.</dd>

      <dt>easing</dt>

      <dd>A string reference to an easing function set on the <code>Math</code> object. See <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/">the easing demo</a>.</dd>

      </dl>

      <p>

      Due to poor performance, animation is disabled in old IE browsers for column charts and polar charts.</p>
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * For some series, there is a limit that shuts down initial animation by default when the total number of points in the chart is too high. For example, for a column chart and its derivatives, animation doesn't run if there is more than 250 points totally. To disable this cap, set <code>animationLimit</code> to <code>Infinity</code>.
   */
  external num get animationLimit;
  external void set animationLimit (num a_animationLimit);
  /**
   * The main color of the series. In line type series it applies to the line and the point markers unless otherwise specified. In bar type series it applies to the bars unless a color is specified per point. The default value is pulled from the  <code>options.colors</code> array.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Compare the values of the series against the first non-null, non-zero value in the visible range. The y axis will

      show percentage or absolute change depending on whether <code>compare</code> is set to <code>"percent"</code>

      or <code>"value"</code>. When this is applied to multiple series, it allows comparing the development

      of the series against each other.
   */
  external String get compare;
  external void set compare (String a_compare);
  /**
   * Whether to draw a line between points on either side of a null point, or render a gap between them.
   */
  external bool get connectNulls;
  external void set connectNulls (bool a_connectNulls);
  /**
   * When the series contains less points than the crop threshold, all points are drawn,  event if the points fall outside the visible plot area at the current zoom. The advantage of drawing all points (including markers and columns), is that animation is performed on updates. On the other hand, when the series contains more points than the crop threshold, the series data is cropped to only contain points that fall within the plot area. The advantage of cropping away invisible points is to increase performance on large series.  .
   */
  external num get cropThreshold;
  external void set cropThreshold (num a_cropThreshold);
  /**
   * You can set the cursor to "pointer" if you have click events attached to  the series, to signal to the user that the points and lines can be clicked.
   */
  external String get cursor;
  external void set cursor (String a_cursor);
  /**
   * A name for the dash style to use for the graph. Applies only to series type having a graph, like <code>line</code>, <code>spline</code>, <code>area</code> and <code>scatter</code> in  case it has a <code>lineWidth</code>. The value for the <code>dashStyle</code> include:

      <ul>

      <li>Solid</li>

      <li>ShortDash</li>

      <li>ShortDot</li>

      <li>ShortDashDot</li>

      <li>ShortDashDotDot</li>

      <li>Dot</li>

      <li>Dash</li>

      <li>LongDash</li>

      <li>DashDot</li>

      <li>LongDashDot</li>

      <li>LongDashDotDot</li>

      </ul>
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An array of data points for the series. For the <code>spline</code> series type, points can be given in the following ways:

      <ol>

      <li>An array of numerical values. In this case, the numerical values will

      be interpreted as <code>y</code> options. The <code>x</code> values will be automatically calculated,

      either starting at 0 and incremented by 1, or from <code>pointStart</code>

      and <code>pointInterval</code> given in the series options. If the axis

      has categories, these will be used.  Example:

      <pre>data: [0, 5, 3, 5]</pre>

      </li>

      <li><p>An array of arrays with 2 values. In this case, the values correspond to <code>x,y</code>. If the first value is a string, it is

      applied as the name of the point, and the <code>x</code> value is inferred. <pre>data: [
      [0, 4],
      [1, 3],
      [2, 10]
      ]</pre></li>





      <li><p>An array of objects with named values. The objects are

      point configuration objects as seen below. If the total number of data points exceeds the series' <a href='#series<spline>.turboThreshold'>turboThreshold</a>, this option is not available.</p>



      <pre>data: [{
      x: 1,
      y: 3,
      name: "Point2",
      color: "#00FF00"
      }, {
      x: 1,
      y: 9,
      name: "Point1",
      color: "#FF00FF"
      }]</pre></li>

      </ol>
   */
  external dynamic get data;
  external void set data (dynamic a_data);
  /**
   * Data grouping is the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts. Highstock by default applies data grouping when the points become closer than a certain pixel value, determined by the <code>groupPixelWidth</code> option.
   */
  external SplineSeriesDataGrouping get dataGrouping;
  external void set dataGrouping (SplineSeriesDataGrouping a_dataGrouping);
  /**
   * null
   */
  external SplineSeriesDataLabels get dataLabels;
  external void set dataLabels (SplineSeriesDataLabels a_dataLabels);
  /**
   * Enable or disable the mouse tracking for a specific series. This includes point tooltips and click events on graphs and points. When using shared tooltips  (default in stock charts), mouse tracking is not required. For large datasets it improves performance.
   */
  external bool get enableMouseTracking;
  external void set enableMouseTracking (bool a_enableMouseTracking);
  /**
   * null
   */
  external SplineSeriesEvents get events;
  external void set events (SplineSeriesEvents a_events);
  /**
   * <p>Defines when to display a gap in the graph. A gap size of 5 means that if the distance between two points is greater than five times that of the two closest points, the  graph will be broken.</p>



      <p>In practice, this option is most often used to visualize gaps in time series. In a stock chart, intraday data is available for daytime hours, while gaps will appear 	in nights and weekends.</p>
   */
  external num get gapSize;
  external void set gapSize (num a_gapSize);
  /**
   * Whether to use the Y extremes of the total chart width or only the zoomed area when zooming in on parts of the X axis. By default, the Y axis adjusts to the min and max of the visible data. Cartesian series only.
   */
  external bool get getExtremesFromAll;
  external void set getExtremesFromAll (bool a_getExtremesFromAll);
  /**
   * An id for the series. This can be used after render time to get a pointer to the series object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The index of the series in the chart, affecting the internal index in the <code>chart.series</code> array, the visible Z index as well as the order in the legend.
   */
  external num get index;
  external void set index (num a_index);
  /**
   * An array specifying which option maps to which key in the data point array. This makes it convenient to work with unstructured data arrays from different sources.
   */
  external List<String> get keys;
  external void set keys (List<String> a_keys);
  /**
   * The sequential index of the series in the legend.  <div class="demo">Try it:  	<a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/series/legendindex/" target="_blank">Legend in opposite order</a> </div>.
   */
  external num get legendIndex;
  external void set legendIndex (num a_legendIndex);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The line cap used for line ends and line joins on the graph.
   */
  external String get linecap;
  external void set linecap (String a_linecap);
  /**
   * The <a href="#series.id">id</a> of another series to link to. Additionally, the value can be ":previous" to link to the previous series. When two series are linked, only the first one appears in the legend. Toggling the visibility of this also toggles the linked series.
   */
  external String get linkedTo;
  external void set linkedTo (String a_linkedTo);
  /**
   * null
   */
  external SplineSeriesMarker get marker;
  external void set marker (SplineSeriesMarker a_marker);
  /**
   * The name of the series as shown in the legend, tooltip etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Properties for each single point
   */
  external SplineSeriesPoint get point;
  external void set point (SplineSeriesPoint a_point);
  /**
   * <p>If no x values are given for the points in a series, pointInterval defines the interval of the x values in milliseconds. For example, if a series contains one value each day, set pointInterval to <code>24 * 3600 * 1000</code>.</p>

      <p>Since Highstock 2.1, it can be combined with <code>pointIntervalUnit</code> to draw irregular intervals.</p>
   */
  external num get pointInterval;
  external void set pointInterval (num a_pointInterval);
  /**
   * On datetime series, this allows for setting the <a href="plotOptions.series.pointInterval">pointInterval</a> to the two irregular time units, <code>month</code> and <code>year</code>. Combine it with <code>pointInterval</code> to draw quarters, 6 months, 10 years etc.
   */
  external String get pointIntervalUnit;
  external void set pointIntervalUnit (String a_pointIntervalUnit);
  /**
   * <p>Possible values: <code>null</code>, <code>"on"</code>, <code>"between"</code>.</p>

      <p>In a column chart, when pointPlacement is <code>"on"</code>, the point will not create any padding of the X axis. In a polar column chart this means that the first column points directly north. If the pointPlacement is <code>"between"</code>, the columns will be laid out between ticks. This is useful for example for visualising an amount between two points in time or in a certain sector of a polar chart.</p>

      <p>Since Highcharts 3.0.2, the point placement can also be numeric, where 0 is on the axis value, -0.5 is between this value and the previous, and 0.5 is between this value and the next. Unlike the textual options, numeric point placement options won't affect axis padding.</p>

      <p>Note that pointPlacement needs a <a href="#plotOptions.series.pointRange">pointRange</a> to work. For column series this is computed, but for line-type series it needs to be set.</p>

      <p>Defaults to <code>null</code> in cartesian charts, <code>"between"</code> in polar charts.
   */
  external dynamic get pointPlacement;
  external void set pointPlacement (dynamic a_pointPlacement);
  /**
   * The width of each point on the x axis. For example in a column chart with one value each day, the pointRange would be 1 day (= 24 * 3600 * 1000 milliseconds). This is normally computed automatically, but this option can be used to override the automatic value.
   */
  external num get pointRange;
  external void set pointRange (num a_pointRange);
  /**
   * If no x values are given for the points in a series, pointStart defines on what value to start. On a datetime X axis, the number will be given as milliseconds since 1970-01-01, for example <code>Date.UTC(2011, 0, 1)</code>.
   */
  external num get pointStart;
  external void set pointStart (num a_pointStart);
  /**
   * Whether to select the series initially. If <code>showCheckbox</code> is true, the checkbox next to the series name in the legend will be checked for a selected series.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * Whether to apply a drop shadow to the graph line. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * If true, a checkbox is displayed next to the legend item to allow selecting the series. The state of the checkbox is determined by the <code>selected</code> option.
   */
  external bool get showCheckbox;
  external void set showCheckbox (bool a_showCheckbox);
  /**
   * Whether to display this particular series or series type in the legend. The default value is <code>true</code> for standalone series, <code>false</code> for linked series.
   */
  external bool get showInLegend;
  external void set showInLegend (bool a_showInLegend);
  /**
   * <p>When this is true, the series will not cause the Y axis to cross the zero plane (or <a href="#plotOptions.series.threshold">threshold</a> option) unless the data actually crosses the plane.</p>



      <p>For example, if <code>softThreshold</code> is <code>false</code>, a series of 0, 1, 2, 3 will make the Y axis show negative values according to the <code>minPadding</code> option. If <code>softThreshold</code> is <code>true</code>, the Y axis starts at 0.</p>
   */
  external bool get softThreshold;
  external void set softThreshold (bool a_softThreshold);
  /**
   * This option allows grouping series in a stacked chart. The stack option can be a string  or a number or anything else, as long as the grouped series' stack options match each other.
   */
  external String get stack;
  external void set stack (String a_stack);
  /**
   * Whether to stack the values of each series on top of each other. Possible values

      are null to disable, "normal" to stack by value or "percent".
   */
  external String get stacking;
  external void set stacking (String a_stacking);
  /**
   * A wrapper object for all the series options in specific states.
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * Sticky tracking of mouse events. When true, the <code>mouseOut</code> event
      on a series isn't triggered until the mouse moves over another series, or out
      of the plot area. When false, the <code>mouseOut</code> event on a series is
      triggered when the mouse leaves the area around the series' graph or markers.
      This also implies the tooltip when not shared. When <code>stickyTracking</code> is false, the
      tooltip will be hidden when moving the mouse between series. Defaults to true for line and area type series, but to false for columns, candlesticks etc.
   */
  external bool get stickyTracking;
  external void set stickyTracking (bool a_stickyTracking);
  /**
   * The threshold, also called zero level or base level. For line type series this is only used in conjunction with <a href="#plotOptions.series.negativeColor">negativeColor</a>.
   */
  external num get threshold;
  external void set threshold (num a_threshold);
  /**
   * A configuration object for the tooltip rendering of each single series. Properties are inherited from <a href="#tooltip">tooltip</a>, but only the following properties can be defined on a series level.
   */
  external JsObject get tooltip;
  external void set tooltip (JsObject a_tooltip);
  /**
   * When a series contains a data array that is longer than this, only one dimensional arrays of numbers,
      or two dimensional arrays with x and y values are allowed. Also, only the first
      point is tested, and the rest are assumed to be the same format. This saves expensive
      data checking and indexing in long series. Set it to <code>0</code> disable.
   */
  external num get turboThreshold;
  external void set turboThreshold (num a_turboThreshold);
  /**
   * The type of series. Can be one of <code>area</code>, <code>areaspline</code>,

      <code>bar</code>, <code>column</code>, <code>line</code>, <code>pie</code>,

      <code>scatter</code>, <code>spline</code>, <code>candlestick</code> or <code>ohlc</code>. From version 1.1.7, <code>arearange</code>, <code>areasplinerange</code> and <code>columnrange</code> are supported with the highcharts-more.js component.
   */
  external String get type;
  external void set type (String a_type);
  /**
   * Set the initial visibility of the series.
   */
  external bool get visible;
  external void set visible (bool a_visible);
  /**
   * When using dual or multiple x axes, this number defines which xAxis the particular series is connected to. It refers to either the <a href="#xAxis.id">axis id</a> or the index of the axis in the xAxis array, with 0 being the first.
   */
  external dynamic get xAxis;
  external void set xAxis (dynamic a_xAxis);
  /**
   * When using dual or multiple y axes, this number defines which yAxis the particular series is connected to. It refers to either the <a href="#yAxis.id">axis id</a> or the index of the axis in the yAxis array, with 0 being the first.
   */
  external dynamic get yAxis;
  external void set yAxis (dynamic a_yAxis);
  /**
   * Define the visual z index of the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
  /**
   * Defines the Axis on which the zones are applied.
   */
  external String get zoneAxis;
  external void set zoneAxis (String a_zoneAxis);
  /**
   * An array defining zones within a series. Zones can be applied to the X axis, Y axis or Z axis for bubbles, according to the <code>zoneAxis</code> option.
   */
  external List get zones;
  external void set zones (List a_zones);
}
@JS()
@anonymous
class SplineSeriesData extends OptionsObject {
  external factory SplineSeriesData ();
  /**
   * Individual color for the point.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Individual data label for each point. The options are the same as the ones for  <a class="internal" href="#plotOptions.series.dataLabels">plotOptions.series.dataLabels</a>
   */
  external JsObject get dataLabels;
  external void set dataLabels (JsObject a_dataLabels);
  /**
   * null
   */
  external SplineSeriesDataEvents get events;
  external void set events (SplineSeriesDataEvents a_events);
  /**
   * An id for the point. This can be used after render time to get a pointer to the point object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external SplineSeriesDataMarker get marker;
  external void set marker (SplineSeriesDataMarker a_marker);
  /**
   * The name of the point as shown in the legend, tooltip, dataLabel etc.
   */
  external String get name;
  external void set name (String a_name);
  /**
   * Whether the data point is selected initially.
   */
  external bool get selected;
  external void set selected (bool a_selected);
  /**
   * The x value of the point. For datetime axes, the X value is the timestamp in milliseconds since 1970.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y value of the point.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class SplineSeriesDataEvents extends OptionsObject {
  external factory SplineSeriesDataEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class SplineSeriesDataMarker extends OptionsObject {
  external factory SplineSeriesDataMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external SplineSeriesDataMarkerStates get states;
  external void set states (SplineSeriesDataMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class SplineSeriesDataMarkerStates extends OptionsObject {
  external factory SplineSeriesDataMarkerStates ();
  /**
   * Options for the hovered series
   */
  external SplineSeriesDataMarkerStatesHover get hover;
  external void set hover (SplineSeriesDataMarkerStatesHover a_hover);
}
@JS()
@anonymous
class SplineSeriesDataMarkerStatesHover extends OptionsObject {
  external factory SplineSeriesDataMarkerStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external SplineSeriesDataMarkerStatesHoverMarker get marker;
  external void set marker (SplineSeriesDataMarkerStatesHoverMarker a_marker);
}
@JS()
@anonymous
class SplineSeriesDataMarkerStatesHoverHalo extends OptionsObject {
  external factory SplineSeriesDataMarkerStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class SplineSeriesDataMarkerStatesHoverMarker extends OptionsObject {
  external factory SplineSeriesDataMarkerStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class SplineSeriesDataGrouping extends OptionsObject {
  external factory SplineSeriesDataGrouping ();
  /**
   * <p>The method of approximation inside a group. When for example
      30 days are grouped into one month, this determines what value should represent the
      group. Possible values are "average", "open", "high", "low", "close" and "sum". For
      OHLC and candlestick series the approximation is "ohlc" by default, which finds the
      open, high, low and close values within all the grouped data. For ranges, the approximation is "range", which finds the low and high values.</p>

      <p>Custom aggregate methods
      can be added by assigning a callback function as the approximation. This function takes
      a numeric array as the argument and should return a single numeric value or <code>null</code>. Note that
      the numeric array will never contain null values, only true numbers. Instead, if null
      values are present in the raw data, the numeric array will have an <code>.hasNulls</code>
      property set to <code>true</code>. For single-value data sets the data is available in the first
      argument of the callback function. For OHLC data sets, all the open values are in the first
      argument, all high values in the second etc.</p>



      <p>Defaults to <code>average</code> for line-type series, <code>sum</code> for columns, <code>range</code> for range series and <code>ohlc</code> for OHLC and candlestick.
   */
  external dynamic get approximation;
  external void set approximation (dynamic a_approximation);
  /**
   * <p>Datetime formats for the header of the tooltip in a stock chart. The format can vary within a chart depending on the currently selected time range and the current data grouping.</p>



      <p>The default formats are: </p>

      <pre>{

      millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],

      second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],

      minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],

      day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],

      month: ['%B %Y', '%B', '-%B %Y'],

      year: ['%Y', '%Y', '-%Y']

      }</pre>



      <p>For each of these array definitions, the first item is the format used when the active time span is one unit. For instance, if the current data applies to one week, the first item of the week array is used. The second and third items are used when the active time span is more than two units. For instance, if the current data applies to two weeks, the second and third item of the week array are used, and applied to the start and end date of the time span.</p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Enable or disable data grouping.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * When data grouping is forced, it runs no matter how small the intervals are. This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
   */
  external bool get forced;
  external void set forced (bool a_forced);
  /**
   * The approximate pixel width of each group. If for example a series with 30 points is displayed over a 600 pixel wide plot area, no grouping is performed. If however the series contains so many points that the spacing is less than the  groupPixelWidth, Highcharts will try to group it into appropriate groups so that each is more or less two pixels wide. If multiple series with different group pixel widths are drawn on the same x axis, all series will take the greatest width. For example, line series have 2px default group width, while column series have 10px. If combined, both the line and the column will have 10px by default.
   */
  external num get groupPixelWidth;
  external void set groupPixelWidth (num a_groupPixelWidth);
  /**
   * Normally, a group is indexed by the start of that group, so for example when 30 daily values are grouped into one month, that month's x value will be the 1st of  the month. This apparently shifts the data to the left. When the smoothed option is true, this is compensated for. The data is shifted to the middle of the group, and min and max values are preserved. Internally, this is used in the Navigator series.
   */
  external bool get smoothed;
  external void set smoothed (bool a_smoothed);
  /**
   * An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:
      <pre>units: [[
      'millisecond', // unit name
      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
      ], [
      'second',
      [1, 2, 5, 10, 15, 30]
      ], [
      'minute',
      [1, 2, 5, 10, 15, 30]
      ], [
      'hour',
      [1, 2, 3, 4, 6, 8, 12]
      ], [
      'day',
      [1]
      ], [
      'week',
      [1]
      ], [
      'month',
      [1, 3, 6]
      ], [
      'year',
      null
      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
}
@JS()
@anonymous
class SplineSeriesDataLabels extends OptionsObject {
  external factory SplineSeriesDataLabels ();
  /**
   * The alignment of the data label compared to the point.  If <code>right</code>, the right side of the label should be touching the point. For points with an extent, like columns, the alignments also dictates how to align it inside the box, as given with the <a href="#plotOptions.column.dataLabels.inside">inside</a> option. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Whether to allow data labels to overlap. To make the labels less sensitive for overlapping, the <a href="#plotOptions.series.dataLabels.padding">dataLabels.padding</a> can be set to 0.
   */
  external bool get allowOverlap;
  external void set allowOverlap (bool a_allowOverlap);
  /**
   * The border color for the data label. Defaults to <code>undefined</code>.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border radius in pixels for the data label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width in pixels for the data label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The text color for the data labels. Defaults to <code>null</code>.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * Whether to hide data labels that are outside the plot area. By default, the data label is moved inside the plot area according to the <a href="#plotOptions.series.dataLabels.overflow">overflow</a> option.
   */
  external bool get crop;
  external void set crop (bool a_crop);
  /**
   * Whether to defer displaying the data labels until the initial series animation has finished.
   */
  external bool get defer;
  external void set defer (bool a_defer);
  /**
   * Enable or disable the data labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the data label. Available variables are the same as for <code>formatter</code>.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the data label. Note that if a <code>format</code> is defined, the format takes precedence and the formatter is ignored. Available data are:

      <table>

      <tbody><tr>

      <td><code>this.percentage</code></td>

      <td>Stacked series and pies only. The point's percentage of the total.</td>

      </tr>

      <tr>

      <td><code>this.point</code></td>

      <td>The point object. The point name, if defined, is available

      through <code>this.point.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.series</code>:</td>

      <td>The series object. The series name is available

      through <code>this.series.name</code>.</td>

      </tr>

      <tr>

      <td><code>this.total</code></td>

      <td>Stacked series only. The total value at this point's x value.</td>

      </tr>

      <tr>

      <td><code>this.x</code>:</td>

      <td>The x value.</td>

      </tr>

      <tr>

      <td><code>this.y</code>:</td>

      <td>The y value.</td>

      </tr>

      </tbody></table>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * For points with an extent, like columns, whether to align the data label inside the box or to the actual value point. Defaults to <code>false</code> in most cases, <code>true</code> in stacked columns.
   */
  external bool get inside;
  external void set inside (bool a_inside);
  /**
   * How to handle data labels that flow outside the plot area. The default is <code>justify</code>, which aligns them inside the plot area. For columns and bars, this means it will be moved inside the bar. To display data labels outside the plot area, set <code>crop</code> to <code>false</code> and <code>overflow</code> to <code>"none"</code>.
   */
  external String get overflow;
  external void set overflow (String a_overflow);
  /**
   * When either the <code>borderWidth</code> or the <code>backgroundColor</code> is set, this

      is the padding within the box.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * Text rotation in degrees. Note that due to a more complex structure, backgrounds, borders and padding will be lost on a rotated data label.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * The shadow of the box. Works best with <code>borderWidth</code> or <code>backgroundColor</code>. Since 1.1.7 the shadow can be an object configuration containing <code>color</code>, <code>offsetX</code>, <code>offsetY</code>, <code>opacity</code> and <code>width</code>.
   */
  external dynamic get shadow;
  external void set shadow (dynamic a_shadow);
  /**
   * The name of a symbol to use for the border around the label. Symbols are predefined functions on the Renderer object.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Styles for the label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of a data label. Can be one of <code>top</code>, <code>middle</code> or <code>bottom</code>. The default value depends on the data, for instance in a column chart, the label is above positive values and below negative values.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position offset of the label relative to the point.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the point.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index of the data labels. The default Z index puts it above the series. Use a Z index of 2 to display it behind the series.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class SplineSeriesEvents extends OptionsObject {
  external factory SplineSeriesEvents ();
  /**
   * Fires after the series has finished its initial animation, or in case animation is disabled, immediately as the series is displayed.
   */
  external Function get afterAnimate;
  external void set afterAnimate (Function a_afterAnimate);
  /**
   * Fires when the checkbox next to the series' name in the legend is clicked. One parameter, <code>event</code>, is passed to the function. The state of the checkbox is found by <code>event.checked</code>. The checked item is found by <code>event.item</code>. Return <code>false</code> to prevent the default action which is to toggle the select state of the series.
   */
  external Function get checkboxClick;
  external void set checkboxClick (Function a_checkboxClick);
  /**
   * Fires when the series is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. Additionally, <code>event.point</code> holds a pointer to the nearest point on the graph.
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the series is hidden after chart generation time, either by clicking the legend item or by calling <code>.hide()</code>.
   */
  external Function get hide;
  external void set hide (Function a_hide);
  /**
   * Fires when the legend item belonging to the series is clicked. One parameter, <code>event</code>, is passed to the function. The default action is to toggle the visibility of the series. This can be prevented by returning <code>false</code> or calling <code>event.preventDefault()</code>.
   */
  external Function get legendItemClick;
  external void set legendItemClick (Function a_legendItemClick);
  /**
   * Fires when the mouse leaves the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts. If the  <a class="internal" href="#plotOptions.series">stickyTracking</a> option is true, <code>mouseOut</code> doesn't happen before the mouse enters another graph or leaves the plot area.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the graph. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the series is shown after chart generation time, either by clicking the legend item or by calling <code>.show()</code>.
   */
  external Function get show;
  external void set show (Function a_show);
}
@JS()
@anonymous
class SplineSeriesMarker extends OptionsObject {
  external factory SplineSeriesMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * null
   */
  external SplineSeriesMarkerStates get states;
  external void set states (SplineSeriesMarkerStates a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class SplineSeriesMarkerStates extends OptionsObject {
  external factory SplineSeriesMarkerStates ();
  /**
   * null
   */
  external SplineSeriesMarkerStatesHover get hover;
  external void set hover (SplineSeriesMarkerStatesHover a_hover);
  /**
   * The appearance of the point marker when selected. In order to allow a point to be
      selected, set the <code>series.allowPointSelect</code> option to true.
   */
  external SplineSeriesMarkerStatesSelect get select;
  external void set select (SplineSeriesMarkerStatesSelect a_select);
}
@JS()
@anonymous
class SplineSeriesMarkerStatesHover extends OptionsObject {
  external factory SplineSeriesMarkerStatesHover ();
  /**
   * Enable or disable the point marker.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for a hovered point.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * The radius of the point marker. In hover state, it defaults to the normal state's radius + 2 as per the <a href="#plotOptions.series.marker.states.hover.radiusPlus">radiusPlus</a> option.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   * The number of pixels to increase the radius of the hovered point.
   */
  external num get radiusPlus;
  external void set radiusPlus (num a_radiusPlus);
}
@JS()
@anonymous
class SplineSeriesMarkerStatesSelect extends OptionsObject {
  external factory SplineSeriesMarkerStatesSelect ();
  /**
   * Enable or disable visible feedback for selection.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker. In hover state, it defaults
      to the normal state's radius + 2.
   */
  external num get radius;
  external void set radius (num a_radius);
}
@JS()
@anonymous
class SplineSeriesPoint extends OptionsObject {
  external factory SplineSeriesPoint ();
  /**
   * Events for each single point
   */
  external SplineSeriesPointEvents get events;
  external void set events (SplineSeriesPointEvents a_events);
}
@JS()
@anonymous
class SplineSeriesPointEvents extends OptionsObject {
  external factory SplineSeriesPointEvents ();
  /**
   * <p></p>Fires when a point is clicked. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.<p></p> <p>If the <code>series.allowPointSelect</code> option is true, the default action for the point's click event is to toggle the point's select state. Returning <code>false</code> cancels this action.</p>
   */
  external Function get click;
  external void set click (Function a_click);
  /**
   * Fires when the mouse leaves the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOut;
  external void set mouseOut (Function a_mouseOut);
  /**
   * Fires when the mouse enters the area close to the point. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on  which library is used as the base for Highcharts.
   */
  external Function get mouseOver;
  external void set mouseOver (Function a_mouseOver);
  /**
   * Fires when the point is removed using the <code>.remove()</code> method. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get remove;
  external void set remove (Function a_remove);
  /**
   * Fires when the point is selected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get select;
  external void set select (Function a_select);
  /**
   * Fires when the point is unselected either programmatically or following a click on the point. One parameter, <code>event</code>, is passed to the function. Returning <code>false</code> cancels the operation.
   */
  external Function get unselect;
  external void set unselect (Function a_unselect);
  /**
   * Fires when the point is updated programmatically through the <code>.update()</code> method. One parameter, <code>event</code>, is passed to the function. The  new point options can be accessed through <code>event.options</code>. Returning <code>false</code> cancels the operation.
   */
  external Function get update;
  external void set update (Function a_update);
}
@JS()
@anonymous
class SplineSeriesStates extends OptionsObject {
  external factory SplineSeriesStates ();
  /**
   * Options for the hovered series
   */
  external SplineSeriesStatesHover get hover;
  external void set hover (SplineSeriesStatesHover a_hover);
}
@JS()
@anonymous
class SplineSeriesStatesHover extends OptionsObject {
  external factory SplineSeriesStatesHover ();
  /**
   * Enable separate styles for the hovered series to visualize that the user hovers either the series itself or the legend. Enabling it has a performance penalty as it requires that a second layer be drawn as a double buffer. This means twice  as much graphics to draw for each plot, which can make a great difference for charts with a high number of series or points.			.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * Options for the halo appearing around the hovered point in line-type series as well as outside the hovered slice in pie charts. By default the halo is filled by the current point or series color with an opacity of 0.25. The halo can be disabled by setting the <code>halo</code> option to <code>false</code>.
   */
  external JsObject get halo;
  external void set halo (JsObject a_halo);
  /**
   * Pixel with of the graph line.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The additional line width for the graph of a hovered series.
   */
  external num get lineWidthPlus;
  external void set lineWidthPlus (num a_lineWidthPlus);
  /**
   * null
   */
  external SplineSeriesStatesHoverMarker get marker;
  external void set marker (SplineSeriesStatesHoverMarker a_marker);
}
@JS()
@anonymous
class SplineSeriesStatesHoverHalo extends OptionsObject {
  external factory SplineSeriesStatesHoverHalo ();
  /**
   * A collection of SVG attributes to override the appearance of the halo, for example <code>fill</code>, <code>stroke</code> and <code>stroke-width</code>.
   */
  external JsObject get attributes;
  external void set attributes (JsObject a_attributes);
  /**
   * Opacity for the halo unless a specific fill is overridden using the <code>attributes</code> setting. Note that Highcharts is only able to apply opacity to colors of hex or rgb(a) formats.
   */
  external num get opacity;
  external void set opacity (num a_opacity);
  /**
   * The pixel size of the halo. For point markers this is the radius of the halo. For pie slices it is the width of the halo outside the slice. For bubbles it defaults to 5 and is the width of the halo outside the bubble.
   */
  external num get size;
  external void set size (num a_size);
}
@JS()
@anonymous
class SplineSeriesStatesHoverMarker extends OptionsObject {
  external factory SplineSeriesStatesHoverMarker ();
  /**
   * Enable or disable the point marker. If <code>null</code>, the markers are hidden when the data is dense, and shown for more widespread data points.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * The fill color of the point marker. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>width</code> must also be set.
   */
  external num get height;
  external void set height (num a_height);
  /**
   * The color of the point marker's outline. When <code>null</code>, the series' or point's color is used.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the point marker's outline.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * The radius of the point marker.
   */
  external num get radius;
  external void set radius (num a_radius);
  /**
   *
   */
  external dynamic get states;
  external void set states (dynamic a_states);
  /**
   * <p>A predefined shape or symbol for the marker. When null, the symbol is pulled from options.symbols. Other possible values are "circle", "square", "diamond", "triangle" and "triangle-down".</p>



      <p>Additionally, the URL to a graphic can be given on this form:  "url(graphic.png)". Note that for the image to be applied to exported charts, its URL needs to be accessible by the export server.</p>



      <p>Custom callbacks for symbol path generation can also be added to <code>Highcharts.SVGRenderer.prototype.symbols</code>. The callback is then used by its method name, as shown in the demo.</p>
   */
  external String get symbol;
  external void set symbol (String a_symbol);
  /**
   * Image markers only. Set the image width explicitly. When using this option, a <code>height</code> must also be set.
   */
  external num get width;
  external void set width (num a_width);
}
@JS()
@anonymous
class SplineSeriesTooltip extends OptionsObject {
  external factory SplineSeriesTooltip ();
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class SplineSeriesZones extends OptionsObject {
  external factory SplineSeriesZones ();
  /**
   * Defines the color of the series.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * A name for the dash style to use for the graph.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * Defines the fill color for the series (in area type series)
   */
  external dynamic get fillColor;
  external void set fillColor (dynamic a_fillColor);
  /**
   * The value up to where the zone extends, if undefined the zones stretches to the last value in the series.
   */
  external num get value;
  external void set value (num a_value);
}
@JS()
@anonymous
class Subtitle extends OptionsObject {
  external factory Subtitle ();
  /**
   * The horizontal alignment of the subtitle. Can be one of "left", "center" and "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * When the subtitle is floating, the plot area will not move to make space for it.
   */
  external bool get floating;
  external void set floating (bool a_floating);
  /**
   * CSS styles for the title. Exact positioning of the title can be achieved by changing the margin property, or by adding <code>position: "absolute"</code> and  left and top properties.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The subtitle of the chart.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the text.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of the title. Can be one of "top", "middle" and "bottom". When a value is given, the title behaves as floating.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position of the subtitle relative to the alignment within chart.spacingLeft and chart.spacingRight.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position of the subtitle relative to the alignment within chart.spacingTop and chart.spacingBottom. By default the subtitle is laid out below the title unless the title is floating.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class Title extends OptionsObject {
  external factory Title ();
  /**
   * The horizontal alignment of the title. Can be one of "left", "center" and "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * When the title is floating, the plot area will not move to make space for it.
   */
  external bool get floating;
  external void set floating (bool a_floating);
  /**
   * The margin between the title and the plot area, or if a subtitle is present, the margin between the subtitle and the plot area.
   */
  external num get margin;
  external void set margin (num a_margin);
  /**
   * CSS styles for the title. Use this for font styling, but use <code>align</code>, <code>x</code> and <code>y</code> for text alignment.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The title of the chart. To disable the title, set the <code>text</code> to <code>null</code>.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the text.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The vertical alignment of the title. Can be one of "top", "middle" and "bottom". When a value is given, the title behaves as floating.
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * The x position of the title relative to the alignment within chart.spacingLeft and chart.spacingRight.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position of the title relative to the alignment within <a href="#chart.spacingTop">chart.spacingTop</a> and <a href="#chart.spacingBottom">chart.spacingBottom</a>. By default it depends on the font size.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class Tooltip extends OptionsObject {
  external factory Tooltip ();
  /**
   * Enable or disable animation of the tooltip. In slow legacy IE browsers the animation is disabled by default.
   */
  external bool get animation;
  external void set animation (bool a_animation);
  /**
   * The background color or gradient for the tooltip.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The color of the tooltip border. When <code>null</code>, the border takes the color of the corresponding series or point.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The radius of the rounded border corners.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The pixel width of the tooltip border.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * How many decimals to show for the <code>point.change</code> value when the <code>series.compare</code> option is set. This is overridable in each series' tooltip options object. The default is to preserve all decimals.
   */
  external num get changeDecimals;
  external void set changeDecimals (num a_changeDecimals);
  /**
   * Since 2.1, the crosshair definitions are moved to the Axis object in order for a better separation from the tooltip. See <a href="#xAxis.crosshair">xAxis.crosshair<a>.
   */
  external dynamic get crosshairs;
  external void set crosshairs (dynamic a_crosshairs);
  /**
   * <p>For series on a datetime axes, the date format in the tooltip's header will by default be guessed based on the closest data points. This member gives the default string representations used for each unit.<p>



      <p>Note that when data grouping applies, the date time label formats are pulled from <a href="#plotOptions.series.dataGrouping.dateTimeLabelFormats">dataGrouping.dateTimeLabelFormats</a> instead, because it also allows formatting of time spans.</p>



      <p>For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.</p>



      <p>Defaults to:

      <pre>{

      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"

      }</pre>

      </p>
   */
  external JsObject get date;
  external void set date (JsObject a_date);
  /**
   * Enable or disable the tooltip.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * <p>Whether the tooltip should follow the mouse as it moves across columns, pie slices and other point types with an extent. By default it behaves this way for scatter, bubble and pie series by override in the <code>plotOptions</code> for those series types. </p>

      <p>For touch moves to behave the same way, <a href="#tooltip.followTouchMove">followTouchMove</a> must be <code>true</code> also.</p>
   */
  external bool get followPointer;
  external void set followPointer (bool a_followPointer);
  /**
   * Whether the tooltip should follow the finger as it moves on a touch device. In order to take effect, <a href="#chart.zoomType">chart.zoomType</a> and <a href="#chart.pinchType">chart.pinchType</a> must be disabled.
   */
  external bool get followTouchMove;
  external void set followTouchMove (bool a_followTouchMove);
  /**
   * <p>Callback function to format the text of the tooltip from scratch. Return false to disable tooltip for a specific point on series.</p> <p>A subset of HTML is supported. The HTML of the tooltip is parsed and converted to SVG,  therefore this isn't a complete HTML renderer. The following tabs are supported:  <code>&lt;b&gt;</code>, <code>&lt;strong&gt;</code>, <code>&lt;i&gt;</code>, <code>&lt;em&gt;</code>, <code>&lt;br/&gt;</code>, <code>&lt;span&gt;</code>. Spans can be styled with a <code>style</code> attribute, but only text-related CSS that is  shared with SVG is handled. </p> <p>Since version 2.1 the tooltip can be shared between multiple series through  the <code>shared</code> option. The available data in the formatter differ a bit depending on whether the tooltip is shared or not. In a shared tooltip, all  properties except <code>x</code>, which is common for all points, are kept in  an array, <code>this.points</code>.</p>  <p>Available data are:</p> <dl> 	<dt>this.percentage (not shared) / this.points[i].percentage (shared)</dt> 	<dd>Stacked series and pies only. The point's percentage of the total.</dd> 	 	<dt>this.point (not shared) / this.points[i].point (shared)</dt> 	<dd>The point object. The point name, if defined, is available  through <code>this.point.name</code>.</dd> 	 	<dt>this.points</dt> 	<dd>In a shared tooltip, this is an array containing all other properties for each point.</dd> 	 	<dt>this.series (not shared) / this.points[i].series (shared)</dt> 	<dd>The series object. The series name is available  through <code>this.series.name</code>.</dd>  	<dt>this.total (not shared) / this.points[i].total (shared)</dt> 	<dd>Stacked series only. The total value at this point's x value.</dd> 	 	<dt>this.x</dt> 	<dd>The x value. This property is the same regardless of the tooltip being shared or not.</dd> 	 	<dt>this.y (not shared) / this.points[i].y (shared)</dt> 	<dd>The y value.</dd>  </dl>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * <p>The HTML of the tooltip header line. Variables are enclosed by curly brackets. Available variables			are <code>point.key</code>, <code>series.name</code>, <code>series.color</code> and other members from the <code>point</code> and <code>series</code> objects. The <code>point.key</code> variable contains the category name, x value or datetime string depending on the type of axis. For datetime axes, the <code>point.key</code> date format can be set using tooltip.xDateFormat.</p>


      <p>Defaults to <code>&lt;span style="font-size: 10px"&gt;{point.key}&lt;/span&gt;&lt;br/&gt;</code></p>
   */
  external String get headerFormat;
  external void set headerFormat (String a_headerFormat);
  /**
   * <p>The HTML of the point's line in the tooltip. Variables are enclosed by curly brackets. Available variables are point.x, point.y, point.change, series.name and series.color and other properties on the same form. Furthermore,  point.y can be extended by the tooltip.valuePrefix and tooltip.valueSuffix variables. This can also be overridden for each series, which makes it a good hook for displaying units.</p>
   */
  external String get pointFormat;
  external void set pointFormat (String a_pointFormat);
  /**
   * A callback function for formatting the HTML output for a single point in the tooltip. Like the <code>pointFormat</code> string, but with more flexibility.
   */
  external Function get pointFormatter;
  external void set pointFormatter (Function a_pointFormatter);
  /**
   * <p>A callback function to place the tooltip in a default position. The callback receives three parameters: <code>labelWidth</code>, <code>labelHeight</code> and <code>point</code>, where point contains values for <code>plotX</code> and <code>plotY</code> telling where the reference point is in the plot area. Add <code>chart.plotLeft</code> and <code>chart.plotTop</code> to get the full coordinates.</p>



      <p>The return should be an object containing x and y values, for example <code>{ x: 100, y: 100 }</code>.</p>
   */
  external Function get positioner;
  external void set positioner (Function a_positioner);
  /**
   * Whether to apply a drop shadow to the tooltip.
   */
  external bool get shadow;
  external void set shadow (bool a_shadow);
  /**
   * The name of a symbol to use for the border around the tooltip. In Highstock 1.x, the shape was <code>square</code>.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * When the tooltip is shared, the entire plot area will capture mouse movement or touch events. Tooltip texts for series types with ordered data (not pie, scatter, flags etc) will be shown in a single bubble. This is recommended for single series charts and for tablet/mobile optimized charts.
   */
  external bool get shared;
  external void set shared (bool a_shared);
  /**
   * Proximity snap for graphs or single points. Does not apply to bars, columns and pie slices. It defaults to 10 for mouse-powered devices and 25 for touch  devices. Note that since Highstock 2.1 the whole plot area by default captures pointer events in order to show the tooltip, so for tooltip.snap to make sense, <a href="#plotOptions.series.stickyTracking">stickyTracking</a> must be <code>false</code>.
   */
  external num get snap;
  external void set snap (num a_snap);
  /**
   * CSS styles for the tooltip. The tooltip can also be styled through the CSS

      class <code>.highcharts-tooltip</code>.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Use HTML to render the contents of the tooltip instead of SVG. Using HTML allows advanced formatting like tables and images in the tooltip. It is also recommended for rtl languages as it works around rtl bugs in early Firefox.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * How many decimals to show in each series' y value. This is overridable in each series' tooltip options object.
      The default is to preserve all decimals.
   */
  external num get valueDecimals;
  external void set valueDecimals (num a_valueDecimals);
  /**
   * A string to prepend to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valuePrefix;
  external void set valuePrefix (String a_valuePrefix);
  /**
   * A string to append to each series' y value. Overridable in each series' tooltip options object.
   */
  external String get valueSuffix;
  external void set valueSuffix (String a_valueSuffix);
  /**
   * The format for the date in the tooltip header. If data grouping is used, the default is  a smart guess based on how close the closest points are. It is pulled from the #plotOptions.dataGrouping.dateTimeLabelFormats array.
   */
  external String get xDateFormat;
  external void set xDateFormat (String a_xDateFormat);
}
@JS()
@anonymous
class XAxis extends OptionsObject {
  external factory XAxis ();
  /**
   * Whether to allow decimals in this axis' ticks. When counting integers, like
      persons or hits on a web page, decimals must be avoided in the axis tick
      labels.
   */
  external bool get allowDecimals;
  external void set allowDecimals (bool a_allowDecimals);
  /**
   * When using an alternate grid color, a band is painted across the plot area between every other grid line.
   */
  external dynamic get alternateGridColor;
  external void set alternateGridColor (dynamic a_alternateGridColor);
  /**
   * An array defining breaks in the axis, the sections defined will be left out and all the points shifted closer to each other. Requires that the broken-axis.js module is loaded.
   */
  external List get breaks;
  external void set breaks (List a_breaks);
  /**
   * The highest allowed value for automatically computed axis extremes.
   */
  external num get ceiling;
  external void set ceiling (num a_ceiling);
  /**
   * Configure a crosshair that follows either the mouse pointer or the hovered point. By default, the crosshair is enabled on the X axis and disabled on Y axis.
   */
  external dynamic get crosshair;
  external void set crosshair (dynamic a_crosshair);
  /**
   * For a datetime axis, the scale will automatically adjust to the appropriate unit.  This member gives the default string representations used for each unit. For intermediate values, different units may be used, for example the <code>day</code> unit can be used on midnight and <code>hour</code> unit be used for intermediate values on the same axis. For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.



      Defaults to:

      <pre>{

      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'

      }</pre>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Whether to force the axis to end on a tick. Use this option with the <code>maxPadding</code> option to control the axis end.
   */
  external bool get endOnTick;
  external void set endOnTick (bool a_endOnTick);
  /**
   * Event handlers for the axis.
   */
  external XAxisEvents get events;
  external void set events (XAxisEvents a_events);
  /**
   * The lowest allowed value for automatically computed axis extremes.
   */
  external num get floor;
  external void set floor (num a_floor);
  /**
   * Color of the grid lines extending the ticks across the plot area.
   */
  external dynamic get gridLineColor;
  external void set gridLineColor (dynamic a_gridLineColor);
  /**
   * The dash or dot style of the grid lines. For possible values, see <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this demonstration</a>.
   */
  external String get gridLineDashStyle;
  external void set gridLineDashStyle (String a_gridLineDashStyle);
  /**
   * The width of the grid lines extending the ticks across the plot area.
   */
  external num get gridLineWidth;
  external void set gridLineWidth (num a_gridLineWidth);
  /**
   * The Z index of the grid lines.
   */
  external num get gridZIndex;
  external void set gridZIndex (num a_gridZIndex);
  /**
   * An id for the axis. This can be used after render time to get a pointer to the axis object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * The axis labels show the number or category for each tick.
   */
  external XAxisLabels get labels;
  external void set labels (XAxisLabels a_labels);
  /**
   * The color of the line marking the axis itself.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the line marking the axis itself.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * Index of another axis that this axis is linked to. When an axis is linked to a master axis, it will take the same extremes as the master, but as assigned by min or max or by setExtremes. It can be used to show additional info, or to ease reading the chart by duplicating the scales.
   */
  external num get linkedTo;
  external void set linkedTo (num a_linkedTo);
  /**
   * The maximum value of the axis. If <code>null</code>, the max value is automatically calculated. If the <code>endOnTick</code> option is true, the <code>max</code> value might be rounded up. The actual maximum value is also influenced by  <a class="internal" href="#chart">chart.alignTicks</a>.
   */
  external num get max;
  external void set max (num a_max);
  /**
   * Padding of the max value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the highest data value to appear on the edge of the plot area. When the axis' <code>max</code> option is set or a max extreme is set using <code>axis.setExtremes()</code>, the maxPadding will be ignored.
   */
  external num get maxPadding;
  external void set maxPadding (num a_maxPadding);
  /**
   * Deprecated. Use <code>minRange</code> instead.
   */
  @deprecated
  external num get maxZoom;
  @deprecated
  external void set maxZoom (num a_maxZoom);
  /**
   * The minimum value of the axis. If <code>null</code> the min value is automatically calculated. If the <code>startOnTick</code> option is true, the <code>min</code> value might be rounded down.
   */
  external num get min;
  external void set min (num a_min);
  /**
   * Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. When the axis' <code>min</code> option is set or a min extreme is set using <code>axis.setExtremes()</code>, the minPadding will be ignored.
   */
  external num get minPadding;
  external void set minPadding (num a_minPadding);
  /**
   * <p>The minimum range to display on this axis. The entire axis will not be allowed to span over a smaller interval than this. For example, for a datetime axis the main unit is milliseconds. If minRange is set to 3600000, you can't zoom in more than to one hour.</p>



      <p>The default minRange for the x axis is five times the smallest interval between any of the data points.</p>



      <p>On a logarithmic axis, the unit for the minimum range is the power. So a minRange of 	1 means that the axis can be zoomed to 10-100, 100-1000, 1000-10000 etc.</p>



      <p>Note that the <code>minPadding</code>, <code>maxPadding</code>, <code>startOnTick</code> and <code>endOnTick</code> settings also affect how the extremes of the axis are computed.</p>
   */
  external num get minRange;
  external void set minRange (num a_minRange);
  /**
   * The minimum tick interval allowed in axis values. For example on zooming in on an axis with daily data, this can be used to prevent the axis from showing hours. Defaults to the closest distance between two points on the axis.
   */
  external num get minTickInterval;
  external void set minTickInterval (num a_minTickInterval);
  /**
   * Color of the minor, secondary grid lines.
   */
  external dynamic get minorGridLineColor;
  external void set minorGridLineColor (dynamic a_minorGridLineColor);
  /**
   * The dash or dot style of the minor grid lines. For possible values, see <a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this demonstration</a>.
   */
  external String get minorGridLineDashStyle;
  external void set minorGridLineDashStyle (String a_minorGridLineDashStyle);
  /**
   * Width of the minor, secondary grid lines.
   */
  external num get minorGridLineWidth;
  external void set minorGridLineWidth (num a_minorGridLineWidth);
  /**
   * Color for the minor tick marks.
   */
  external dynamic get minorTickColor;
  external void set minorTickColor (dynamic a_minorTickColor);
  /**
   * <p>Tick interval in scale units for the minor ticks. On a linear axis, if <code>"auto"</code>,

      the minor tick interval is calculated as a fifth of the tickInterval. If

      <code>null</code>, minor ticks are not shown.</p>

      <p>On logarithmic axes, the unit is the power of the value. For example, setting

      the minorTickInterval to 1 puts one tick on each of 0.1, 1, 10, 100 etc. Setting

      the minorTickInterval to 0.1 produces 9 ticks between 1 and 10,

      10 and 100 etc. A minorTickInterval of "auto" on a log axis results in a best guess,

      attempting to enter approximately 5 minor ticks between each major tick.</p>



      <p>If user settings dictate minor ticks to become too dense, they don't make sense, and will be ignored to prevent performance problems.</a>
   */
  external dynamic get minorTickInterval;
  external void set minorTickInterval (dynamic a_minorTickInterval);
  /**
   * The pixel length of the minor tick marks.
   */
  external num get minorTickLength;
  external void set minorTickLength (num a_minorTickLength);
  /**
   * The position of the minor tick marks relative to the axis line. Can be one of <code>inside</code> and <code>outside</code>.
   */
  external String get minorTickPosition;
  external void set minorTickPosition (String a_minorTickPosition);
  /**
   * The pixel width of the minor tick mark.
   */
  external num get minorTickWidth;
  external void set minorTickWidth (num a_minorTickWidth);
  /**
   * The distance in pixels from the plot area to the axis line. A positive offset moves the axis with it's line, labels and ticks away from the plot area. This is typically used when two or more axes are displayed on the same side of the plot.
   */
  external num get offset;
  external void set offset (num a_offset);
  /**
   * Whether to display the axis on the opposite side of the normal. The normal is on the left side for vertical axes and bottom for horizontal, so the opposite sides will be right and top respectively. This is typically used with dual or multiple axes.
   */
  external bool get opposite;
  external void set opposite (bool a_opposite);
  /**
   * In an ordinal axis, the points are equally spaced in the chart regardless of the actual time or x distance between them. This means that missing data for nights or weekends will not take  up space in the chart.
   */
  external bool get ordinal;
  external void set ordinal (bool a_ordinal);
  /**
   * An array of colored bands stretching across the plot area marking an interval on the axis.
   */
  external List<JsObject> get plotBands;
  external void set plotBands (List<JsObject> a_plotBands);
  /**
   * An array of lines stretching across the plot area, marking a specific value on one of the axes.
   */
  external List<JsObject> get plotLines;
  external void set plotLines (List<JsObject> a_plotLines);
  /**
   * The zoomed range to display when only defining one or none of <code>min</code> or <code>max</code>.  For example, to show the latest month, a range of one month can be set.
   */
  external num get range;
  external void set range (num a_range);
  /**
   * Whether to reverse the axis so that the highest number is closest to the origin.
   */
  external bool get reversed;
  external void set reversed (bool a_reversed);
  /**
   * Whether to show the axis line and title when the axis has no data.
   */
  external bool get showEmpty;
  external void set showEmpty (bool a_showEmpty);
  /**
   * Whether to show the first tick label.
   */
  external bool get showFirstLabel;
  external void set showFirstLabel (bool a_showFirstLabel);
  /**
   * Whether to show the last tick label.
   */
  external bool get showLastLabel;
  external void set showLastLabel (bool a_showLastLabel);
  /**
   * For datetime axes, this decides where to put the tick between weeks. 0 = Sunday, 1 = Monday.
   */
  external num get startOfWeek;
  external void set startOfWeek (num a_startOfWeek);
  /**
   * Whether to force the axis to start on a tick. Use this option with the <code>minPadding</code> option to control the axis start. In Highstock, startOnTick is allways false when the navigator is enabled, to prevent jumpy scrolling.
   */
  external bool get startOnTick;
  external void set startOnTick (bool a_startOnTick);
  /**
   * <p>The amount of ticks to draw on the axis. This opens up for aligning the ticks of multiple charts or panes within a chart. This option overrides the <code>tickPixelInterval</code> option.</p>

      <p>This option only has an effect on linear axes. Datetime, logarithmic or category axes are not affected.</p>
   */
  external num get tickAmount;
  external void set tickAmount (num a_tickAmount);
  /**
   * Color for the main tick marks.
   */
  external dynamic get tickColor;
  external void set tickColor (dynamic a_tickColor);
  /**
   * <p>The interval of the tick marks in axis units. When <code>null</code>, the tick interval is computed to approximately follow the tickPixelInterval on linear and datetime axes. On categorized axes, a <code>null</code> tickInterval will default to 1, one category.  Note that datetime axes are based on milliseconds, so for  example an interval of one day is expressed as <code>24 * 3600 * 1000</code>.</p>

      <p>If the tickInterval is too dense for labels to be drawn, Highcharts may remove ticks.</p>
   */
  external dynamic get tickInterval;
  external void set tickInterval (dynamic a_tickInterval);
  /**
   * The pixel length of the main tick marks.
   */
  external num get tickLength;
  external void set tickLength (num a_tickLength);
  /**
   * If tickInterval is <code>null</code> this option sets the approximate pixel interval of the tick marks. Not applicable to categorized axis. Defaults to <code>72</code>  for the Y axis and <code>100</code> for	the X axis.
   */
  external num get tickPixelInterval;
  external void set tickPixelInterval (num a_tickPixelInterval);
  /**
   * The position of the major tick marks relative to the axis line. Can be one of <code>inside</code> and <code>outside</code>.
   */
  external String get tickPosition;
  external void set tickPosition (String a_tickPosition);
  /**
   * A callback function to compute on what values the ticks should be placed. Returns an array of numbers. The <code>min</code> and <code>max</code> of the axis are passed in as the first and second parameter. Options like <code>tickInterval</code> can be accessed by  <code>this.options.tickInterval</code>. The automatic tick positions are accessible through <code>this.tickPositions</code> and can be modified by the callback.Note that in stock charts, the last label is hidden by  default by the <code>showLastLabel</code> option.
   */
  external Function get tickPositioner;
  external void set tickPositioner (Function a_tickPositioner);
  /**
   * A collection of hard coded tick value positions. This overrides the auto computed positions based on tickInterval and tickPixelInterval. See also <code>tickPositioner</code>.
   */
  external List<num> get tickPositions;
  external void set tickPositions (List<num> a_tickPositions);
  /**
   * The pixel width of the major tick marks.
   */
  external num get tickWidth;
  external void set tickWidth (num a_tickWidth);
  /**
   * The axis title, showing next to the axis line.
   */
  external XAxisTitle get title;
  external void set title (XAxisTitle a_title);
  /**
   * Datetime axis only. An array determining what time intervals the ticks are allowed to fall on. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:

      <pre>units: [[

      'millisecond', // unit name

      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples

      ], [

      'second',

      [1, 2, 5, 10, 15, 30]

      ], [

      'minute',

      [1, 2, 5, 10, 15, 30]

      ], [

      'hour',

      [1, 2, 3, 4, 6, 8, 12]

      ], [

      'day',

      [1]

      ], [

      'week',

      [1]

      ], [

      'month',

      [1, 3, 6]

      ], [

      'year',

      null

      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
  /**
   * Whether axis, including axis title, line, ticks and labels, should be visible.
   */
  external bool get visible;
  external void set visible (bool a_visible);
}
@JS()
@anonymous
class XAxisBreaks extends OptionsObject {
  external factory XAxisBreaks ();
  /**
   * A number indicating how much space should be left between the start and the end of the break. The break size is given in axis units, so for instance on a <code>datetime</code> axis, a break size of 3600000 would indicate the equivalent of an hour.
   */
  external num get breakSize;
  external void set breakSize (num a_breakSize);
  /**
   * The point where the break starts.
   */
  external num get from;
  external void set from (num a_from);
  /**
   * Defines an interval after which the break appears again. By default the breaks do not repeat.
   */
  external num get repeat;
  external void set repeat (num a_repeat);
  /**
   * The point where the break ends.
   */
  external num get to;
  external void set to (num a_to);
}
@JS()
@anonymous
class XAxisCrosshair extends OptionsObject {
  external factory XAxisCrosshair ();
  /**
   * The color of the crosshair.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * The dash style for the crosshair. See <a href="#plotOptions.series.dashStyle">series.dashStyle</a> for possible values.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * A label on the axis next to the crosshair.
   */
  external JsObject get label;
  external void set label (JsObject a_label);
  /**
   * Whether the crosshair should snap to the point or follow the pointer independent of points.
   */
  external bool get snap;
  external void set snap (bool a_snap);
  /**
   * The pixel width of the crosshair.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The Z index of the crosshair. Higher Z indices allow drawing the crosshair on top of the series or behind the grid lines.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class XAxisCrosshairLabel extends OptionsObject {
  external factory XAxisCrosshairLabel ();
  /**
   * Alignment of the label compared to the axis. Defaults to <code>left</code> for right-side axes, <code>right</code> for left-side axes and <code>center</code> for horizontal axes.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * The background color for the label. Defaults to the related series color, or <code>gray</code> if that is not available.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The border color for the crosshair label
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border corner radius of the crosshair label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width for the crosshair label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * A format string for the crosshair label. Defaults to <code>{value}</code> for numeric axes and <code>{value:%b %d, %Y}</code> for datetime axes.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Formatter function for the label text.
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * Padding inside the crosshair label.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * The shape to use for the label box.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Text styles for the crosshair label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class XAxisEvents extends OptionsObject {
  external factory XAxisEvents ();
  /**
   * As opposed to the <code>setExtremes</code> event, this event fires after the final min and max values are computed and corrected for <code>minRange</code>.
   */
  external Function get afterSetExtremes;
  external void set afterSetExtremes (Function a_afterSetExtremes);
  /**
   * An event fired when a point falls inside a break from this axis.
   */
  external Function get pointInBreak;
  external void set pointInBreak (Function a_pointInBreak);
  /**
   * <p>Fires when the minimum and maximum is set for the axis, either by calling the <code>.setExtremes()</code> method or by selecting an area in the chart. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on which library is used as the base for Highcharts.</p>



      <p>The new user set minimum and maximum values can be found by <code>event.min</code> and <code>event.max</code>. When an axis is zoomed all the way out from the "Reset zoom" button, <code>event.min</code> and <code>event.max</code> are null, and the new extremes are set based on <code>this.dataMin</code> and <code>this.dataMax</code>.</p>
   */
  external Function get setExtremes;
  external void set setExtremes (Function a_setExtremes);
}
@JS()
@anonymous
class XAxisLabels extends OptionsObject {
  external factory XAxisLabels ();
  /**
   * What part of the string the given position is anchored to. Can be one of <code>"left"</code>, <code>"center"</code> or <code>"right"</code>. Defaults to an intelligent guess based on which side of the chart the axis is on and the rotation of the label.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * For horizontal axes, the allowed degrees of label rotation to prevent overlapping labels. If there is enough space, labels are not rotated. As the chart gets narrower, it will start rotating the labels -45 degrees, then remove every second label and try again with rotations 0 and -45 etc. Set it to <code>false</code> to disable rotation, which will cause the labels to word-wrap if possible.
   */
  external List<num> get autoRotation;
  external void set autoRotation (List<num> a_autoRotation);
  /**
   * Enable or disable the axis labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the axis label.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the label. The value is
      given by <code>this.value</code>. Additional properties for <code>this</code> are
      <code>axis</code>, <code>chart</code>, <code>isFirst</code> and <code>isLast</code>.
      Defaults to:

      <pre>function() {

      return this.value;

      }</pre>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * Horizontal axis only. When <code>staggerLines</code> is not set, <code>maxStaggerLines</code> defines how many lines the axis is allowed to add to automatically avoid overlapping X labels. Set to <code>1</code> to disable overlap detection.
   */
  @deprecated
  external num get maxStaggerLines;
  @deprecated
  external void set maxStaggerLines (num a_maxStaggerLines);
  /**
   * How to handle overflowing labels on horizontal axis. Can be undefined, <code>false</code> or <code>"justify"</code>. By default it aligns inside the chart area. If "justify", labels will not render outside the plot area. If <code>false</code>, it will not be aligned at all. If there is room to move it, it will be aligned to the edge, else it will be removed.
   */
  @deprecated
  external String get overflow;
  @deprecated
  external void set overflow (String a_overflow);
  /**
   * Rotation of the labels in degrees.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * Horizontal axes only. The number of lines to spread the labels over to make room or tighter labels.  .
   */
  external num get staggerLines;
  external void set staggerLines (num a_staggerLines);
  /**
   * To show only every <em>n</em>'th label on the axis, set the step to <em>n</em>. Setting the step to 2 shows every other label.
   */
  external num get step;
  external void set step (num a_step);
  /**
   * CSS styles for the label. Use <code>whiteSpace: 'nowrap'</code> to prevent wrapping of category labels. Use <code>textOverflow: 'none'</code> to prevent ellipsis (dots).
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The x position offset of the label relative to the tick position on the axis.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the tick position on the axis. The default makes it adapt to the font size on bottom axis.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index for the axis labels.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class XAxisPlotBands extends OptionsObject {
  external factory XAxisPlotBands ();
  /**
   * Border color for the plot band. Also requires <code>borderWidth</code> to be set.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * Border width for the plot band.  Also requires <code>borderColor</code> to be set.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The color of the plot band.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * An object defining mouse events for the plot band. Supported properties are <code>click</code>, <code>mouseover</code>, <code>mouseout</code>, <code>mousemove</code>.
   */
  external JsObject get events;
  external void set events (JsObject a_events);
  /**
   * The start position of the plot band in axis units.
   */
  external num get from;
  external void set from (num a_from);
  /**
   * An id used for identifying the plot band in Axis.removePlotBand.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * Text labels for the plot bands
   */
  external XAxisPlotBandsLabel get label;
  external void set label (XAxisPlotBandsLabel a_label);
  /**
   * The end position of the plot band in axis units.
   */
  external num get to;
  external void set to (num a_to);
  /**
   * The z index of the plot band within the chart, relative to other elements. Using the same z index as another element may give unpredictable results, as the last rendered element will be on top. Values from 0 to 20 make sense.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class XAxisPlotBandsLabel extends OptionsObject {
  external factory XAxisPlotBandsLabel ();
  /**
   * Horizontal alignment of the label. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Rotation of the text label in degrees .
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the text label.
   */
  external JsObject get style;
  external void set style (JsObject a_style);
  /**
   * The text alignment for the label. While <code>align</code> determines where the texts anchor point is placed within the plot band, <code>textAlign</code> determines how the text is aligned against its anchor point. Possible values are "left", "center" and "right". Defaults to the same as the <code>align</code> option.
   */
  external String get textAlign;
  external void set textAlign (String a_textAlign);
  /**
   * <p>Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Vertical alignment of the label relative to the plot band. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * Horizontal position relative the alignment. Default varies by orientation.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical position of the text baseline relative to the alignment. Default varies by orientation.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class XAxisPlotLines extends OptionsObject {
  external factory XAxisPlotLines ();
  /**
   * The color of the line.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * The dashing or dot style for the plot line. For possible values see <a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this overview</a>.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An object defining mouse events for the plot line. Supported properties are <code>click</code>, <code>mouseover</code>, <code>mouseout</code>, <code>mousemove</code>.
   */
  external JsObject get events;
  external void set events (JsObject a_events);
  /**
   * An id used for identifying the plot line in Axis.removePlotLine.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * Text labels for the plot bands
   */
  external XAxisPlotLinesLabel get label;
  external void set label (XAxisPlotLinesLabel a_label);
  /**
   * The position of the line in axis units.
   */
  external num get value;
  external void set value (num a_value);
  /**
   * The width or thickness of the plot line.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The z index of the plot line within the chart.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class XAxisPlotLinesLabel extends OptionsObject {
  external factory XAxisPlotLinesLabel ();
  /**
   * Horizontal alignment of the label. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Rotation of the text label in degrees. Defaults to 0 for horizontal plot lines and 90 for vertical lines.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the text label.
   */
  external JsObject get style;
  external void set style (JsObject a_style);
  /**
   * The text alignment for the label. While <code>align</code> determines where the texts anchor point is placed within the plot band, <code>textAlign</code> determines how the text is aligned against its anchor point. Possible values are "left", "center" and "right". Defaults to the same as the <code>align</code> option.
   */
  external String get textAlign;
  external void set textAlign (String a_textAlign);
  /**
   * <p>Whether to <a href="http://docs.highcharts.com/#formatting$html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Vertical alignment of the label relative to the plot line. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * Horizontal position relative the alignment. Default varies by orientation.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical position of the text baseline relative to the alignment. Default varies by orientation.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class XAxisTitle extends OptionsObject {
  external factory XAxisTitle ();
  /**
   * Alignment of the title relative to the axis values. Possible values are "low", "middle" or "high".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * The pixel distance between the axis labels or line and the title. Defaults to 0 for horizontal axes, 10 for vertical
   */
  external num get margin;
  external void set margin (num a_margin);
  /**
   * The distance of the axis title from the axis line. By default, this distance is  computed from the offset width of the labels, the labels' distance from  the axis and the title's margin. However when the offset option is set, it overrides all this.
   */
  external num get offset;
  external void set offset (num a_offset);
  /**
   * The rotation of the text in degrees. 0 is horizontal, 270 is vertical reading from bottom to top.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the title. When titles are rotated they are rendered using vector graphic techniques and not all styles are applicable.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The actual text of the axis title. It can contain basic HTML text markup like &lt;b&gt;, &lt;i&gt; and spans with style.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * Horizontal pixel offset of the title position.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical pixel offset of the title position.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class YAxis extends Axis {
  external factory YAxis ();
  /**
   * Whether to allow decimals in this axis' ticks. When counting integers, like
      persons or hits on a web page, decimals must be avoided in the axis tick
      labels.
   */
  external bool get allowDecimals;
  external void set allowDecimals (bool a_allowDecimals);
  /**
   * When using an alternate grid color, a band is painted across the plot area between every other grid line.
   */
  external dynamic get alternateGridColor;
  external void set alternateGridColor (dynamic a_alternateGridColor);
  /**
   * An array defining breaks in the axis, the sections defined will be left out and all the points shifted closer to each other. Requires that the broken-axis.js module is loaded.
   */
  external List get breaks;
  external void set breaks (List a_breaks);
  /**
   * The highest allowed value for automatically computed axis extremes.
   */
  external num get ceiling;
  external void set ceiling (num a_ceiling);
  /**
   * Configure a crosshair that follows either the mouse pointer or the hovered point. By default, the crosshair is enabled on the X axis and disabled on Y axis.
   */
  external dynamic get crosshair;
  external void set crosshair (dynamic a_crosshair);
  /**
   * For a datetime axis, the scale will automatically adjust to the appropriate unit.  This member gives the default string representations used for each unit. For intermediate values, different units may be used, for example the <code>day</code> unit can be used on midnight and <code>hour</code> unit be used for intermediate values on the same axis. For an overview of the replacement codes, see <a href="#Highcharts.dateFormat">dateFormat</a>.



      Defaults to:

      <pre>{

      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'

      }</pre>
   */
  external JsObject get dateTimeLabelFormats;
  external void set dateTimeLabelFormats (JsObject a_dateTimeLabelFormats);
  /**
   * Whether to force the axis to end on a tick. Use this option with the <code>maxPadding</code> option to control the axis end.
   */
  external bool get endOnTick;
  external void set endOnTick (bool a_endOnTick);
  /**
   * null
   */
  external YAxisEvents get events;
  external void set events (YAxisEvents a_events);
  /**
   * The lowest allowed value for automatically computed axis extremes.
   */
  external num get floor;
  external void set floor (num a_floor);
  /**
   * Color of the grid lines extending the ticks across the plot area.
   */
  external dynamic get gridLineColor;
  external void set gridLineColor (dynamic a_gridLineColor);
  /**
   * The dash or dot style of the grid lines. For possible values, see <a href="http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this demonstration</a>.
   */
  external String get gridLineDashStyle;
  external void set gridLineDashStyle (String a_gridLineDashStyle);
  /**
   * The width of the grid lines extending the ticks across the plot area.
   */
  external num get gridLineWidth;
  external void set gridLineWidth (num a_gridLineWidth);
  /**
   * The Z index of the grid lines.
   */
  external num get gridZIndex;
  external void set gridZIndex (num a_gridZIndex);
  /**
   * <p>The height of the Y axis. If it's a number, it is interpreted as pixels.</p>

      <p>Since Highstock 2: If it's a percentage string, it is interpreted as percentages of the total plot height.</p>
   */
  external dynamic get height;
  external void set height (dynamic a_height);
  /**
   * An id for the axis. This can be used after render time to get a pointer to the axis object through <code>chart.get()</code>.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * null
   */
  external YAxisLabels get labels;
  external void set labels (YAxisLabels a_labels);
  /**
   * The color of the line marking the axis itself.
   */
  external dynamic get lineColor;
  external void set lineColor (dynamic a_lineColor);
  /**
   * The width of the line marking the axis itself.
   */
  external num get lineWidth;
  external void set lineWidth (num a_lineWidth);
  /**
   * Index of another axis that this axis is linked to. When an axis is linked to a master axis, it will take the same extremes as the master, but as assigned by min or max or by setExtremes. It can be used to show additional info, or to ease reading the chart by duplicating the scales.
   */
  external num get linkedTo;
  external void set linkedTo (num a_linkedTo);
  /**
   * The maximum value of the axis. If <code>null</code>, the max value is automatically calculated. If the <code>endOnTick</code> option is true, the <code>max</code> value might be rounded up. The actual maximum value is also influenced by  <a class="internal" href="#chart">chart.alignTicks</a>.
   */
  external num get max;
  external void set max (num a_max);
  /**
   * Padding of the max value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the highest data value to appear on the edge of the plot area. When the axis' <code>max</code> option is set or a max extreme is set using <code>axis.setExtremes()</code>, the maxPadding will be ignored.
   */
  external num get maxPadding;
  external void set maxPadding (num a_maxPadding);
  /**
   * Deprecated. Use <code>minRange</code> instead.
   */
  @deprecated
  external num get maxZoom;
  @deprecated
  external void set maxZoom (num a_maxZoom);
  /**
   * <p>The minimum value of the axis. If <code>null</code> the min value is automatically calculated.</p>



      <p>If the <code>startOnTick</code> option is true, the <code>min</code> value might be rounded down.</p>



      <p>The automatically calculated minimum value is also affected by <a href="#yAxis.floor">floor</a>, <a href="#yAxis.minPadding">minPadding</a>, <a href="#yAxis.minRange">minRange</a> as well as <a href="#plotOptions.series.threshold">series.threshold</a> and <a href="#plotOptions.series.softThreshold">series.softThreshold</a>.</p>
   */
  external num get min;
  external void set min (num a_min);
  /**
   * Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. When the axis' <code>min</code> option is set or a min extreme is set using <code>axis.setExtremes()</code>, the minPadding will be ignored.
   */
  external num get minPadding;
  external void set minPadding (num a_minPadding);
  /**
   * <p>The minimum range to display on this axis. The entire axis will not be allowed to span over a smaller interval than this. For example, for a datetime axis the main unit is milliseconds. If minRange is set to 3600000, you can't zoom in more than to one hour.</p>



      <p>The default minRange for the x axis is five times the smallest interval between any of the data points.</p>



      <p>On a logarithmic axis, the unit for the minimum range is the power. So a minRange of 	1 means that the axis can be zoomed to 10-100, 100-1000, 1000-10000 etc.</p>



      <p>Note that the <code>minPadding</code>, <code>maxPadding</code>, <code>startOnTick</code> and <code>endOnTick</code> settings also affect how the extremes of the axis are computed.</p>
   */
  external num get minRange;
  external void set minRange (num a_minRange);
  /**
   * The minimum tick interval allowed in axis values. For example on zooming in on an axis with daily data, this can be used to prevent the axis from showing hours. Defaults to the closest distance between two points on the axis.
   */
  external num get minTickInterval;
  external void set minTickInterval (num a_minTickInterval);
  /**
   * Color of the minor, secondary grid lines.
   */
  external dynamic get minorGridLineColor;
  external void set minorGridLineColor (dynamic a_minorGridLineColor);
  /**
   * The dash or dot style of the minor grid lines. For possible values, see <a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this demonstration</a>.
   */
  external String get minorGridLineDashStyle;
  external void set minorGridLineDashStyle (String a_minorGridLineDashStyle);
  /**
   * Width of the minor, secondary grid lines.
   */
  external num get minorGridLineWidth;
  external void set minorGridLineWidth (num a_minorGridLineWidth);
  /**
   * Color for the minor tick marks.
   */
  external dynamic get minorTickColor;
  external void set minorTickColor (dynamic a_minorTickColor);
  /**
   * <p>Tick interval in scale units for the minor ticks. On a linear axis, if <code>"auto"</code>,

      the minor tick interval is calculated as a fifth of the tickInterval. If

      <code>null</code>, minor ticks are not shown.</p>

      <p>On logarithmic axes, the unit is the power of the value. For example, setting

      the minorTickInterval to 1 puts one tick on each of 0.1, 1, 10, 100 etc. Setting

      the minorTickInterval to 0.1 produces 9 ticks between 1 and 10,

      10 and 100 etc. A minorTickInterval of "auto" on a log axis results in a best guess,

      attempting to enter approximately 5 minor ticks between each major tick.</p>



      <p>If user settings dictate minor ticks to become too dense, they don't make sense, and will be ignored to prevent performance problems.</a>
   */
  external dynamic get minorTickInterval;
  external void set minorTickInterval (dynamic a_minorTickInterval);
  /**
   * The pixel length of the minor tick marks.
   */
  external num get minorTickLength;
  external void set minorTickLength (num a_minorTickLength);
  /**
   * The position of the minor tick marks relative to the axis line. Can be one of <code>inside</code> and <code>outside</code>.
   */
  external String get minorTickPosition;
  external void set minorTickPosition (String a_minorTickPosition);
  /**
   * The pixel width of the minor tick mark.
   */
  external num get minorTickWidth;
  external void set minorTickWidth (num a_minorTickWidth);
  /**
   * The distance in pixels from the plot area to the axis line. A positive offset moves the axis with it's line, labels and ticks away from the plot area. This is typically used when two or more axes are displayed on the same side of the plot.
   */
  external num get offset;
  external void set offset (num a_offset);
  /**
   * Whether to display the axis on the opposite side of the normal. The normal is on the left side for vertical axes and bottom for horizontal, so the opposite sides will be right and top respectively. In Highstock 1.x, the Y axis was placed on the left side by default.
   */
  external bool get opposite;
  external void set opposite (bool a_opposite);
  /**
   * In an ordinal axis, the points are equally spaced in the chart regardless of the actual time or x distance between them. This means that missing data for nights or weekends will not take  up space in the chart.
   */
  external bool get ordinal;
  external void set ordinal (bool a_ordinal);
  /**
   * An array of objects defining plot bands on the Y axis.
   */
  external List<JsObject> get plotBands;
  external void set plotBands (List<JsObject> a_plotBands);
  /**
   * An array of lines stretching across the plot area, marking a specific value on one of the axes.
   */
  external List<JsObject> get plotLines;
  external void set plotLines (List<JsObject> a_plotLines);
  /**
   * The zoomed range to display when only defining one or none of <code>min</code> or <code>max</code>.  For example, to show the latest month, a range of one month can be set.
   */
  external num get range;
  external void set range (num a_range);
  /**
   * Whether to reverse the axis so that the highest number is closest to the origin.
   */
  external bool get reversed;
  external void set reversed (bool a_reversed);
  /**
   * If <code>true</code>, the first series in a stack will be drawn on top in a positive, non-reversed Y axis. If <code>false</code>, the first series is in the base of the stack.
   */
  external bool get reversedStacks;
  external void set reversedStacks (bool a_reversedStacks);
  /**
   * Whether to show the axis line and title when the axis has no data.
   */
  external bool get showEmpty;
  external void set showEmpty (bool a_showEmpty);
  /**
   * Whether to show the first tick label.
   */
  external bool get showFirstLabel;
  external void set showFirstLabel (bool a_showFirstLabel);
  /**
   * Whether to show the last tick label.
   */
  external bool get showLastLabel;
  external void set showLastLabel (bool a_showLastLabel);
  /**
   * For datetime axes, this decides where to put the tick between weeks. 0 = Sunday, 1 = Monday.
   */
  external num get startOfWeek;
  external void set startOfWeek (num a_startOfWeek);
  /**
   * Whether to force the axis to start on a tick. Use this option with the <code>maxPadding</code> option to control the axis start.
   */
  external bool get startOnTick;
  external void set startOnTick (bool a_startOnTick);
  /**
   * <p>The amount of ticks to draw on the axis. This opens up for aligning the ticks of multiple charts or panes within a chart. This option overrides the <code>tickPixelInterval</code> option.</p>

      <p>This option only has an effect on linear axes. Datetime, logarithmic or category axes are not affected.</p>
   */
  external num get tickAmount;
  external void set tickAmount (num a_tickAmount);
  /**
   * Color for the main tick marks.
   */
  external dynamic get tickColor;
  external void set tickColor (dynamic a_tickColor);
  /**
   * <p>The interval of the tick marks in axis units. When <code>null</code>, the tick interval is computed to approximately follow the tickPixelInterval on linear and datetime axes. On categorized axes, a <code>null</code> tickInterval will default to 1, one category.  Note that datetime axes are based on milliseconds, so for  example an interval of one day is expressed as <code>24 * 3600 * 1000</code>.</p>

      <p>If the tickInterval is too dense for labels to be drawn, Highcharts may remove ticks.</p>
   */
  external dynamic get tickInterval;
  external void set tickInterval (dynamic a_tickInterval);
  /**
   * The pixel length of the main tick marks.
   */
  external num get tickLength;
  external void set tickLength (num a_tickLength);
  /**
   * If tickInterval is <code>null</code> this option sets the approximate pixel interval of the tick marks. Not applicable to categorized axis. Defaults to <code>72</code>  for the Y axis and <code>100</code> for	the X axis.
   */
  external num get tickPixelInterval;
  external void set tickPixelInterval (num a_tickPixelInterval);
  /**
   * The position of the major tick marks relative to the axis line. Can be one of <code>inside</code> and <code>outside</code>.
   */
  external String get tickPosition;
  external void set tickPosition (String a_tickPosition);
  /**
   * A callback function to compute on what values the ticks should be placed. Returns an array of numbers. The <code>min</code> and <code>max</code> of the axis are passed in as the first and second parameter. Options like <code>tickInterval</code> can be accessed by  <code>this.options.tickInterval</code>. The automatic tick positions are accessible through <code>this.tickPositions</code> and can be modified by the callback.Note that in stock charts, the last label is hidden by  default by the <code>showLastLabel</code> option.
   */
  external Function get tickPositioner;
  external void set tickPositioner (Function a_tickPositioner);
  /**
   * A collection of hard coded tick value positions. This overrides the auto computed positions based on tickInterval and tickPixelInterval. See also <code>tickPositioner</code>.
   */
  external List<num> get tickPositions;
  external void set tickPositions (List<num> a_tickPositions);
  /**
   * The pixel width of the major tick marks.
   */
  external num get tickWidth;
  external void set tickWidth (num a_tickWidth);
  /**
   * null
   */
  external YAxisTitle get title;
  external void set title (YAxisTitle a_title);
  /**
   * <p>The top position of the Y axis. If it's a number, it is interpreted as pixel position relative to the chart.</p>

      <p>Since Highstock 2: If it's a percentage string, it is interpreted as percentages of the plot height, offset from plot area top.</p>
   */
  external dynamic get top;
  external void set top (dynamic a_top);
  /**
   * Datetime axis only. An array determining what time intervals the ticks are allowed to fall on. Each array item is an array where the first value is the time unit and the  second value another array of allowed multiples. Defaults to:

      <pre>units: [[

      'millisecond', // unit name

      [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples

      ], [

      'second',

      [1, 2, 5, 10, 15, 30]

      ], [

      'minute',

      [1, 2, 5, 10, 15, 30]

      ], [

      'hour',

      [1, 2, 3, 4, 6, 8, 12]

      ], [

      'day',

      [1]

      ], [

      'week',

      [1]

      ], [

      'month',

      [1, 3, 6]

      ], [

      'year',

      null

      ]]</pre>
   */
  external List get units;
  external void set units (List a_units);
  /**
   * Whether axis, including axis title, line, ticks and labels, should be visible.
   */
  external bool get visible;
  external void set visible (bool a_visible);
}
@JS()
@anonymous
class YAxisBreaks extends OptionsObject {
  external factory YAxisBreaks ();
  /**
   * A number indicating how much space should be left between the start and the end of the break. The break size is given in axis units, so for instance on a <code>datetime</code> axis, a break size of 3600000 would indicate the equivalent of an hour.
   */
  external num get breakSize;
  external void set breakSize (num a_breakSize);
  /**
   * The point where the break starts.
   */
  external num get from;
  external void set from (num a_from);
  /**
   * Defines an interval after which the break appears again. By default the breaks do not repeat.
   */
  external num get repeat;
  external void set repeat (num a_repeat);
  /**
   * The point where the break ends.
   */
  external num get to;
  external void set to (num a_to);
}
@JS()
@anonymous
class YAxisCrosshair extends OptionsObject {
  external factory YAxisCrosshair ();
  /**
   * The color of the crosshair.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * The dash style for the crosshair. See <a href="#plotOptions.series.dashStyle">series.dashStyle</a> for possible values.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * A label on the axis next to the crosshair.
   */
  external JsObject get label;
  external void set label (JsObject a_label);
  /**
   * Whether the crosshair should snap to the point or follow the pointer independent of points.
   */
  external bool get snap;
  external void set snap (bool a_snap);
  /**
   * The pixel width of the crosshair.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The Z index of the crosshair. Higher Z indices allow drawing the crosshair on top of the series or behind the grid lines.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class YAxisCrosshairLabel extends OptionsObject {
  external factory YAxisCrosshairLabel ();
  /**
   * Alignment of the label compared to the axis. Defaults to <code>left</code> for right-side axes, <code>right</code> for left-side axes and <code>center</code> for horizontal axes.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * The background color for the label. Defaults to the related series color, or <code>gray</code> if that is not available.
   */
  external dynamic get backgroundColor;
  external void set backgroundColor (dynamic a_backgroundColor);
  /**
   * The border color for the crosshair label
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * The border corner radius of the crosshair label.
   */
  external num get borderRadius;
  external void set borderRadius (num a_borderRadius);
  /**
   * The border width for the crosshair label.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * A format string for the crosshair label. Defaults to <code>{value}</code> for numeric axes and <code>{value:%b %d, %Y}</code> for datetime axes.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Formatter function for the label text.
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * Padding inside the crosshair label.
   */
  external num get padding;
  external void set padding (num a_padding);
  /**
   * The shape to use for the label box.
   */
  external String get shape;
  external void set shape (String a_shape);
  /**
   * Text styles for the crosshair label.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
}
@JS()
@anonymous
class YAxisEvents extends OptionsObject {
  external factory YAxisEvents ();
  /**
   * As opposed to the <code>setExtremes</code> event, this event fires after the final min and max values are computed and corrected for <code>minRange</code>.
   */
  external Function get afterSetExtremes;
  external void set afterSetExtremes (Function a_afterSetExtremes);
  /**
   * An event fired when a point falls inside a break from this axis.
   */
  external Function get pointInBreak;
  external void set pointInBreak (Function a_pointInBreak);
  /**
   * <p>Fires when the minimum and maximum is set for the axis, either by calling the <code>.setExtremes()</code> method or by selecting an area in the chart. One parameter, <code>event</code>, is passed to the function. This contains common event information based on jQuery or MooTools depending on which library is used as the base for Highcharts.</p>



      <p>The new user set minimum and maximum values can be found by <code>event.min</code> and <code>event.max</code>. When an axis is zoomed all the way out from the "Reset zoom" button, <code>event.min</code> and <code>event.max</code> are null, and the new extremes are set based on <code>this.dataMin</code> and <code>this.dataMax</code>.</p>
   */
  external Function get setExtremes;
  external void set setExtremes (Function a_setExtremes);
}
@JS()
@anonymous
class YAxisLabels extends OptionsObject {
  external factory YAxisLabels ();
  /**
   * What part of the string the given position is anchored to.  Can be one of <code>"left"</code>, <code>"center"</code> or <code>"right"</code>.
   */
  external String get align;
  external void set align (String a_align);
  /**
   * For horizontal axes, the allowed degrees of label rotation to prevent overlapping labels. If there is enough space, labels are not rotated. As the chart gets narrower, it will start rotating the labels -45 degrees, then remove every second label and try again with rotations 0 and -45 etc. Set it to <code>false</code> to disable rotation, which will cause the labels to word-wrap if possible.
   */
  external List<num> get autoRotation;
  external void set autoRotation (List<num> a_autoRotation);
  /**
   * Enable or disable the axis labels.
   */
  external bool get enabled;
  external void set enabled (bool a_enabled);
  /**
   * A <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting">format string</a> for the axis label.
   */
  external String get format;
  external void set format (String a_format);
  /**
   * Callback JavaScript function to format the label. The value is
      given by <code>this.value</code>. Additional properties for <code>this</code> are
      <code>axis</code>, <code>chart</code>, <code>isFirst</code> and <code>isLast</code>.
      Defaults to:

      <pre>function() {

      return this.value;

      }</pre>
   */
  external Function get formatter;
  external void set formatter (Function a_formatter);
  /**
   * Rotation of the labels in degrees.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the label. Use <code>whiteSpace: 'nowrap'</code> to prevent wrapping of category labels. Use <code>textOverflow: 'none'</code> to prevent ellipsis (dots).
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * The x position offset of the label relative to the tick position on the axis.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * The y position offset of the label relative to the tick position on the axis.
   */
  external num get y;
  external void set y (num a_y);
  /**
   * The Z index for the axis labels.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class YAxisPlotBands extends OptionsObject {
  external factory YAxisPlotBands ();
  /**
   * Border color for the plot band. Also requires <code>borderWidth</code> to be set.
   */
  external dynamic get borderColor;
  external void set borderColor (dynamic a_borderColor);
  /**
   * Border width for the plot band.  Also requires <code>borderColor</code> to be set.
   */
  external num get borderWidth;
  external void set borderWidth (num a_borderWidth);
  /**
   * The color of the plot band.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * An object defining mouse events for the plot band. Supported properties are <code>click</code>, <code>mouseover</code>, <code>mouseout</code>, <code>mousemove</code>.
   */
  external JsObject get events;
  external void set events (JsObject a_events);
  /**
   * The start position of the plot band in axis units.
   */
  external num get from;
  external void set from (num a_from);
  /**
   * An id used for identifying the plot band in Axis.removePlotBand.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * Text labels for the plot bands
   */
  external YAxisPlotBandsLabel get label;
  external void set label (YAxisPlotBandsLabel a_label);
  /**
   * The end position of the plot band in axis units.
   */
  external num get to;
  external void set to (num a_to);
  /**
   * The z index of the plot band within the chart, relative to other elements. Using the same z index as another element may give unpredictable results, as the last rendered element will be on top. Values from 0 to 20 make sense.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class YAxisPlotBandsLabel extends OptionsObject {
  external factory YAxisPlotBandsLabel ();
  /**
   * Horizontal alignment of the label. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Rotation of the text label in degrees .
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the text label.
   */
  external JsObject get style;
  external void set style (JsObject a_style);
  /**
   * The text alignment for the label. While <code>align</code> determines where the texts anchor point is placed within the plot band, <code>textAlign</code> determines how the text is aligned against its anchor point. Possible values are "left", "center" and "right". Defaults to the same as the <code>align</code> option.
   */
  external String get textAlign;
  external void set textAlign (String a_textAlign);
  /**
   * <p>Whether to <a href="http://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Vertical alignment of the label relative to the plot band. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * Horizontal position relative the alignment. Default varies by orientation.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical position of the text baseline relative to the alignment. Default varies by orientation.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class YAxisPlotLines extends OptionsObject {
  external factory YAxisPlotLines ();
  /**
   * The color of the line.
   */
  external dynamic get color;
  external void set color (dynamic a_color);
  /**
   * The dashing or dot style for the plot line. For possible values see <a href="http://jsfiddle.net/gh/get/jquery/1.7.1/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/">this overview</a>.
   */
  external String get dashStyle;
  external void set dashStyle (String a_dashStyle);
  /**
   * An object defining mouse events for the plot line. Supported properties are <code>click</code>, <code>mouseover</code>, <code>mouseout</code>, <code>mousemove</code>.
   */
  external JsObject get events;
  external void set events (JsObject a_events);
  /**
   * An id used for identifying the plot line in Axis.removePlotLine.
   */
  external String get id;
  external void set id (String a_id);
  /**
   * Text labels for the plot bands
   */
  external YAxisPlotLinesLabel get label;
  external void set label (YAxisPlotLinesLabel a_label);
  /**
   * The position of the line in axis units.
   */
  external num get value;
  external void set value (num a_value);
  /**
   * The width or thickness of the plot line.
   */
  external num get width;
  external void set width (num a_width);
  /**
   * The z index of the plot line within the chart.
   */
  external num get zIndex;
  external void set zIndex (num a_zIndex);
}
@JS()
@anonymous
class YAxisPlotLinesLabel extends OptionsObject {
  external factory YAxisPlotLinesLabel ();
  /**
   * Horizontal alignment of the label. Can be one of "left", "center" or "right".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * Rotation of the text label in degrees. Defaults to 0 for horizontal plot lines and 90 for vertical lines.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the text label.
   */
  external JsObject get style;
  external void set style (JsObject a_style);
  /**
   * The text alignment for the label. While <code>align</code> determines where the texts anchor point is placed within the plot band, <code>textAlign</code> determines how the text is aligned against its anchor point. Possible values are "left", "center" and "right". Defaults to the same as the <code>align</code> option.
   */
  external String get textAlign;
  external void set textAlign (String a_textAlign);
  /**
   * <p>Whether to <a href="http://docs.highcharts.com/#formatting$html">use HTML</a> to render the labels.
   */
  external bool get useHTML;
  external void set useHTML (bool a_useHTML);
  /**
   * Vertical alignment of the label relative to the plot line. Can be one of "top", "middle" or "bottom".
   */
  external String get verticalAlign;
  external void set verticalAlign (String a_verticalAlign);
  /**
   * Horizontal position relative the alignment. Default varies by orientation.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical position of the text baseline relative to the alignment. Default varies by orientation.
   */
  external num get y;
  external void set y (num a_y);
}
@JS()
@anonymous
class YAxisTitle extends OptionsObject {
  external factory YAxisTitle ();
  /**
   * Alignment of the title relative to the axis values. Possible values are "low", "middle" or "high".
   */
  external String get align;
  external void set align (String a_align);
  /**
   * The pixel distance between the axis labels or line and the title. Defaults to 0 for horizontal axes, 10 for vertical.
   */
  external num get margin;
  external void set margin (num a_margin);
  /**
   * The distance of the axis title from the axis line. By default, this distance is  computed from the offset width of the labels, the labels' distance from  the axis and the title's margin. However when the offset option is set, it overrides all this.
   */
  external num get offset;
  external void set offset (num a_offset);
  /**
   * The rotation of the text in degrees. 0 is horizontal, 270 is vertical reading from bottom to top.
   */
  external num get rotation;
  external void set rotation (num a_rotation);
  /**
   * CSS styles for the title. When titles are rotated they are rendered using vector graphic techniques and not all styles are applicable.
   */
  external dynamic get style;
  external void set style (dynamic a_style);
  /**
   * The actual text of the axis title. It can contain basic HTML text markup like &lt;b&gt;, &lt;i&gt; and spans with style.
   */
  external String get text;
  external void set text (String a_text);
  /**
   * Horizontal pixel offset of the title position.
   */
  external num get x;
  external void set x (num a_x);
  /**
   * Vertical pixel offset of the title position.
   */
  external num get y;
  external void set y (num a_y);
}


