/*
Interesting member variables: (REMOVING THIS LIST AS I CLOSURIZE)
global_ - global attributes (common among all graphs, AIUI)
user - attributes set by the user
series_ - { seriesName -> { idx, yAxis, options }}
 
This parses attributes into an object that can be easily queried.

It doesn't necessarily mean that all options are available, specifically
if labels are not yet available, since those drive details of the per-series
and per-axis options.

@param {Dygraph} dygraph The chart to which these options belong.
@constructor
function(dygraph) {
  /**
   * The dygraph.
   * @type {!Dygraph}
   */
  this.dygraph_ = dygraph;

  /**
   * Array of axis index to { series : [ series names ] , options : { axis-specific options. }
   * @type {Array.<{series : Array.<string>, options : Object}>} @private
   */
  this.yAxes_ = [];

  /**
   * Contains x-axis specific options, which are stored in the options key.
   * This matches the yAxes_ object structure (by being a dictionary with an
   * options element) allowing for shared code.
   * @type {options: Object} @private
   */
  this.xAxis_ = {};
  this.series_ = {};

  // Once these two objects are initialized, you can call get();
  this.global_ = this.dygraph_.attrs_;
  this.user_ = this.dygraph_.user_attrs_ || {};

  /**
   * A list of series in columnar order.
   * @type {Array.<string>}
   */
  this.labels_ = [];

  this.highlightSeries_ = this.get("highlightSeriesOpts") || {};
  this.reparseSeries();
}