/// <summary>
        /// Parse the XML Mission nodes
        /// </summary>
        /// <param name="xmlNode">The <Mission></Mission> nodes</param>
        private void fromXML(XmlNode xmlNode)
        {
            String value;
            Int32 intValue;

            Xml.getAttribute(xmlNode, XmlAttributes.ID, true, out value);
            setId(value);

            if (Xml.getAttribute(xmlNode, XmlAttributes.FORFEITABLE, false, out value))
            {
                setForfeitable(value.Equals("1"));
            }

            Xml.getAttribute(xmlNode, XmlAttributes.TIME, true, out intValue);
            setAllowedTime(intValue);

            if (Xml.getAttribute(xmlNode, XmlAttributes.OVERALL, false, out intValue))
            {
                setOverallLevel(intValue);
            }

            foreach (XmlNode missionChild in xmlNode.ChildNodes)
            {
                if (missionChild.Name.Equals(XmlTag.NAME))
                {
                    Xml.getValue(missionChild, true, out value);
                    setName(value);
                }
                else if (missionChild.Name.Equals(XmlTag.SUMMARY))
                {
                    Xml.getValue(missionChild, true, out value);
                    setSummary(value);
                }
                else if (missionChild.Name.Equals(XmlTag.CONDITION))
                {
                    Condition condition = new Condition();
                    condition.fromXml(missionChild);
                    addCondition(condition);
                }
                else if (missionChild.Name.Equals(XmlTag.STAGE))
                {
                    Stage stage = new Stage();
                    stage.fromXml(missionChild);
                    addStage(stage);
                }
                else
                {
                    MessageBox.Show("Unexpected node: " + missionChild.Name + " in the" + XmlTag.MISSION + " tag");
                }
            }

            addValidations();
        }