Inheritance: IDisposable
        private void pFill(cWebChart chart, DataRowCollection rows, String strFormat) 
        {
            int i = 0;
            t_SerieValue[] values = null;
            cReportChartSerie serie = null;
            int idxSerie = 0;

            if (m_top == 0) { m_top = 50; }

            // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows)
            if (rows.Count < 0) { return; }

            // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows)
            if (rows.Count < m_top) {
                // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows)
                pRedim(ref values, rows.Count);
            } 
            else {
                pRedim(ref values, m_top - 1);
            }

            for (int _i = 0; _i < m_series.count(); _i++) {
                serie = m_series.item(_i);

                // At the time we only support two series
                //
                idxSerie = idxSerie + 1;
                if (idxSerie > 2) { return; }

                pGetSerieValues(rows, 
                                values, 
                                serie.getValueIndex(), 
                                serie.getLabelIndex(), 
                                m_chartType == csRptChartType.PIE);

                for (i = 0; i < values.Length; i++) {

                    if (values[i].idx != -1) {
                        if (idxSerie == 1) {
                            cWebChartItem w_add = chart.getItems().add(null);
                            w_add.setPrimaryValue(values[i].value);
                            w_add.setPrimaryLabel(cReportGlobals.format(values[i].label, strFormat));
                            w_add.setPieLabel(cReportGlobals.format(values[i].label, strFormat));
                            w_add.setAlternateValue(0);
                        } 
                        else if (idxSerie == 2) {
                            cWebChartItem w_item = chart.getItems().item(i);
                            w_item.setAlternateValue(values[i].value);
                            w_item.setPieLabel(cReportGlobals.format(values[i].label, strFormat));
                            w_item.setAltLabel(cReportGlobals.format(values[i].label, strFormat));
                        }
                    }
                }

                if ((values.Length > m_top - 1) && m_chartType == csRptChartType.PIE) {

                    cWebChartItem w_item = chart.getItems().item(chart.getItems().count()-1);
                    w_item.setPrimaryLabel("Otros");
                    w_item.setPieLabel("Otros");
                }

            }

            if (chart.getItems().count() > 0) {
                chart.getItems().item(0).setExplode(true);
            }
        }
        public bool make(DataRowCollection rows, String strFormat, bool bIsForWeb, String fileName)
        {
            // we need to delete any previous work image
            //
            pDestroyImage();

            if (rows == null)
            {
                return false;
            }

            cWebChart chart = new cWebChart();

            chart.newChartType((csRptChartType)m_chartType, m_chartTitle);

            pFill(chart, rows, strFormat);

            chart.setColorPrimary((csColors)m_series.item(0).getColor());
            chart.setLabelPrimary(cReportGlobals.getRealName(m_series.item(0).getValueFieldName()));
            if (m_series.count() > 1)
            {
                chart.setColorAlternate(m_series.item(1).getColor());
                chart.setLabelAlternate(cReportGlobals.getRealName(m_series.item(1).getValueFieldName()));
            }
            chart.setGridLines(m_chartLineStyle);
            chart.setOutlineBars(m_chartBarOutline);
            chart.setShowValues(m_chartShowValues);
            chart.setShowLegend((m_chartType == csRptChartType.BAR) ? false : m_chartShowValues);

            chart.setThickness(m_pieThickness);
            chart.setDiameter(m_pieDiameter);

            if (!bIsForWeb)
            {
                fileName = cUtil.getValidPath(System.IO.Path.GetTempPath()) + "~ChartImage";
            }

            chart.setFormat(m_imageFormat);

            // saveToFile
            chart.setSaveTo(1);
            chart.setFileName(fileName);

            pKillFile(fileName);

            chart.setCopyRight(m_copyright);
            chart.renderWebChartImage();

            if (!bIsForWeb)
            {
                loadChart(fileName);
            }

            m_chartCreated = true;
            return true;

            chart.Dispose();
        }