public override void ViewDidLoad ()
		{
			base.ViewDidLoad ();
			
			// Perform any additional setup after loading the view, typically from a nib
			if (this.RespondsToSelector (new Selector ("setAutomaticallyAdjustsScrollViewInsets:"))) {
				this.AutomaticallyAdjustsScrollViewInsets = false;
			}

			TCGlobals.getInstance.isAllowShowAlert = true;

			TCViewIdentity.getInstance.setObjectForKey ("TCSearchSpecialistViewController", this);
			TCNotificationCenter.defaultCenter.addObserver (this, MUtils.generateKeyFavorite (this), updateFavorite);
			TCNotificationCenter.defaultCenter.addObserver (this, MUtils.generateKeySearchSpecialist (this), updateSpecialistInfo);
			TCNotificationCenter.defaultCenter.addObserver (this, MConstants.kPostUpdateNavigationBarOfSearch, setUpAgainNavigationBar);
			TCNotificationCenter.defaultCenter.addObserver (this, MConstants.kPostSearchBarEmpty, searchBarEmpty);
			TCNotificationCenter.defaultCenter.addObserver (this, MConstants.kPostSearchExpertBeginClicked, beginSearch);
		
			loadingView = new TCLoadingOverlay (this, false, true);
			loadingView.build ();

			this.searchHelper = new TCSearchHelper (this);
			this.searchHelper.Delegate = this;

			this.resultView = TCResultView.Create ();
			this.resultView.Hidden = true;
			this.resultView.Frame = new CGRect (0.0f, 0.0f, this.viewResult.Frame.Width, this.viewResult.Frame.Height);
			this.resultView.buttonDimiss ().AddTarget (dismissKeyboard, UIControlEvent.TouchUpInside);
			this.resultView.setTextResult (TCLocalizabled.getText ("TextNoResultSpecialist"));

			this.viewResult.Add (this.resultView);
			if (!MApplication.getInstance ().isLogedIn) {
				this.searchBar.BecomeFirstResponder ();	
			}
				
			specialists = new List<SpecialistProfileInfos> ();
			resetBatchSize ();

			this.searchDelegate = new TCSearchBarDelegate (this);
			this.searchBar.Delegate = this.searchDelegate;
			this.searchBar.Placeholder = TCLocalizabled.getText ("TextPlaceholderSearch");
			this.searchBar.ReturnKeyType = UIReturnKeyType.Search;
			this.tableView.Source = new TCSearchTableViewSource (this);
			this.tableView.BackgroundColor = TCTheme.getInstance.getThemeColor (Theme.BackgroundBody);
			this.tableView.RowHeight = 115.0f;

			decorateUI ();

			if (isFromHomePage && (stringSearch == null || stringSearch.Equals (""))) {
				showNoResultView ();
			} else {
				this.searchBar.Text = stringSearch;
				this.searchDelegate.SearchButtonClicked (this.searchBar);
			}

			this.currentSort = TCGlobals.getInstance.getSortTypes () [TCSortTable.currentIndexPath.Row];
		}
		public void finishSearchRequest (TCSearchHelper self)
		{
			hideLoading ();
		}
		public void searchSuccess (TCSearchHelper self, SearchDTO result)
		{
			if (result == null || result.listSpecialistProfile == null || result.listSpecialistProfile.Count <= 0) {
				result = new SearchDTO ();
				result.listSpecialistProfile = new List<SpecialistProfileInfos> (); 
				result.isLimitSearchResult = false;

				this.showNoResultView ();
				
				if (this.searchBar.Text.Equals ("")) {
					this.hideNoResultView ();
				}
				
				this.hideLoading ();
			} else {
				if (!this.searchBar.Text.Equals ("")) {
					this.hideLoading ();
					this.hideNoResultView ();
				}
			}

			syncResultData (result);
		}
		public void searchFail (TCSearchHelper self)
		{
			MUtils.showNetworkFailed (this);
			this.start = this.specialists != null ? this.specialists.Count : 0;
		}
		public void beginSearchRequest (TCSearchHelper self)
		{
			showLoading ();
		}