protected override void LoadViewState(object savedState)
		{
			base.LoadViewState(savedState);
			_workflowId = (Guid)ViewState[_KH_VS_WORKFLOWID];
			_workflow = _template.FindWorkflow(_workflowId);
			_orgStates = (List<Business.State>)ViewState[_KH_VS_ORGSTATES];
			_workflowEditMode = (EditMode)ViewState[_KH_VS_WORKFLOWEDITMODE];
		}
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);
			if (!IsPostBack)
			{
				GetContextData();
			}
			_workflow = _template.FindWorkflow(_workflowId);
			if (!IsPostBack)
			{
				chkLimitTime.Checked = (_workflow.UseFunction ?? false);
				LoadValues();
				chkLimitTime.Focus();
			}
		}
		protected override void LoadViewState(object savedState)
		{
			base.LoadViewState(savedState);
            _workflowId = (Guid)ViewState[_KH_VS_WORKFLOWID];
            _workflow = _template.FindWorkflow(_workflowId);
			_stateIndex = (int)ViewState[_KH_VS_STATEINDEX];
			_editMode = (EditMode)ViewState[_KH_VS_EDITMODE];
			_workflowEditMode = (EditMode)ViewState[_KH_VS_WORKFLOWEDITMODE];
			_state = _workflow.States[_stateIndex]; //(Business.State)ViewState[_KH_VS_STATE];
            _orgStates = (List<Business.State>)ViewState[_KH_VS_ORGSTATES];
			if (_template.SecurityModel == Kindred.Knect.ITAT.Business.SecurityModel.Advanced)
			{
				_currentTermGroupId = (Guid)ViewState[_KH_VS_CURRENTTERMGROUPID];
			}
		}
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (!IsPostBack)
            {
                GetContextData();
            }

            _workflow = _template.FindWorkflow(_workflowId);

            if (!IsPostBack)
            {
                LoadValues();                
            }

        }
        protected void btnContinue_Click(object sender, EventArgs e)
        {
            txtWorkflowName.Text = txtWorkflowName.Text;
            if (_template.WorkflowExists(txtWorkflowName.Text))
                RegisterAlert(string.Format("The workflow name '{0}' is already being used.   You must select a different workflow name.", txtWorkflowName.Text));
            if (this.AlertCount > 0)
                return;

            if (_editMode == EditMode.Add)
            {
                //Note - similar code checks are made at the 'BaseTermEditPage' SetContextDataAndReturn call

                _workflow = new Business.Workflow(txtWorkflowName.Text, _template.IsManagedItem, _template);
                _template.Workflows.Add(_workflow);
            }
            
            Context.Items[Common.Names._CNTXT_Template] = _template;
            Context.Items[Common.Names._CNTXT_WorkflowEditMode] =  _editMode;
            Context.Items[Common.Names._CNTXT_WorkflowId] = _workflow.ID;  
            Server.Transfer("TemplateWorkflowMain.aspx");
        }
		private void ApplyTemplateUpdates()
		{
			if (Context.Items[Common.Names._CNTXT_Template] != null)
				_template = (Business.Template)Context.Items[Common.Names._CNTXT_Template];

			if (Context.Items[Common.Names._CNTXT_IsChanged] != null)
				if ((bool)Context.Items[Common.Names._CNTXT_IsChanged])
					IsChanged = true;

			if (Context.Items[Common.Names._CNTXT_WorkflowId] != null)
			{
				_workflowEditMode = (EditMode)Context.Items[Common.Names._CNTXT_WorkflowEditMode];
				_workflowId = (Guid)Context.Items[Common.Names._CNTXT_WorkflowId];
				_workflow = _template.FindWorkflow(_workflowId);
				txtWorkflowName.Text = _workflow.Name;
				chkboxDefaultWorkflow.Checked = (_template.ActiveWorkflowID == _workflowId);

				if (_template.ActiveWorkflowID == _workflowId)
					chkboxDefaultWorkflow.Enabled = false;

				if (Context.Items[Common.Names._CNTXT_FromWorkflowStateEdit] != null)
					_orgStates = (List<Business.State>)Context.Items[Common.Names._CNTXT_OrgStates];
				else
					_orgStates = _workflow.States;

			}

		}
		private void ReturnToCaller(bool updateValues)
		{

			if (updateValues)
			{
				if (chkboxDefaultWorkflow.Checked && _template.ActiveWorkflowID != _workflowId)
				{
					_template.ActiveWorkflowID = _workflowId;
					if (_template.IsManagedItem)
					{
						Business.ManagedItem mi = (Business.ManagedItem)_template;
						Business.Workflow wf = mi.FindWorkflow(_workflowId);
						if (wf != null)
							mi.State = wf.FindBaseState();
					}
				}
				Context.Items[Common.Names._CNTXT_Template] = _template;
				Context.Items[Common.Names._CNTXT_IsChanged] = true;
			}
			else
			{
				//If the user clicks Cancel and the EditMode == Add, then remove the newly added term from the collection
				if (_workflowEditMode == EditMode.Add)
				{
					_template.Workflows.Remove(_workflow);
					_workflow = null;
				}
				else
				{
					_workflow.States = _orgStates;
				}
				Context.Items[Common.Names._CNTXT_Template] = _template;
				Context.Items[Common.Names._CNTXT_IsChanged] = false;
			}
			Context.Items[Common.Names._CNTXT_EditMode] = _workflowEditMode;
			Server.Transfer("TemplateWorkflows.aspx");
		}
		private void GetContextData()
		{
			if (Context.Items[Common.Names._CNTXT_FromActionEdit] != null)
			{
				//returning from TemplateWorkflowActionEdit.aspx
				_template = (Business.Template)Context.Items[Common.Names._CNTXT_Template];
				if (Context.Items[Common.Names._CNTXT_IsChanged] != null)
				{
					if ((bool)Context.Items[Common.Names._CNTXT_IsChanged])
					{
						IsChanged = true;
					}
				}
				if (_template.SecurityModel == Business.SecurityModel.Advanced)
				{
					_currentTermGroupId = (Guid)Context.Items[Common.Names._CNTXT_TermGroupId];  // get the TermGroup that was passed to TemplateWorkflowActionEdit.aspx 
				}
			}
			else
			{
				//coming from TemplateWorkflowMain.aspx
				_editMode = (EditMode)Context.Items[Common.Names._CNTXT_EditMode];
			}
            _orgStates = (List<Business.State>)Context.Items[Common.Names._CNTXT_OrgStates];
            _workflowId = (Guid)Context.Items[Common.Names._CNTXT_WorkflowId];
            _workflow = _template.FindWorkflow(_workflowId);
			_workflowEditMode = (EditMode)Context.Items[Common.Names._CNTXT_WorkflowEditMode];
			_stateIndex = (int)Context.Items[Common.Names._CNTXT_StateIndex];   // get the State object that was passed to TemplateWorkflowActionEdit.aspx
			_state = _workflow.States[_stateIndex];
			if (_state == null)
				throw new Exception("State not found.");
		}
 protected override void LoadViewState(object savedState)
 {
     base.LoadViewState(savedState);
     _editMode = (EditMode)ViewState[_KH_VS_EDITMODE];
     _workflowId = (Guid)ViewState[_KH_VS_WORKFLOWID];
     _workflow = _template.FindWorkflow(_workflowId);
 }
		protected override void LoadViewState(object savedState)
		{
			base.LoadViewState(savedState);		
			_actionIndex = (int)ViewState[_KH_VS_ACTIONINDEX];
			_stateIndex = (int)ViewState[_KH_VS_STATEINDEX];
			_editMode = (EditMode)ViewState[_KH_VS_EDITMODE];
			_workflowEditMode = (EditMode)ViewState[_KH_VS_WORKFLOWEDITMODE];
            _workflowId = (Guid)ViewState[_KH_VS_WORKFLOWID];
            _workflow = _template.FindWorkflow(_workflowId);
            _action = _workflow.States[_stateIndex].Actions[_actionIndex];   // (Business.Action)ViewState[_KH_VS_ACTION];
			if (_template.SecurityModel == Business.SecurityModel.Advanced)
			{
				_selectedTermGroupId = (Guid)ViewState[_KH_VS_SELECTEDTERMGROUPID];
			}
            _orgStates = (List<Business.State>)ViewState[_KH_VS_ORGSTATES];
        }
		private void GetContextData()
		{
			_editMode = (EditMode)Context.Items[Common.Names._CNTXT_EditMode];
			_workflowEditMode = (EditMode)Context.Items[Common.Names._CNTXT_WorkflowEditMode];
			_actionIndex = (int)Context.Items[Common.Names._CNTXT_ActionIndex];
			_stateIndex = (int)Context.Items[Common.Names._CNTXT_StateIndex];
			_workflowId = (Guid)Context.Items[Common.Names._CNTXT_WorkflowId];
            _workflow = _template.FindWorkflow(_workflowId);
            if (_template.SecurityModel == Business.SecurityModel.Advanced)
            {
                _selectedTermGroupId = (Guid)Context.Items[Common.Names._CNTXT_TermGroupId];
            }
			_action = _workflow.States[_stateIndex].Actions[_actionIndex];
            _orgStates = (List<Business.State>)Context.Items[Common.Names._CNTXT_OrgStates];
            if (_action == null)
				throw new Exception("Action not found.");
		}