protected override void UpdateValues()
		{
            Business.RenewalTerm renewalTerm = Term as Business.RenewalTerm;
			if (renewalTerm == null)
                throw new Exception(string.Format("Unable to cast _term \"{0}\" to a Business.RenewalTerm object.", TermName));

			TermName = txtTermName.Text;

            if (!IsComplexListField)
            {
                if (_template.SecurityModel == Business.SecurityModel.Advanced)
                    renewalTerm.TermGroupID = new Guid(ddlTermGroup.SelectedValue);
                else
                    renewalTerm.TermGroupID = _template.BasicSecurityTermGroupID;
            }
			renewalTerm.IsHeader = chkHeaderTerm.Checked;
			renewalTerm.ValidateOnSave = this.vos.Validate;
            renewalTerm.ValidationStatuses = this.vos.SelectedStatuses;

			renewalTerm.Required = true;
			renewalTerm.AllowBackDating = chkbxAllowBackdating.Checked;
			//DEG_20071026  Made the switch - no longer looking at chkbxEditable, but instead looking at chkbxEditableRenewalDurationUnit
			//renewalTerm.Editable = chkbxEditable.Checked;
			renewalTerm.Editable = chkbxEditableRenewalDurationUnit.Checked;
			renewalTerm.KeywordSearchable = chkbxKeywordSearchable.Checked;
			renewalTerm.EffectiveDateFormat = ddlEffectiveDateFormat.SelectedValue;
			renewalTerm.ExpirationDateFormat = ddlExpirationDateFormat.SelectedValue;
			renewalTerm.SendNotification = chkbxSendNotification.Checked;

			renewalTerm.Name = txtTermName.Text;
			renewalTerm.AllowBackDating = chkbxAllowBackdating.Checked;
			renewalTerm.PopUpText = textbxRenewalPopup.Text;
			
			if (renewalTerm.InitialDurationUnits != null)
			{
				renewalTerm.InitialDurationUnits.Clear();
				foreach (ListItem li in listbxInitialDurationUnit.Items)
				{
					if (li.Selected)
					{
						Business.DurationUnit durationUnit = new Kindred.Knect.ITAT.Business.DurationUnit();
						durationUnit.Display = li.Text;
						durationUnit.Value = li.Value;
						durationUnit.Selected = (ddlDefaultInitialDurationUnit.SelectedValue == li.Value);
						durationUnit.Default = (ddlDefaultInitialDurationUnit.SelectedValue == li.Value);
						renewalTerm.InitialDurationUnits.Add(durationUnit);
					}
				}
			}

			renewalTerm.InitialDurationUnitCountDefault = int.Parse(textbxDefaultInitialDuration.Text);
			renewalTerm.InitialDurationUnitPopUpIfNot = chkbxInitialPopUpIfNot.Checked;
			renewalTerm.InitialDurationUnitPopUpText = textbxInitialDurationPopup.Text;

			Business.Event renewalEvent = _template.RenewalEvent;
			Business.Message message = _template.RenewalTermMessage;
			if (renewalEvent != null && message != null)
			{
				message.NotificationStatuses.Clear();
				message.NotificationStatuses.Add(ddlSendNotificationStatus.SelectedValue);
				message.Subject = textbxSubject.Text;
				if (string.IsNullOrEmpty(ddlOffsetTerm.SelectedValue))
					renewalEvent.OffsetTermID = Guid.Empty;
				else
					renewalEvent.OffsetTermID = _template.FindTerm(ddlOffsetTerm.SelectedValue).ID;
				renewalEvent.OffsetDefaultValue = int.Parse(txtOffsetDefault.Text);
				renewalEvent.BaseDateOffset = textbxOffsetDays.Text;
				message.Text = Business.Term.SubstituteTermNames(_template, edt.Html);

				message.Recipients.Clear();
				foreach (ListItem li in listbxRecipients.Items)
					if (li.Selected)
						message.Recipients.Add(li.Text);

                if (ddlFilterFacility.SelectedIndex > 0)
                {
                    string storedFilterFacility = string.Empty;
                    if (message.FilterFacilityTermID.HasValue)
                    {
                        storedFilterFacility = _template.FindTerm(message.FilterFacilityTermID.Value).Name;
                    }
                    if (storedFilterFacility != ddlFilterFacility.SelectedValue)
                    {
                        message.FilterFacilityTermID = _template.FindTerm(ddlFilterFacility.SelectedValue).ID;
                    }
                }
                else
                {
                    message.FilterFacilityTermID = null;
                }
			}

			renewalTerm.RenewalTermType = (Business.RenewalTermType)Enum.Parse(typeof(Business.RenewalTermType), ddlRenewalType.SelectedValue);

			if (renewalTerm.RenewerRoles != null)
			{
				renewalTerm.RenewerRoles.Clear();
				if (renewalTerm.RenewalTermType != Business.RenewalTermType.None)
					foreach (ListItem li in listbxRenewers.Items)
						if (li.Selected)
							renewalTerm.RenewerRoles.Add(new Business.Role(li.Text));
			}

			renewalTerm.RenewalDurationEditable = chkbxEditableRenewalDurationUnit.Checked;

			if (renewalTerm.RenewalDurationUnits != null)
			{
				renewalTerm.RenewalDurationUnits.Clear();
				foreach (ListItem li in listbxRenewalDurationUnit.Items)
				{
					if (li.Selected)
					{
						Business.DurationUnit durationUnit = new Kindred.Knect.ITAT.Business.DurationUnit();
						durationUnit.Display = li.Text;
						durationUnit.Value = li.Value;
						durationUnit.Selected =  (ddlDefaultRenewalDurationUnit.SelectedValue == li.Value);
						durationUnit.Default = (ddlDefaultRenewalDurationUnit.SelectedValue == li.Value);
						renewalTerm.RenewalDurationUnits.Add(durationUnit);
					}
				}
			}

			renewalTerm.RenewalDurationUnitCountDefault = int.Parse(textbxDefaultRenewalDuration.Text);
			renewalTerm.RenewalDurationUnitPopUpIfNot = chkbxRenewalPopUpIfNot.Checked;
			renewalTerm.RenewalDurationUnitPopUpText = textbxRenewalDurationPopup.Text;
		}
        public RenewalTerm(XmlNode termNode, bool IsManagedItem, Template template, bool isFilter)
            : base(termNode, template, isFilter)
		{
			_isManagedItem = IsManagedItem;
			TermType = TermType.Renewal;
			NameRequired = true;
	
			if (template != null)
				if (template.RenewalEvent == null)
					template.Events.Add(new Event(EventType.Renewal, IsManagedItem));

			XmlNode nodeEffectiveDate = termNode.SelectSingleNode(XMLNames._E_EffectiveDate);
			XmlNode nodeExpirationDate = termNode.SelectSingleNode(XMLNames._E_ExpirationDate);
			XmlNode nodeInitialDurationUnit = termNode.SelectSingleNode(XMLNames._E_InitialDurationUnit);
			XmlNode nodeInitialDurationUnitCount = termNode.SelectSingleNode(XMLNames._E_InitialDurationUnitCount);
			XmlNode nodeRenewalDurationUnit = termNode.SelectSingleNode(XMLNames._E_RenewalDurationUnit);
			XmlNode nodeRenewalDurationUnitCount = termNode.SelectSingleNode(XMLNames._E_RenewalDurationUnitCount);
			XmlNodeList listInitialDurationUnits = termNode.SelectNodes(Utility.XMLHelper.GetXPath(false, XMLNames._E_InitialDurationUnit,XMLNames._E_DurationUnit));
			XmlNodeList listRenewalDurationUnits = termNode.SelectNodes(Utility.XMLHelper.GetXPath(false, XMLNames._E_RenewalDurationUnit,XMLNames._E_DurationUnit));

			_renewerRoles = new List<Role>();
			XmlNodeList listRenewers = termNode.SelectNodes(Utility.XMLHelper.GetXPath(false, XMLNames._E_Renewers, XMLNames._E_Renewer));
			if (listRenewers != null)
				foreach (XmlNode nodeRenewer in listRenewers)
				{
					_renewerRoles.Add(new Role(Utility.XMLHelper.GetAttributeString(nodeRenewer, XMLNames._A_Role)));
				}
			_renewalType = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_RenewalType);
			_popUpText = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_PopUpText);
			_allowBackDating = Utility.XMLHelper.GetAttributeBool(termNode, XMLNames._A_AllowBackDating);
			_renewalCount = Utility.XMLHelper.GetAttributeInt(termNode, XMLNames._A_RenewalCount);
			_renewalDurationEditable = Utility.XMLHelper.GetAttributeBool(termNode, XMLNames._A_RenewalDurationEditable);
			_effectiveDateFormat = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_EffectiveDateFormat);
			_expirationDateFormat = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_ExpirationDateFormat);

			try
			{
				_displayedDate = (DisplayedDate)Enum.Parse(typeof(DisplayedDate), Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_DisplayedDate));
			}
			catch
			{
				_displayedDate = DisplayedDate.ExpirationDate;
			}

			_sendNotification = Utility.XMLHelper.GetAttributeBool(termNode, XMLNames._A_SendNotification);
			string offsetType = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_DateOffsetType);

			try
			{
				_renewalTermType = (RenewalTermType)Enum.Parse(typeof(RenewalTermType), Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_RenewalTermType));
			}
			catch (ArgumentException)
			{
				_renewalTermType = RenewalTermType.None;
			}
			_popUpText = Utility.XMLHelper.GetAttributeString(termNode, XMLNames._A_PopUpText);

			//EffectiveDate
			if (nodeEffectiveDate != null)
			{
				_effectiveDate = Utility.XMLHelper.GetValueDate(nodeEffectiveDate);
			}

			//ExpirationDate
			if (nodeExpirationDate != null)
			{
				//_expirationDate = Utility.XMLHelper.GetValueDate(nodeExpirationDate);
				_expirationDate_DBField = Utility.XMLHelper.GetAttributeString(nodeExpirationDate, XMLNames._A_DBFieldName);
			}

			//InitialDurationUnit
			if (nodeInitialDurationUnit != null)
			{
				_initialDurationUnit_PopUpIfNot = Utility.XMLHelper.GetAttributeBool(nodeInitialDurationUnit, XMLNames._A_PopUpIfNot);
				_initialDurationUnit_PopUpText = Utility.XMLHelper.GetAttributeString(nodeInitialDurationUnit, XMLNames._A_PopUpText);

				//Sub element DurationUnit_Value, Display
				if (listInitialDurationUnits != null)
				{
					_initialDurationUnits = new List<DurationUnit>(listInitialDurationUnits.Count);
					foreach (XmlNode nodeInitialDurationUnitDU in listInitialDurationUnits)
					{
						DurationUnit InitialDurationUnit = new DurationUnit(nodeInitialDurationUnitDU);
						_initialDurationUnits.Add(InitialDurationUnit);
					}
				}
			}

			//InitialDurationUnitCount
			if (nodeInitialDurationUnitCount != null)
			{
				_initialDurationUnitCountDefault = Utility.XMLHelper.GetAttributeInt(nodeInitialDurationUnitCount, XMLNames._A_Default);
				_initialDurationUnitCount = Utility.XMLHelper.GetValueInt(nodeInitialDurationUnitCount);
			}

			//RenewalDurationUnit
			if (nodeRenewalDurationUnit != null)
			{
				_renewalDurationUnit_PopUpIfNot = Utility.XMLHelper.GetAttributeBool(nodeRenewalDurationUnit, XMLNames._A_PopUpIfNot);
				_renewalDurationUnit_PopUpText = Utility.XMLHelper.GetAttributeString(nodeRenewalDurationUnit, XMLNames._A_PopUpText);

				//Sub element DurationUnit_Value, Display
				if (listRenewalDurationUnits != null)
				{
					_renewalDurationUnits = new List<DurationUnit>(listRenewalDurationUnits.Count);
					foreach (XmlNode nodeRenewalDurationUnitDU in listRenewalDurationUnits)
					{
						DurationUnit renewalDurationUnit = new DurationUnit(nodeRenewalDurationUnitDU);
						_renewalDurationUnits.Add(renewalDurationUnit);
					}
				}

			}

			//RenewalDurationUnitCount
			if (nodeRenewalDurationUnitCount != null)
			{
				_renewalDurationUnitCountDefault = Utility.XMLHelper.GetAttributeInt(nodeRenewalDurationUnitCount, XMLNames._A_Default);
				_renewalDurationUnitCount = Utility.XMLHelper.GetValueInt(nodeRenewalDurationUnitCount);
			}
		}