private bool nLoadData(CSXml.cXml docXml)
        {
            XmlNode nodeObj = null;
            XmlNode nodeObjAux = null;
            XmlNode nodeObjSec = null;

            m_pages.clear();
            nodeObj = docXml.getRootNode();
            nodeObj = docXml.getNodeFromNode(nodeObj, C_NODERPTPAGES);

            if (docXml.nodeHasChild(nodeObj))
            {
                nodeObjSec = docXml.getNodeChild(nodeObj);
                while (nodeObjSec != null)
                {
                    nodeObjAux = nodeObjSec;
                    cReportPage page = m_pages.add(null);
                    if (!page.load(docXml, nodeObjAux)) 
                    { 
                        return false; 
                    }
                    nodeObjSec = docXml.getNextNode(nodeObjSec);
                }
            }
            return true;
        }
        private bool loadFormulas(CSXml.cXml docXml)
        {
            XmlNode nodeObj = null;
            XmlNode nodeObjAux = null;
            XmlNode nodeObjSec = null;

            nodeObj = docXml.getRootNode();
            nodeObj = docXml.getNodeFromNode(nodeObj, C_NODERPTFORMULAS);

            if (docXml.nodeHasChild(nodeObj))
            {
                nodeObjSec = docXml.getNodeChild(nodeObj);
                while (nodeObjSec != null)
                {
                    nodeObjAux = nodeObjSec;
                    String name = docXml.getNodeProperty(nodeObjAux, "Name").getValueString(eTypes.eText);
                    cReportFormula formula = m_formulas.add(name);
                    if (!formula.load(docXml, nodeObjAux)) 
                    { 
                        return false; 
                    }
                    nodeObjSec = docXml.getNextNode(nodeObjSec);
                }
            }
            return true;
        }
        private bool loadGroups(CSXml.cXml docXml)
        {
            XmlNode nodeObj = null;
            XmlNode nodeObjAux = null;
            XmlNode nodeObjGroup = null;

            nodeObj = docXml.getRootNode();
            nodeObj = docXml.getNodeFromNode(nodeObj, C_NODEGROUPS);

            if (docXml.nodeHasChild(nodeObj))
            {
                nodeObjGroup = docXml.getNodeChild(nodeObj);
                while (nodeObjGroup != null)
                {
                    nodeObjAux = nodeObjGroup;
                    String key = docXml.getNodeProperty(nodeObjAux, "Key").getValueString(eTypes.eText);
                    cReportGroup group = getGroups().add(null, key);
                    if (!group.load(docXml, nodeObjAux)) 
                    { 
                        return false; 
                    }
                    nodeObjGroup = docXml.getNextNode(nodeObjGroup);
                }
            }
            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeObj)
        {
            XmlNode nodeObjSecLn = null;

            m_pageNumber = xDoc.getNodeProperty(nodeObj, "PageNumber").getValueInt(eTypes.eInteger);
            m_headerBottom = xDoc.getNodeProperty(nodeObj, "HeaderBottom").getValueInt(eTypes.eLong);
            m_footerTop = xDoc.getNodeProperty(nodeObj, "FooterTop").getValueInt(eTypes.eLong);

            m_header.clear();
            m_detail.clear();
            m_footer.clear();

            nodeObj = xDoc.getNodeFromNode(nodeObj, C_NODERPTHEADER);
            if (xDoc.nodeHasChild(nodeObj))
            {
                nodeObjSecLn = xDoc.getNodeChild(nodeObj);
                while (nodeObjSecLn != null)
                {
                    if (!m_header.add(null).load(xDoc, nodeObjSecLn)) 
                    { 
                        return false; 
                    }
                    nodeObjSecLn = xDoc.getNextNode(nodeObjSecLn);
                }
            }

            nodeObj = xDoc.getNodeFromNode(nodeObj, C_NODERPTDETAIL);
            if (xDoc.nodeHasChild(nodeObj))
            {
                nodeObjSecLn = xDoc.getNodeChild(nodeObj);
                while (nodeObjSecLn != null)
                {
                    if (!m_detail.add(null).load(xDoc, nodeObjSecLn)) 
                    { 
                        return false; 
                    }
                    nodeObjSecLn = xDoc.getNextNode(nodeObjSecLn);
                }
            }

            nodeObj = xDoc.getNodeFromNode(nodeObj, C_NODERPTFOOTER);
            if (xDoc.nodeHasChild(nodeObj))
            {
                nodeObjSecLn = xDoc.getNodeChild(nodeObj);
                while (nodeObjSecLn != null)
                {
                    if (!m_footer.add(null).load(xDoc, nodeObjSecLn)) 
                    { 
                        return false; 
                    }
                    nodeObjSecLn = xDoc.getNextNode(nodeObjSecLn);
                }
            }

            return true;

        }
        private bool loadAux(CSXml.cXml docXml, cReportSections sections, String keySection)
        {
            XmlNode nodeObj = null;
            XmlNode nodeObjAux = null;
            XmlNode nodeObjSec = null;

            nodeObj = docXml.getRootNode();
            nodeObj = docXml.getNodeFromNode(nodeObj, keySection);

            if (docXml.nodeHasChild(nodeObj))
            {
                nodeObjSec = docXml.getNodeChild(nodeObj);

                while (nodeObjSec != null)
                {
                    nodeObjAux = nodeObjSec;
                    String key = docXml.getNodeProperty(nodeObjAux, "Key").getValueString(eTypes.eText);
                    cReportSection sec = sections.add(null, key);
                    if (!sec.load(docXml, nodeObjAux)) 
                    { 
                        return false; 
                    }
                    nodeObjSec = docXml.getNextNode(nodeObjSec);
                }
            }
            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeObj)
        {
            XmlNode nodeObjSecLn = null;
            XmlNode nodeObjAspect = null;
            cReportSectionLine secLn = null;

            m_name = xDoc.getNodeProperty(nodeObj, "Name").getValueString(eTypes.eText);

            // TODO: fix me - this is Spanish - English bug we should use Index
            //
            m_index = xDoc.getNodeProperty(nodeObj, "Indice").getValueInt(eTypes.eInteger);

            setTypeSection((csRptSectionType)xDoc.getNodeProperty(nodeObj, "TypeSection").getValueInt(eTypes.eInteger));
            m_hasFormulaHide = xDoc.getNodeProperty(nodeObj, "HasFormulaHide").getValueBool(eTypes.eBoolean);

            nodeObjAspect = nodeObj;
            if (!m_aspect.load(xDoc, nodeObjAspect))
            {
                return false;
            }

            XmlNode nodeObjAux = nodeObj;
            if (!m_formulaHide.load(xDoc, nodeObjAux))
            {
                return false;
            }

            m_sectionLines.clear();

            nodeObj = xDoc.getNodeFromNode(nodeObj, C_NODERPTSECTIONLINES);
            if (xDoc.nodeHasChild(nodeObj))
            {
                nodeObjSecLn = xDoc.getNodeChild(nodeObj);
                while (nodeObjSecLn != null)
                {
                    String key = xDoc.getNodeProperty(nodeObjSecLn, "Key").getValueString(eTypes.eText);
                    secLn = m_sectionLines.add(null, key, -1);
                    if (!secLn.load(xDoc, nodeObjSecLn))
                    {
                        return false;
                    }
                    secLn.setSectionName(m_name);
                    nodeObjSecLn = xDoc.getNextNode(nodeObjSecLn);
                }
            }

            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeObj) 
        {
            XmlNode nodeObjCtrls = null;
            XmlNode nodeObjCtrl = null;
            XmlNode nodeObjAspect = null;

            cReportControl ctrl = null;

            // TODO: fix me - this is Spanish - English bug we should use Index
            //
            m_index = xDoc.getNodeProperty(nodeObj, "Indice").getValueInt(eTypes.eInteger);
            m_idField = xDoc.getNodeProperty(nodeObj, "IdField").getValueString(eTypes.eText);
            m_hasFormulaHide = xDoc.getNodeProperty(nodeObj, "HasFormulaHide").getValueBool(eTypes.eBoolean);

            nodeObjAspect = nodeObj;

            XmlNode nodeObjAux = nodeObj;
            if (!m_formulaHide.load(xDoc, nodeObjAux)) 
            { 
                return false; 
            }

            if (!m_aspect.load(xDoc, nodeObjAspect)) 
            { 
                return false; 
            }

            nodeObjCtrls = xDoc.getNodeFromNode(nodeObj, C_NODERPTCONTROLS);

            if (xDoc.nodeHasChild(nodeObjCtrls)) 
            {
                nodeObjCtrl = xDoc.getNodeChild(nodeObjCtrls);

                while (nodeObjCtrl != null) {
                    String key = xDoc.getNodeProperty(nodeObjCtrl, "Key").getValueString(eTypes.eText);
                    ctrl = m_controls.add(null, key);
                    if (!ctrl.load(xDoc, nodeObjCtrl)) 
                    { 
                        return false; 
                    }
                    nodeObjCtrl = xDoc.getNextNode(nodeObjCtrl);
                }
            }

            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeObj)
        {
            XmlNode nodeObjAux = null;
            XmlNode nodeObjAux2 = null;

            m_dataSource = xDoc.getNodeProperty(nodeObj, "DataSource").getValueString(eTypes.eText);
            m_dataSourceType = (csDataSourceType)xDoc.getNodeProperty(nodeObj, "DataSourceType").getValueInt(eTypes.eInteger);
            m_strConnect = xDoc.getNodeProperty(nodeObj, "StrConnect").getValueString(eTypes.eText);

            nodeObjAux2 = xDoc.getNodeFromNode(nodeObj, C_RPTCOLUMNS);

            if (xDoc.nodeHasChild(nodeObjAux2))
            {
                nodeObjAux = xDoc.getNodeChild(nodeObjAux2);
                while (nodeObjAux != null)
                {
                    String key = xDoc.getNodeProperty(nodeObjAux, "Key").getValueString(eTypes.eText);
                    if (!m_columns.add(null, key).load(xDoc, nodeObjAux))
                    {
                        return false;
                    }
                    nodeObjAux = xDoc.getNextNode(nodeObjAux);
                }
            }

            nodeObjAux2 = xDoc.getNodeFromNode(nodeObj, C_RPTPARAMETERS);

            if (xDoc.nodeHasChild(nodeObjAux2))
            {
                nodeObjAux = xDoc.getNodeChild(nodeObjAux2);
                while (nodeObjAux != null)
                {
                    String key = xDoc.getNodeProperty(nodeObjAux, "Key").getValueString(eTypes.eText);
                    if (!m_parameters.add(null, key).load(xDoc, nodeObjAux))
                    {
                        return false;
                    }
                    nodeObjAux = xDoc.getNextNode(nodeObjAux);
                }
            }

            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeObj)
        {
            nodeObj = xDoc.getNodeFromNode(nodeObj, "Chart");

            if (nodeObj != null)
            {
                m_chartLineStyle = (csRptChartLineStyle)xDoc.getNodeProperty(nodeObj, "LineStyle").getValueInt(eTypes.eInteger);
                m_chartBarOutline = xDoc.getNodeProperty(nodeObj, "BarOutline").getValueBool(eTypes.eBoolean);
                m_chartShowValues = xDoc.getNodeProperty(nodeObj, "ShowValues").getValueBool(eTypes.eBoolean);
                m_pieThickness = (csRptChartPieThickness)xDoc.getNodeProperty(nodeObj, "PieThickness").getValueInt(eTypes.eInteger);
                m_pieDiameter = (csRptChartPieDiameter)xDoc.getNodeProperty(nodeObj, "PieDiameter").getValueInt(eTypes.eInteger);
                m_imageFormat = (csRptChartFormat)xDoc.getNodeProperty(nodeObj, "ImageFormat").getValueInt(eTypes.eInteger);
                m_copyright = xDoc.getNodeProperty(nodeObj, "Copyright").getValueString(eTypes.eText);
                m_chartTitle = xDoc.getNodeProperty(nodeObj, "ChartTitle").getValueString(eTypes.eText);
                m_chartType = (csRptChartType)xDoc.getNodeProperty(nodeObj, "ChartType").getValueInt(eTypes.eInteger);
                m_top = xDoc.getNodeProperty(nodeObj, "Top").getValueInt(eTypes.eInteger);
                m_groupValue = xDoc.getNodeProperty(nodeObj, "GroupValue").getValueString(eTypes.eText);
                m_groupFieldName = xDoc.getNodeProperty(nodeObj, "GroupFieldName").getValueString(eTypes.eText);
                m_groupFieldIndex = xDoc.getNodeProperty(nodeObj, "GroupFieldIndex").getValueInt(eTypes.eInteger);
                m_sort = xDoc.getNodeProperty(nodeObj, "Sort").getValueBool(eTypes.eBoolean);

                XmlNode nodeObjAux = null;
                XmlNode nodeObjSerie = null;
                int index = 0;

                nodeObj = xDoc.getNodeFromNode(nodeObj, "Series");

                if (xDoc.nodeHasChild(nodeObj))
                {
                    nodeObjSerie = xDoc.getNodeChild(nodeObj);

                    while (nodeObjSerie != null)
                    {
                        index = index + 1;
                        nodeObjAux = nodeObjSerie;
                        if (!getSeries().add(null, "").load(xDoc, nodeObjAux, index))
                        {
                            return false;
                        }
                        nodeObjSerie = xDoc.getNextNode(nodeObjSerie);
                    }
                }
            }

            return true;
        }
        internal bool load(CSXml.cXml xDoc, XmlNode nodeFather)
        { 
            XmlNode nodeObj = null;
            clear();
            if (nodeFather != null)
            {
                if (xDoc.nodeHasChild(nodeFather))
                {
                    nodeObj = xDoc.getNodeChild(nodeFather);
                    while (nodeObj != null)
                    {
                        if (!add(null, "").load(xDoc, nodeObj)) 
                        { 
                            return false; 
                        }
                        nodeObj = xDoc.getNextNode(nodeObj);
                    }
                }
            }

            return true;
        }