Show:
                            /**
                             * 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;