}//END AddItem Method

        //  =================================================================================
        /// <summary>
        ///   This method adds a new data change value to the list of data change objects.
        /// </summary>
        /// <param name="ItemId">String: The item identifier.</param>
        /// <param name="InitialValue">String: the intial item value.</param>
        /// <param name="NewValue">String: the new item value.</param>
        /// <returns>Integer: is the count of data change object in the list.</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Initilize the data change item object
        ///
        /// 2. Add the item to the item object
        ///
        /// 3. Return a number of items on the item list object
        /// </remarks>
        //  ---------------------------------------------------------------------------------
        public int AddItem(String ItemId, Guid InitialValue, Guid NewValue)
        {
            //
            // if nothing has changed then exit.
            //
            if (InitialValue == NewValue)
            {
                return(this._Items.Count);
            }

            //
            // Initialise the new data change item
            //
            EvDataChangeItem item = new EvDataChangeItem(ItemId, InitialValue.ToString( ), NewValue.ToString( ));

            //
            // Append the item to the item list.
            //
            this._Items.Add(item);

            //
            // return the item index.
            //
            return(this._Items.Count);
        }//END AddItem Method
        }//END AddItem Method

        //  =================================================================================
        /// <summary>
        ///   This method adds a new data change value to the list of data change objects.
        /// </summary>
        /// <param name="ItemId">String: The item identifier.</param>
        /// <param name="enumInitialValue">Enumerated Object: the intial item value.</param>
        /// <param name="enumNewValue">Enumerated Object: the new item value.</param>
        /// <returns>Integer: is the count of data change object in the list.</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Initilize the data change item object
        ///
        /// 2. Add the item to the item object
        ///
        /// 3. Return a number of items on the item list object
        /// </remarks>
        //  ---------------------------------------------------------------------------------
        public int AddItem(
            String ItemId,
            Object enumInitialValue,
            Object enumNewValue)
        {
            //
            // Convert the enumerated value to string.
            //
            String InitialValue = Enum.GetName(enumInitialValue.GetType( ), enumInitialValue);
            String NewValue     = Enum.GetName(enumNewValue.GetType( ), enumNewValue);

            //
            // if nothing has changed then exit.
            //
            if (InitialValue.Trim( ) == NewValue.Trim( ))
            {
                return(this._Items.Count);
            }

            //
            // Initialise the new data change item
            //
            EvDataChangeItem item = new EvDataChangeItem(ItemId, InitialValue, NewValue);

            //
            // Append the item to the item list.
            //
            this._Items.Add(item);

            //
            // return the item index.
            //
            return(this._Items.Count);
        }//END AddItem Metho
        }//END AddItem Method

        //  =================================================================================
        /// <summary>
        /// This method creates a Html fieldset containing the contents of the indexed data
        /// change object.
        /// </summary>
        /// <param name="ChangeNo">Int: the index to the data change object to be displayed.</param>
        /// <returns>Html as String</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Initialize the stHtml string
        ///
        /// 2. Open the fieldset element and set its legend
        ///
        /// 3. Add a table row displaying the trail identifier if it exists
        ///
        /// 4. Add a table row displaying the subject identifier if it exists
        ///
        /// 5. Add a table row displaying the record identifier if it is exists
        ///
        /// 6. Output the data change item value in a table
        ///
        /// 7. Loop through the items in this change items as a table row.
        ///
        /// 8. Extract data, set view, set column, format xml, add user identifier and time stamp
        /// </remarks>
        //  ---------------------------------------------------------------------------------
        public string getAsHtml(int ChangeNo)
        {
            //
            // Initialise the stHtlm string
            //
            String stHtml = String.Empty;

            //
            // Open the fieldset element and set its legend
            //
            stHtml += "<fieldset class='Fields'> "
                      + "<legend>Change: " + (ChangeNo + 1) + "</legend>"
                      + "<table>";

            //
            // Add a table row displaying the trial identifier if it exists.
            //
            if (this._TrialId != String.Empty)
            {
                stHtml += "<tr>"
                          + "<td class='Prompt Width_20' >TrialId:</td>"
                          + "<td>" + this._TrialId + "</td>"
                          + "</tr>";
            }

            //
            // Add a table row displaying the subject identifier if it exists
            //
            if (this._SubjectId != String.Empty)
            {
                stHtml += "<tr>"
                          + "<td class='Prompt Width_20' >SubjectId:</td>"
                          + "<td>" + this._SubjectId + "</td>"
                          + "</tr>";
            }

            //
            // Add a table row displaying the record identifier if it is exists
            //
            if (this._RecordId != String.Empty)
            {
                stHtml += "<tr>"
                          + "<td class='Prompt Width_20' >RecordId:</td>"
                          + "<td>" + this._RecordId + "</td>"
                          + "</tr>";
            }
            stHtml += "</table>\r\n";

            //
            // Output the data change item value in a table
            //
            stHtml += "<table class='View' style='width:98%' cellspacing='0' border='1' style='border-collapse:collapse;' >"
                      + "<tr class='View_Header'>"
                      + "<th style='width:40px;' style='text-align:center;' >Item</th>"
                      + "<th style='text-align:center;' >ItemId</th>"
                      + "<th style='width:425px;'style='text-align:center;' >Initial Value</th>"
                      + "<th style='width:425px;'style='text-align:center;' >New Value</th>"
                      + "</tr>";

            //
            // Iterate through the items in this change items as a table row.
            //
            for (int index = 0; index < this._Items.Count; index++)
            {
                //
                // Extract data change item from the list of items.
                //
                EvDataChangeItem item = this._Items [index];

                //
                // Set the view to be "View_Item" for the event order and "View_Alt" for the odd order
                //
                if (index % 2 == 0)
                {
                    stHtml += "<tr class='View_Item' >"
                              + "<td style='text-align:center;'>"
                              + (index + 1)
                              + "</td>";
                }
                else
                {
                    stHtml += "<tr class='View_Alt'>"
                              + "<td style='text-align:center;'>"
                              + (index + 1)
                              + "</td>";
                }

                //
                // Set the column to be "Null Data" if item identifier does not exist
                // but if it exists, assign column with item identifier from the list of items
                //
                if (item.ItemId == String.Empty)
                {
                    stHtml += "<td>Null Data</td>";
                }
                else
                {
                    stHtml += "<td>" + EvHtmlCoding.Decode(item.ItemId) + "</td>";
                }

                //
                // Set the column to be "Null Data" if the initial value does not exist
                //
                if (item.InitialValue == String.Empty)
                {
                    stHtml += "<td>Null Data</td>";
                }
                else
                {
                    string value = EvHtmlCoding.Decode(item.InitialValue);

                    //
                    // Formating XML object for display
                    //
                    if (value.Contains("< ?xml version") == true)
                    {
                        value = value.Replace("> ", ">");
                        value = value.Replace("\n", String.Empty);
                        value = value.Replace("> ", "><br/>");
                    }

                    stHtml += "<td>" + value + "</td>";
                }

                //
                // Set the column to be "Null Data" if the new value does not exist
                //
                if (item.NewValue == String.Empty)
                {
                    stHtml += "<td>Null Data</td>";
                }
                else
                {
                    string value = EvHtmlCoding.Decode(item.NewValue);
                    //
                    // Formating XML object for display
                    //
                    if (value.Contains("< ?xml version") == true)
                    {
                        value = value.Replace("> ", ">");
                        value = value.Replace("\n", String.Empty);
                        value = value.Replace("> ", "> <br/>");
                    }

                    stHtml += "<td>" + value + "</td>";
                }
            }

            //
            // Add user identifier and date time stamp from the list of items to the new table row
            //
            stHtml += "<table>"
                      + "<tr>"
                      + "<td class='Prompt Width_20' >UserId:</td>"
                      + "<td>"
                      + this._UserId
                      + "</td>"
                      + "</tr>"
                      + "<tr>"
                      + "<td class='Prompt' >DateStamp:</td>"
                      + "<td>"
                      + this.stDateStamp
                      + "</td>"
                      + "</tr>"
                      + "</table>"
                      + "</fieldset>\t\n";

            //
            // Return the html markup as a string
            //
            return(stHtml);
        }//END getAsHtml method