protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				_searchCriteria = (Business.SearchCriteria)Context.Items[Common.Names._CNTXT_SearchCriteria];
				_searchResultColumns = (Business.SearchResultSortField[])Context.Items[Common.Names._CNTXT_SearchResultColumns];

				((StandardHeader)header).PageTitle = "Search Results";
				SetColumns();
				grdResults.SortColumn = 0;
				grdResults.SortAscending = true;
				grdResults.HeaderRowSize = _itatSystem.SearchResultsHeaderRowSize;
				grdResults.HeaderStyle.Wrap = true;
				DisplayResults();
			}
		}
		private Business.SearchCriteria GetSearchCriteria()
		{
			Business.SearchCriteria criteria = new Business.SearchCriteria();
			criteria.ManagedItemNumber = txtManagedItemNumber.Text;

			if (ddlTemplate.SelectedIndex > 0)
				criteria.TemplateId = new Guid(ddlTemplate.SelectedValue);
			else
				criteria.TemplateId = null;

			if (ddlStatus.SelectedIndex > 0)
			{
				criteria.Statuses.Add(ddlStatus.SelectedValue);
			}
			else
			{
				//build list of statuses that were in the Status dropdown
				if (_securityHelper == null)
					_securityHelper = new Business.SecurityHelper(_itatSystem);
				List<Business.Status> statuses = _itatSystem.ViewableStatuses(_securityHelper.UserRoles);
				foreach (Business.Status status in statuses)
					criteria.Statuses.Add(status.Name);
			}

			if (!string.IsNullOrEmpty(txtKeywords.Text))
				criteria.KeyWords = txtKeywords.Text;
			else
				criteria.KeyWords = null;

			//Read system term controls
			foreach (Business.Term term in _itatSystem.Terms)
			{
				switch (term.TermType)
				{
					case Kindred.Knect.ITAT.Business.TermType.Date:
					case Kindred.Knect.ITAT.Business.TermType.Renewal:
						switch (term.DBFieldName)
						{
							case Data.DataNames._C_Term3:
							case Data.DataNames._C_Term6:
							case Data.DataNames._C_Term7:
								DateTime dt;
								Business.SearchCriteria.DateRange dateRange = new Business.SearchCriteria.DateRange();
								if (DateTime.TryParse(Request.Form[Helper.ControlID(term.Name, Common.Names._IDENTIFIER_StartDate)], out dt))
									dateRange.Start = dt;
								if (DateTime.TryParse(Request.Form[Helper.ControlID(term.Name, Common.Names._IDENTIFIER_EndDate)], out dt))
									dateRange.End = dt;
								switch (term.DBFieldName)
								{
									case Data.DataNames._C_Term3:
										criteria.DateTerm3Range = dateRange;
										break;

									case Data.DataNames._C_Term6:
										criteria.DateTerm6Range = dateRange;
										break;

									case Data.DataNames._C_Term7:
										criteria.DateTerm7Range = dateRange;
										break;
								}
								break;
						}
						break;

					case Kindred.Knect.ITAT.Business.TermType.Facility:
						Business.FacilityTerm facilityTerm = term as Business.FacilityTerm;
						string strFacID = Request.Form[Helper.ControlID(term.Name, Kindred.Knect.ITAT.Business.TermType.Facility)];
						if (!string.IsNullOrEmpty(strFacID))
						{
							int facID = int.Parse(strFacID);
							if (facID > 0)
							{
								criteria.FacilityIds.Add(int.Parse(strFacID));
							}
							else
							{
								Business.FacilityCollection facilities;
								if (facilityTerm.UseUserSecurity ?? false)
									if (facilityTerm.IncludeChildren ?? false)
										facilities = Business.FacilityCollection.FilteredFacilityList(_securityHelper.AllUserFacilities, facilityTerm);
									else
										facilities = Business.FacilityCollection.FilteredFacilityList(_securityHelper.UserFacilities, facilityTerm);
								else
									facilities = Business.FacilityCollection.FilteredFacilityList(Business.FacilityCollection.FacilityList(Data.Facility.CorporateFacilityId, facilityTerm.IncludeChildren ?? false), facilityTerm);
								criteria.FacilityIds.AddRange(facilities.Keys);
							}
						}
						break;

					default:
						string value = Request.Form[Helper.ControlID(term.Name, term.TermType)];
						if (!string.IsNullOrEmpty(value))
						{
							value = criteria.UpdateTermValue(term.DBFieldName, value, _itatSystem);
							switch (term.DBFieldName)
							{
								case Data.DataNames._C_Term1:
									criteria.TextTerm1 = value;
									break;

								case Data.DataNames._C_Term2:
									criteria.TextTerm2 = value;
									break;

								case Data.DataNames._C_Term4:
									criteria.TextTerm4 = value;
									break;

								case Data.DataNames._C_Term5:
									criteria.TextTerm5 = value;
									break;

								default:
									break;
							}
						}
						break;
				}
			}

			foreach (Business.ExternalInterfaceConfig eic in _itatSystem.ExternalInterfaces)
			{
				Business.ExternalTerm extTerm = _externalTerms[eic.Name];
				if (extTerm.SelectedItems != null)
				{
					ExternalTermControl c = BuildExternalControl(eic);
					Business.ExternalInterfaceSearchCriteria eisc = new Kindred.Knect.ITAT.Business.ExternalInterfaceSearchCriteria();
					eisc.InterfaceConfigName = eic.Name;
					eisc.Values = new List<Business.ExternalInterfaceSearchCriteriaValue>();
					foreach (Business.ExternalInterfaceListItem eili in extTerm.SelectedItems)
					{
						Business.ExternalInterfaceSearchCriteriaValue eiscv = new Kindred.Knect.ITAT.Business.ExternalInterfaceSearchCriteriaValue();
						eiscv.KeyValue = eili.Key;
						foreach (string fieldName in eili.FieldValues.Keys)
							eiscv.Details.Add(new Kindred.Knect.ITAT.Business.ExternalInterfaceSearchCriteriaDetail(fieldName, eili.FieldValues[fieldName]));
						eisc.Values.Add(eiscv);
					}
					criteria.ExternalTermsCriteria.Add(eisc.InterfaceConfigName, eisc);
				}
			}
			return criteria;
		}
        public Business.SearchCriteria GetSearchCriteria(string ControlId)
        {
            Business.SearchCriteria criteria = new Business.SearchCriteria();

            //Read system term controls
            foreach (Business.Term term in _itatSystem.Terms)
            {
                switch (term.TermType)
                {
                    case Kindred.Knect.ITAT.Business.TermType.Date:
                    case Kindred.Knect.ITAT.Business.TermType.Renewal:
                        if (term.DBFieldName == Data.DataNames._C_Term3)
                        {
                            DateTime dt;
                            Business.SearchCriteria.DateRange dr = new SearchCriteria.DateRange();
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_StartDate)], out dt))
                                dr.Start = dt;
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_EndDate)], out dt))
                                dr.End = dt;
                            criteria.DateTerm3Range = dr;
                        }

                        else if (term.DBFieldName == Data.DataNames._C_Term6)
                        {
                            DateTime dt;
                            Business.SearchCriteria.DateRange dr = new SearchCriteria.DateRange();
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_StartDate)], out dt))
                                dr.Start = dt;
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_EndDate)], out dt))
                                dr.End = dt;
                            criteria.DateTerm6Range = dr;
                        }

                        else if (term.DBFieldName == Data.DataNames._C_Term7)
                        {
                            DateTime dt;
                            Business.SearchCriteria.DateRange dr = new SearchCriteria.DateRange();
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_StartDate)], out dt))
                                dr.Start = dt;
                            if (DateTime.TryParse(Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Common.Names._IDENTIFIER_EndDate)], out dt))
                                dr.End = dt;
                            criteria.DateTerm7Range = dr;
                        }
                        break;

                    case Kindred.Knect.ITAT.Business.TermType.Facility:
                        Business.FacilityTerm facilityTerm = term as Business.FacilityTerm;
                        string strFacID = Request.Form[ControlId + "$" + Helper.ControlID(term.Name, Kindred.Knect.ITAT.Business.TermType.Facility)];
                        if (!string.IsNullOrEmpty(strFacID))
                        {
                            int facID = int.Parse(strFacID);
                            if (facID > 0)
                            {
                                criteria.FacilityIds.Add(int.Parse(strFacID));
                            }
                            else
                            {
                                Business.FacilityCollection facilities;
                                if (facilityTerm.UseUserSecurity ?? false)
                                    if (facilityTerm.IncludeChildren ?? false)
                                        facilities = Business.FacilityCollection.FilteredFacilityList(new Business.SecurityHelper(_itatSystem).AllUserFacilities, facilityTerm);
                                    else
                                        facilities = Business.FacilityCollection.FilteredFacilityList(new Business.SecurityHelper(_itatSystem).UserFacilities, facilityTerm);
                                else
                                    facilities = Business.FacilityCollection.FilteredFacilityList(Business.FacilityCollection.FacilityList(Data.Facility.CorporateFacilityId, facilityTerm.IncludeChildren ?? false), facilityTerm);
                                criteria.FacilityIds.AddRange(facilities.Keys);
                            }
                        }
                        break;

                    default:
                        string value = Request.Form[ControlId + "$" + Helper.ControlID(term.Name, term.TermType)];
                        if (!string.IsNullOrEmpty(value))
                        {
                            value = criteria.UpdateTermValue(term.DBFieldName, value, null);
                            switch (term.DBFieldName)
                            {
                                case Data.DataNames._C_Term1:
                                    criteria.TextTerm1 = value;
                                    break;
                                case Data.DataNames._C_Term2:
                                    criteria.TextTerm2 = value;
                                    break;
                                case Data.DataNames._C_Term4:
                                    criteria.TextTerm4 = value;
                                    break;
                                case Data.DataNames._C_Term5:
                                    criteria.TextTerm5 = value;
                                    break;
                                default:
                                    break;
                            }
                        }
                        break;
                }
            }

            return criteria;
        }
		protected override void LoadViewState(object savedState)
		{
			base.LoadViewState(savedState);
			_searchCriteria = (Business.SearchCriteria)ViewState[VIEWSTATE_SEARCHCRITERIA];
			_searchResultColumns = (Business.SearchResultSortField[])ViewState[VIEWSTATE_SEARCH_RESULT_COLUMNS];
		}