/// <summary>
        /// Writes all or part of this data object to XML. If this data object owns other
        /// data objects that will also be written, this method may leave some XML elements
        /// open, which will be closed with a later call to <i>WriteXmlFooter</i>.
        /// </summary>
        /// <param name="writer">An open XML writer. The writer will be left open by this method
        /// after writing.</param>
        /// <returns>Returns <b>true</b> if successful; <b>false</b> otherwise.</returns>
        public bool WriteXmlHeader(XmlTextWriter writer)
        {
            bool success = true;

            try
            {
                writer.WriteStartDocument(true);
                writer.WriteStartElement("Fitts_Study");
                writer.WriteAttributeString("subject", XmlConvert.ToString(_subject));
                writer.WriteAttributeString("circular", XmlConvert.ToString(_circular));
                writer.WriteAttributeString("metronome", XmlConvert.ToString(this.UsedMetronome));
                writer.WriteAttributeString("conditions", XmlConvert.ToString(_conditions.Count));
                writer.WriteAttributeString("MTPct", StringEx.Array2String(_mtpct));
                writer.WriteAttributeString("A", StringEx.Array2String(_a));
                writer.WriteAttributeString("W", StringEx.Array2String(_w));
                writer.WriteAttributeString("intercept", XmlConvert.ToString(_intercept));
                writer.WriteAttributeString("slope", XmlConvert.ToString(_slope));
                writer.WriteAttributeString("screen", Screen.PrimaryScreen.Bounds.ToString());
                writer.WriteAttributeString("version", Assembly.GetExecutingAssembly().GetName().Version.ToString());
                writer.WriteAttributeString("date", DateTime.Now.ToLongDateString());
                writer.WriteAttributeString("timeOfDay", DateTime.Now.ToLongTimeString());
            }
            catch (XmlException xex)
            {
                Console.WriteLine(xex);
                success = false;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                success = false;
            }
            return(success);
        }