Show:
                            /**
                             * Provides core functionality for creating a bar or column series.
                             *
                             * @module charts
                             * @submodule series-histogram
                             */
                            var Y_Lang = Y.Lang;
                            
                            /**
                             * Histogram is the base class for Column and Bar series.
                             *
                             * @class Histogram
                             * @constructor
                             * @param {Object} config (optional) Configuration parameters.
                             * @submodule series-histogram
                             */
                            function Histogram(){}
                            
                            Histogram.prototype = {
                                /**
                                 * Draws the series.
                                 *
                                 * @method drawSeries
                                 * @protected
                                 */
                                drawSeries: function()
                                {
                                    if(this.get("xcoords").length < 1)
                                    {
                                        return;
                                    }
                                    var style = this._copyObject(this.get("styles").marker),
                                        graphic = this.get("graphic"),
                                        setSize,
                                        calculatedSize,
                                        xcoords = this.get("xcoords"),
                                        ycoords = this.get("ycoords"),
                                        i = 0,
                                        len = xcoords.length,
                                        top = ycoords[0],
                                        seriesTypeCollection = this.get("seriesTypeCollection"),
                                        seriesLen = seriesTypeCollection ? seriesTypeCollection.length : 0,
                                        seriesSize = 0,
                                        totalSize = 0,
                                        offset = 0,
                                        ratio,
                                        renderer,
                                        order = this.get("order"),
                                        graphOrder = this.get("graphOrder"),
                                        left,
                                        marker,
                                        setSizeKey,
                                        calculatedSizeKey,
                                        config,
                                        fillColors = null,
                                        borderColors = null,
                                        xMarkerPlane = [],
                                        yMarkerPlane = [],
                                        xMarkerPlaneLeft,
                                        xMarkerPlaneRight,
                                        yMarkerPlaneTop,
                                        yMarkerPlaneBottom,
                                        dimensions = {
                                            width: [],
                                            height: []
                                        },
                                        xvalues = [],
                                        yvalues = [],
                                        groupMarkers = this.get("groupMarkers");
                                    if(Y_Lang.isArray(style.fill.color))
                                    {
                                        fillColors = style.fill.color.concat();
                                    }
                                    if(Y_Lang.isArray(style.border.color))
                                    {
                                        borderColors = style.border.color.concat();
                                    }
                                    if(this.get("direction") === "vertical")
                                    {
                                        setSizeKey = "height";
                                        calculatedSizeKey = "width";
                                    }
                                    else
                                    {
                                        setSizeKey = "width";
                                        calculatedSizeKey = "height";
                                    }
                                    setSize = style[setSizeKey];
                                    calculatedSize = style[calculatedSizeKey];
                                    this._createMarkerCache();
                                    this._maxSize = graphic.get(setSizeKey);
                                    if(seriesTypeCollection && seriesLen > 1)
                                    {
                                        for(; i < seriesLen; ++i)
                                        {
                                            renderer = seriesTypeCollection[i];
                                            seriesSize += renderer.get("styles").marker[setSizeKey];
                                            if(order > i)
                                            {
                                                offset = seriesSize;
                                            }
                                        }
                                        totalSize = len * seriesSize;
                                        if(totalSize > this._maxSize)
                                        {
                                            ratio = graphic.get(setSizeKey)/totalSize;
                                            seriesSize *= ratio;
                                            offset *= ratio;
                                            setSize *= ratio;
                                            setSize = Math.max(setSize, 1);
                                            this._maxSize = setSize;
                                        }
                                    }
                                    else
                                    {
                                        seriesSize = style[setSizeKey];
                                        totalSize = len * seriesSize;
                                        if(totalSize > this._maxSize)
                                        {
                                            seriesSize = this._maxSize/len;
                                            this._maxSize = seriesSize;
                                        }
                                    }
                                    offset -= seriesSize/2;
                                    for(i = 0; i < len; ++i)
                                    {
                                        xMarkerPlaneLeft = xcoords[i] - seriesSize/2;
                                        xMarkerPlaneRight = xMarkerPlaneLeft + seriesSize;
                                        yMarkerPlaneTop = ycoords[i] - seriesSize/2;
                                        yMarkerPlaneBottom = yMarkerPlaneTop + seriesSize;
                                        xMarkerPlane.push({start: xMarkerPlaneLeft, end: xMarkerPlaneRight});
                                        yMarkerPlane.push({start: yMarkerPlaneTop, end: yMarkerPlaneBottom});
                                        if(!groupMarkers && (isNaN(xcoords[i]) || isNaN(ycoords[i])))
                                        {
                                            this._markers.push(null);
                                            continue;
                                        }
                                        config = this._getMarkerDimensions(xcoords[i], ycoords[i], calculatedSize, offset);
                                        if(!isNaN(config.calculatedSize) && config.calculatedSize > 0)
                                        {
                                            top = config.top;
                                            left = config.left;
                            
                                            if(groupMarkers)
                                            {
                                                dimensions[setSizeKey][i] = setSize;
                                                dimensions[calculatedSizeKey][i] = config.calculatedSize;
                                                xvalues.push(left);
                                                yvalues.push(top);
                                            }
                                            else
                                            {
                                                style[setSizeKey] = setSize;
                                                style[calculatedSizeKey] = config.calculatedSize;
                                                style.x = left;
                                                style.y = top;
                                                if(fillColors)
                                                {
                                                    style.fill.color = fillColors[i % fillColors.length];
                                                }
                                                if(borderColors)
                                                {
                                                    style.border.color = borderColors[i % borderColors.length];
                                                }
                                                marker = this.getMarker(style, graphOrder, i);
                                            }
                            
                                        }
                                        else if(!groupMarkers)
                                        {
                                            this._markers.push(null);
                                        }
                                    }
                                    this.set("xMarkerPlane", xMarkerPlane);
                                    this.set("yMarkerPlane", yMarkerPlane);
                                    if(groupMarkers)
                                    {
                                        this._createGroupMarker({
                                            fill: style.fill,
                                            border: style.border,
                                            dimensions: dimensions,
                                            xvalues: xvalues,
                                            yvalues: yvalues,
                                            shape: style.shape
                                        });
                                    }
                                    else
                                    {
                                        this._clearMarkerCache();
                                    }
                                },
                            
                                /**
                                 * Collection of default colors used for marker fills in a series when not specified by user.
                                 *
                                 * @property _defaultFillColors
                                 * @type Array
                                 * @protected
                                 */
                                _defaultFillColors: ["#66007f", "#a86f41", "#295454", "#996ab2", "#e8cdb7", "#90bdbd","#000000","#c3b8ca", "#968373", "#678585"],
                            
                                /**
                                 * Gets the default style values for the markers.
                                 *
                                 * @method _getPlotDefaults
                                 * @return Object
                                 * @private
                                 */
                                _getPlotDefaults: function()
                                {
                                    var defs = {
                                        fill:{
                                            type: "solid",
                                            alpha: 1,
                                            colors:null,
                                            alphas: null,
                                            ratios: null
                                        },
                                        border:{
                                            weight: 0,
                                            alpha: 1
                                        },
                                        width: 12,
                                        height: 12,
                                        shape: "rect",
                            
                                        padding:{
                                            top: 0,
                                            left: 0,
                                            right: 0,
                                            bottom: 0
                                        }
                                    };
                                    defs.fill.color = this._getDefaultColor(this.get("graphOrder"), "fill");
                                    defs.border.color = this._getDefaultColor(this.get("graphOrder"), "border");
                                    return defs;
                                }
                            };
                            
                            Y.Histogram = Histogram;