Show:
                            /**
                             * Provides core functionality for the handling of stacked numeric axis data for a chart.
                             *
                             * @module charts
                             * @submodule axis-stacked-base
                             */
                            
                            /**
                             * StackedImpl contains logic for managing stacked numeric data. StackedImpl is used by the following classes:
                             * <ul>
                             *      <li>{{#crossLink "StackedAxisBase"}}{{/crossLink}}</li>
                             *      <li>{{#crossLink "StackedAxis"}}{{/crossLink}}</li>
                             *  </ul>
                             *
                             * @submodule axis-stacked-base
                             * @class StackedImpl
                             * @constructor
                             */
                            function StackedImpl()
                            {
                            }
                            
                            StackedImpl.NAME = "stackedImpl";
                            
                            StackedImpl.prototype = {
                                /**
                                 * Type of data used in `Data`.
                                 *
                                 * @property _type
                                 * @readOnly
                                 * @private
                                 */
                                _type: "stacked",
                            
                                /**
                                 * Calculates the maximum and minimum values for the `Data`.
                                 *
                                 * @method _updateMinAndMax
                                 * @private
                                 */
                                _updateMinAndMax: function()
                                {
                                    var max = 0,
                                        min = 0,
                                        pos = 0,
                                        neg = 0,
                                        len = 0,
                                        i = 0,
                                        key,
                                        num,
                                        keys = this.get("keys"),
                                        setMin = this.get("setMin"),
                                        setMax = this.get("setMax");
                            
                                    for(key in keys)
                                    {
                                        if(keys.hasOwnProperty(key))
                                        {
                                            len = Math.max(len, keys[key].length);
                                        }
                                    }
                                    for(; i < len; ++i)
                                    {
                                        pos = 0;
                                        neg = 0;
                                        for(key in keys)
                                        {
                                            if(keys.hasOwnProperty(key))
                                            {
                                                num = keys[key][i];
                                                if(isNaN(num))
                                                {
                                                    continue;
                                                }
                                                if(num >= 0)
                                                {
                                                    pos += num;
                                                }
                                                else
                                                {
                                                    neg += num;
                                                }
                                            }
                                        }
                                        if(pos > 0)
                                        {
                                            max = Math.max(max, pos);
                                        }
                                        else
                                        {
                                            max = Math.max(max, neg);
                                        }
                                        if(neg < 0)
                                        {
                                            min = Math.min(min, neg);
                                        }
                                        else
                                        {
                                            min = Math.min(min, pos);
                                        }
                                    }
                                    this._actualMaximum = max;
                                    this._actualMinimum = min;
                                    if(setMax)
                                    {
                                        max = this._setMaximum;
                                    }
                                    if(setMin)
                                    {
                                        min = this._setMinimum;
                                    }
                                    this._roundMinAndMax(min, max, setMin, setMax);
                                }
                            };
                            
                            Y.StackedImpl = StackedImpl;