/* When the user selects the new bowler's name and clicks the select button,
  * this function checks if the bowler being replaced is in the top row of the current bowlers
  * tables, if so the function swaps the bottom bowler details to the top row and inserts
  * the new bowler into the bottom row. */
 private void New_Bowler_Select_Click(object sender, EventArgs e)
 {
     if (Verify_Combo_Selection(New_Bowler_Combo_Box))
     {
         Create_Undo_Point();
         Player player = new Player();
         // Get new bowler name and Id.
         string newBowlerName = New_Bowler_Combo_Box.SelectedItem.ToString();
         int newBowlerId = player.Get_Bowler_Id(BowlList, newBowlerName);
         if (BowlList[InningsList[Innings_Id].topBowlId].Bowl_Bowling)
         {
             New_Bowler_Change_Top_Bowler();
         }
         if (newBowlerId > -1)
         {
             InningsList[Innings_Id].bottomBowlId = newBowlerId;
         }
         else
         {
             player.Create_Bowler((BowlList.Last().Bowl_Number) + 1, newBowlerName, true);
             InningsList[Innings_Id].bottomBowlId = BowlList.Last().Bowl_Number;
             BowlList.Add(player);
         }
         Update_Bowler_Bottom();
         Current_Bowler_Number_Bottom.BackColor = Color.White;
         New_Bowler_Combo_Box.Text = "Select New Bowler";
     }
     HideAllPanels();
 }
        // Inintialises all variables at the start of an innings
        private void Set_Default_Variables()
        {
            HideAllPanels();
            Innings innings = new Innings();
            innings.Create_Innings(MatchDetailsList, Toss_Winner_Combo_Box.SelectedItem.ToString(), Innings_Of);
            InningsList.Add(innings);
            // Gets the team name for the second innings
            GraphSeriesList.Add(InningsList[Innings_Id].Team_Name);
            Over over = new Over();
            over.Create_Over(0,0,0,0);
            OverAnalysisList.Add(over);

            // Sets Extra table details
            Wides_Total_Value.Text = innings.Extras_Wides.ToString();
            No_Balls_Total_Value.Text = innings.Extras_No_Balls.ToString();
            Byes_Total_Value.Text = innings.Extras_Byes.ToString();
            Leg_Byes_Total_Value.Text = innings.Extras_Leg_Byes.ToString();
            Penaltys_Total_Value.Text = innings.Extras_Penaltys.ToString();
            Total_Extras_Value.Text = innings.Extras_Total.ToString();

            // Sets match details
            Scoring_Date_Value.Text = innings.Date;
            Scoring_Innings_Of_Value.Text = InningsList[Innings_Id].Team_Name;
            Scoring_Total_Value.Text = innings.Innings_Total.ToString();
            Scoring_Wickets_Down_Value.Text = innings.Innings_Wickets.ToString();
            Scoring_Total_Overs_Value.Text = innings.Innings_Overs.ToString();

            // Initialise opening player objects
            Player batTop = new Player();
            Player batBottom = new Player();
            Player bowlTop = new Player();
            Player bowlBottom = new Player();

            if (Innings_Id == 0)
            {
                batTop.Create_Batsman((InningsList[0].topBatId + 1), Open_Select_Bat_1.SelectedItem.ToString(), true);
                batBottom.Create_Batsman((InningsList[0].bottomBatId + 1), Open_Select_Bat_2.SelectedItem.ToString(), false);
                bowlTop.Create_Bowler((InningsList[0].topBowlId + 1), Open_Select_Bowl_1.SelectedItem.ToString(), true);
                bowlBottom.Create_Bowler((InningsList[0].bottomBowlId + 1), Open_Select_Bowl_2.SelectedItem.ToString(), false);
            }
            else
            {
                batTop.Create_Batsman((InningsList[1].topBatId + 1), Open_Select_Bat_1_Inn_2.SelectedItem.ToString(), true);
                batBottom.Create_Batsman((InningsList[1].bottomBatId + 1), Open_Select_Bat_2_Inn_2.SelectedItem.ToString(), false);
                bowlTop.Create_Bowler((InningsList[1].topBowlId + 1), Open_Select_Bowl_1_Inn_2.SelectedItem.ToString(), true);
                bowlBottom.Create_Bowler((InningsList[1].bottomBowlId + 1), Open_Select_Bowl_2_Inn_2.SelectedItem.ToString(), false);
            }
            BatList.Add(batTop);
            BatList.Add(batBottom);
            BowlList.Add(bowlTop);
            BowlList.Add(bowlBottom);
            Update_Next_Batsman_List(batTop.Bat_Name);
            Update_Next_Batsman_List(batBottom.Bat_Name);
            Create_Graphs();
            Update_Last_Man_Out_Table();
        }