private void OnShowPostPositionBehavior(object sender, EventArgs e)
 {
     try
     {
         string trackCode = _myHorse.Parent.Parent.TrackCode;
         string surface = _myHorse.CorrespondingBrisHorse.TodaysSurface;
         int distance = _myHorse.CorrespondingBrisHorse.DistanceInYards;
         string distanceFlag = _myHorse.CorrespondingBrisHorse.TodaysDistanceFlag;
         var postPositionPopUp = new PostPositionStatsForm(trackCode, surface, distanceFlag, distance);
         postPositionPopUp.ShowDialog();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
        private void OnCellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            try
            {
                if (e.RowIndex < 0)
                {
                    return;
                }

                if (e.Button == MouseButtons.Right)
                {
                    Rectangle r = _grid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
                    _popupmenu.Items.Clear();
                    ToolStripItem item = _popupmenu.Items.Add("Show All Races For The Day", null, OnShowAllRacesForTheDay);
                    ToolStripItem item2 = _popupmenu.Items.Add("Copy Race Replays Link To Clipboard", null, OnCopyRaceReplaysLinkToClipboard);
                    ToolStripItem item3 = _popupmenu.Items.Add("Show Pace Figures", null, OnShowPaceFigures);

                    item.Tag = _grid["ID_PP_OBJECT", e.RowIndex].Value;
                    item2.Tag = _grid["ID_PP_OBJECT", e.RowIndex].Value;
                    item3.Tag = _grid["ID_PP_OBJECT", e.RowIndex].Value;

                    _popupmenu.Show((Control) sender, r.Left + e.X, r.Top + e.Y);
                }
                else if (e.Button == MouseButtons.Left)
                {
                    int winnersNameColIndex = _grid.Columns["WinnersName"].Index;
                    int secondNameColIndex = _grid.Columns["SecondHorseName"].Index;
                    int thirdNameColIndex = _grid.Columns["ThirdHorseName"].Index;
                    int conditionColIndex = _grid.Columns["Race Class"].Index;
                    int jockeyColIndex = _grid.Columns["Jockey"].Index;

                    if (0 == e.ColumnIndex)
                    {
                        var pp = (BrisPastPerformance) _grid.Rows[e.RowIndex].Cells["ID_PP_OBJECT"].Value;
                        pp.Parent.CorrespondingHorse.SelectedRunningLine = pp;
                        for (int i = 0; i < _grid.Rows.Count; ++i)
                        {
                            PaintSelectedRunningLineCell(i);
                        }
                    }
                    else if (e.ColumnIndex == winnersNameColIndex ||
                             e.ColumnIndex == secondNameColIndex ||
                             e.ColumnIndex == thirdNameColIndex)
                    {
                        string horseName = _grid[e.ColumnIndex, e.RowIndex].Value.ToString();
                        var f = new ShowRacesByHorseForm(horseName);
                        f.ShowDialog();
                    }
                    else if (e.ColumnIndex == conditionColIndex)
                    {
                        var pp = (BrisPastPerformance) _grid.Rows[e.RowIndex].Cells["ID_PP_OBJECT"].Value;
                        _shortRaceChartControl.Bind(pp);

                        int raceNumber;
                        if (int.TryParse(pp.RaceNumber, out raceNumber))
                        {
                            _xRayCtrl.Bind(pp.Date, pp.TrackCode, pp.Parent.Name, raceNumber);
                        }
                        else
                        {
                            _xRayCtrl.Clear();
                        }
                    }
                    else if (e.ColumnIndex == jockeyColIndex)
                    {
                        var pp = (BrisPastPerformance) _grid.Rows[e.RowIndex].Cells["ID_PP_OBJECT"].Value;
                        var jsf = new JockeyStatisticsForm(pp.Jockey);
                        jsf.ShowDialog();
                    }
                    else if (e.ColumnIndex == _grid.Columns["PostPosition"].Index)
                    {
                        var ctrl = sender as Control;

                        var pp = (BrisPastPerformance) _grid.Rows[e.RowIndex].Cells["ID_PP_OBJECT"].Value;
                        string trackCode = pp.TrackCode;
                        string surface = pp.Surface.ToUpper();

                        if (surface == "ID")
                        {
                            surface = "d";
                        }

                        if (surface == "IT")
                        {
                            surface = "t";
                        }

                        int distance = pp.DistanceInYards;
                        string distanceFlag = pp.AboutDistanceFlag ? "A" : "";
                        var postPositionPopUp = new PostPositionStatsForm(trackCode, surface, distanceFlag, distance);
                        postPositionPopUp.ShowDialog();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }