text: /*
  YUI 3.17.2 (build 9c3c78e)
  Copyright 2014 Yahoo! Inc. All rights reserved.
  Licensed under the BSD License.
  http://yuilibrary.com/license/
  */
  
  YUI.add('series-candlestick', function (Y, NAME) {
  
  /**
   * Provides functionality for creating a candlestick series.
   *
   * @module charts
   * @submodule series-candlestick
   */
  /**
   * The CandlestickSeries class renders columns (candles) and lines (wicks) representing the open, high, low and close
   * values for a chart.
   *
   * @class CandlestickSeries
   * @extends RangeSeries
   * @constructor
   * @param {Object} config (optional) Configuration parameters.
   * @submodule series-candlestick
   */
  function CandlestickSeries()
  {
      CandlestickSeries.superclass.constructor.apply(this, arguments);
  }
  
  CandlestickSeries.NAME = "candlestickSeries";
  
  CandlestickSeries.ATTRS = {
      /**
       * Read-only attribute indicating the type of series.
       *
       * @attribute type
       * @type String
       * @readOnly
       * @default candlestick
       */
      type: {
          value: "candlestick"
      },
  
      /**
       * The graphic in which drawings will be rendered.
       *
       * @attribute graphic
       * @type Graphic
       */
      graphic: {
          lazyAdd: false,
  
          setter: function(val) {
              //woraround for Attribute order of operations bug
              if(!this.get("rendered")) {
                  this.set("rendered", true);
              }
              this.set("upcandle", val.addShape({
                 type: "path"
              }));
              this.set("downcandle", val.addShape({
                 type: "path"
              }));
              this.set("wick", val.addShape({
                 type: "path"
              }));
              return val;
          }
      },
  
      /**
       * Reference to the candlestick used when the close value is higher than the open value.
       *
       * @attribute upcandle
       * @type Path
       */
      upcandle: {},
  
      /**
       * Reference to the candlestick used when the open value is higher than the close value.
       *
       * @attribute downcandle
       * @type Path
       */
      downcandle: {},
  
      /**
       * Reference to the line drawn between the high and low values.
       *
       * @attribute wick
       * @type Path
       */
      wick: {}
  
      /**
       * Style properties used for drawing candles and wicks. This attribute is inherited from `RangeSeries`. Below are the default values:
       *  <dl>
       *      <dt>upcandle</dt><dd>Properties for a candle representing a period that closes higher than it opens.
       *          <dl>
       *              <dt>fill</dt><dd>A hash containing the following values:
       *                  <dl>
       *                      <dt>color</dt><dd>Color of the fill. The default value is "#00aa00".</dd>
       *                      </dd>
       *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
       *                  </dl>
       *              </dd>
       *              <dt>border</dt><dd>A hash containing the following values:
       *                  <dl>
       *                      <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
       *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
       *                      <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
       *                  </dl>
       *              </dd>
       *          </dl>
       *      </dd>
       *      <dt>downcandle</dt><dd>Properties for a candle representing a period that opens higher than it closes.
       *          <dl>
       *              <dt>fill</dt><dd>A hash containing the following values:
       *                  <dl>
       *                      <dt>color</dt><dd>Color of the fill. The default value is "#aa0000".</dd>
       *                      </dd>
       *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker fill. The default value is 1.</dd>
       *                  </dl>
       *              </dd>
       *              <dt>border</dt><dd>A hash containing the following values:
       *                  <dl>
       *                      <dt>color</dt><dd>Color of the border. The default value is "#000000".</dd>
       *                      <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the marker border. The default value is 1.</dd>
       *                      <dt>weight</dt><dd>Number indicating the width of the border. The default value is 0.</dd>
       *                  </dl>
       *              </dd>
       *          </dl>
       *      </dd>
       *      <dt>wick</dt><dd>Properties for the wick, which is a line drawn from the high point of the period to the low point of the period.
       *          <dl>
       *              <dt>color</dt><dd>The color of the wick. The default value is "#000000".</dd>
       *              <dt>weight</dt><dd>The weight of the wick. The default value is 1.</dd>
       *              <dt>alpha</dt><dd>Number from 0 to 1 indicating the opacity of the wick. The default value is 1.</dd>
       *          </dl>
       *      </dd>
       *  </dl>
       *
       * @attribute styles
       * @type Object
       */
  };
  
  Y.extend(CandlestickSeries, Y.RangeSeries, {
      /**
       * Draws markers for an Candlestick series.
       *
       * @method
       * @param {Array} xcoords The xcoordinates to be plotted.
       * @param {Array} opencoords The coordinates representing the open values.
       * @param {Array} highcoords The coordinates representing the high values.
       * @param {Array} lowcoords The coordinates representing the low values.
       * @param {Array} closecoords The coordinates representing the close values.
       * @param {Number} len The number of x coordinates to plot.
       * @param {Number} width The width of each candlestick marker.
       * @param {Number} halfwidth Half the width of each candlestick marker.
       * @param {Object} styles The styles for the series.
       * @private
       */
      _drawMarkers: function(xcoords, opencoords, highcoords, lowcoords, closecoords, len, width, halfwidth, styles)
      {
          var upcandle = this.get("upcandle"),
              downcandle = this.get("downcandle"),
              candle,
              wick = this.get("wick"),
              wickStyles = styles.wick,
              wickWidth = wickStyles.width,
              cx,
              opencoord,
              highcoord,
              lowcoord,
              closecoord,
              left,
              right,
              top,
              bottom,
              height,
              leftPadding = styles.padding.left,
              up,
              i,
              isNumber = Y.Lang.isNumber;
          upcandle.set(styles.upcandle);
          downcandle.set(styles.downcandle);
          wick.set({
              fill: wickStyles.fill,
              stroke: wickStyles.stroke,
              shapeRendering: wickStyles.shapeRendering
          });
          upcandle.clear();
          downcandle.clear();
          wick.clear();
          for(i = 0; i < len; i = i + 1)
          {
              cx = Math.round(xcoords[i] + leftPadding);
              left = cx - halfwidth;
              right = cx + halfwidth;
              opencoord = Math.round(opencoords[i]);
              highcoord = Math.round(highcoords[i]);
              lowcoord = Math.round(lowcoords[i]);
              closecoord = Math.round(closecoords[i]);
              up = opencoord > closecoord;
              top = up ? closecoord : opencoord;
              bottom = up ? opencoord : closecoord;
              height = bottom - top;
              candle = up ? upcandle : downcandle;
              if(candle && isNumber(left) && isNumber(top) && isNumber(width) && isNumber(height))
              {
                  candle.drawRect(left, top, width, height);
              }
              if(isNumber(cx) && isNumber(highcoord) && isNumber(lowcoord))
              {
                  wick.drawRect(cx - wickWidth/2, highcoord, wickWidth, lowcoord - highcoord);
              }
          }
          upcandle.end();
          downcandle.end();
          wick.end();
          wick.toBack();
      },
  
      /**
       * Toggles visibility
       *
       * @method _toggleVisible
       * @param {Boolean} visible indicates visibilitye
       * @private
       */
      _toggleVisible: function(visible)
      {
          this.get("upcandle").set("visible", visible);
          this.get("downcandle").set("visible", visible);
          this.get("wick").set("visible", visible);
      },
  
      /**
       * Destructor implementation for the CartesianSeries class. Calls destroy on all Graphic instances.
       *
       * @method destructor
       * @protected
       */
      destructor: function()
      {
          var upcandle = this.get("upcandle"),
              downcandle = this.get("downcandle"),
              wick = this.get("wick");
          if(upcandle)
          {
              upcandle.destroy();
          }
          if(downcandle)
          {
              downcandle.destroy();
          }
          if(wick)
          {
              wick.destroy();
          }
      },
  
      /**
       * Gets the default value for the `styles` attribute. Overrides
       * base implementation.
       *
       * @method _getDefaultStyles
       * @return Object
       * @private
       */
      _getDefaultStyles: function()
      {
          var styles = {
              upcandle: {
                  shapeRendering: "crispEdges",
                  fill: {
                      color: "#00aa00",
                      alpha: 1
                  },
                  stroke: {
                      color: "#000000",
                      alpha: 1,
                      weight: 0
                  }
              },
              downcandle: {
                  shapeRendering: "crispEdges",
                  fill: {
                      color: "#aa0000",
                      alpha: 1
                  },
                  stroke: {
                      color: "#000000",
                      alpha: 1,
                      weight: 0
                  }
              },
              wick: {
                  shapeRendering: "crispEdges",
                  width: 1,
                  fill: {
                      color: "#000000",
                      alpha: 1
                  },
                  stroke: {
                      color: "#000000",
                      alpha: 1,
                      weight: 0
                  }
              }
          };
          return this._mergeStyles(styles, CandlestickSeries.superclass._getDefaultStyles());
      }
  });
  Y.CandlestickSeries = CandlestickSeries;
  
  
  }, '3.17.2', {"requires": ["series-range"]});
  