/// <summary>
        /// Get the "top10" rule type according to the follwoing attributes:
        /// "Bottom" and "Percent"
        ///
        /// @Bottom = "1" and @Percent = "0"/null       == Bottom
        /// @Bottom = "1" and @Percent = "1"            == BottomPercent
        /// @Bottom = "0"/null and @Percent = "0"/null  == Top
        /// @Bottom = "0"/null and @Percent = "1"       == TopPercent
        /// /// </summary>
        /// <returns>Top, TopPercent, Bottom or BottomPercent</returns>
        public static eExcelConditionalFormattingRuleType GetTop10Type(
            XmlNode topNode,
            XmlNamespaceManager nameSpaceManager)
        {
            // Get @Bottom attribute
            bool?isBottom = ExcelConditionalFormattingHelper.GetAttributeBoolNullable(
                topNode,
                ExcelConditionalFormattingConstants.Attributes.Bottom);

            // Get @Percent attribute
            bool?isPercent = ExcelConditionalFormattingHelper.GetAttributeBoolNullable(
                topNode,
                ExcelConditionalFormattingConstants.Attributes.Percent);

            if (isBottom == true)
            {
                if (isPercent == true)
                {
                    // @Bottom = "1" and @Percent = "1" == BottomPercent
                    return(eExcelConditionalFormattingRuleType.BottomPercent);
                }

                // @Bottom = "1" and @Percent = "0"/null == Bottom
                return(eExcelConditionalFormattingRuleType.Bottom);
            }

            if (isPercent == true)
            {
                // @Bottom = "0"/null and @Percent = "1" == TopPercent
                return(eExcelConditionalFormattingRuleType.TopPercent);
            }

            // @Bottom = "0"/null and @Percent = "0"/null == Top
            return(eExcelConditionalFormattingRuleType.Top);
        }
        /// <summary>
        /// Get the "aboveAverage" rule type according to the follwoing attributes:
        /// "AboveAverage", "EqualAverage" and "StdDev".
        ///
        /// @StdDev greater than "0"                              == AboveStdDev
        /// @StdDev less than "0"                                 == BelowStdDev
        /// @AboveAverage = "1"/null and @EqualAverage = "0"/null == AboveAverage
        /// @AboveAverage = "1"/null and @EqualAverage = "1"      == AboveOrEqualAverage
        /// @AboveAverage = "0" and @EqualAverage = "0"/null      == BelowAverage
        /// @AboveAverage = "0" and @EqualAverage = "1"           == BelowOrEqualAverage
        /// /// </summary>
        /// <returns>AboveAverage, AboveOrEqualAverage, BelowAverage or BelowOrEqualAverage</returns>
        internal static eExcelConditionalFormattingRuleType GetAboveAverageType(
            XmlNode topNode,
            XmlNamespaceManager nameSpaceManager)
        {
            // Get @StdDev attribute
            int?stdDev = ExcelConditionalFormattingHelper.GetAttributeIntNullable(
                topNode,
                ExcelConditionalFormattingConstants.Attributes.StdDev);

            if (stdDev > 0)
            {
                // @StdDev > "0" --> AboveStdDev
                return(eExcelConditionalFormattingRuleType.AboveStdDev);
            }

            if (stdDev < 0)
            {
                // @StdDev < "0" --> BelowStdDev
                return(eExcelConditionalFormattingRuleType.BelowStdDev);
            }

            // Get @AboveAverage attribute
            bool?isAboveAverage = ExcelConditionalFormattingHelper.GetAttributeBoolNullable(
                topNode,
                ExcelConditionalFormattingConstants.Attributes.AboveAverage);

            // Get @EqualAverage attribute
            bool?isEqualAverage = ExcelConditionalFormattingHelper.GetAttributeBoolNullable(
                topNode,
                ExcelConditionalFormattingConstants.Attributes.EqualAverage);

            if ((isAboveAverage == null) || (isAboveAverage == true))
            {
                if (isEqualAverage == true)
                {
                    // @AboveAverage = "1"/null and @EqualAverage = "1" == AboveOrEqualAverage
                    return(eExcelConditionalFormattingRuleType.AboveOrEqualAverage);
                }

                // @AboveAverage = "1"/null and @EqualAverage = "0"/null == AboveAverage
                return(eExcelConditionalFormattingRuleType.AboveAverage);
            }

            if (isEqualAverage == true)
            {
                // @AboveAverage = "0" and @EqualAverage = "1" == BelowOrEqualAverage
                return(eExcelConditionalFormattingRuleType.BelowOrEqualAverage);
            }

            // @AboveAverage = "0" and @EqualAverage = "0"/null == BelowAverage
            return(eExcelConditionalFormattingRuleType.BelowAverage);
        }