/// <summary>
 /// Selects the grid item that is currently being highlighted.
 /// </summary>
 public static async void Select()
 {
     PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false);
     if (currentHoverIndex != 8 && currentHoverIndex != 6 && currentHoverIndex != 7)
     {
         _scale.CallFunction("SET_GRID_ITEM_VOTE", currentHoverIndex, 0, 0, true, true);
         lastSelection = new KeyValuePair <int, int>(currentPage, currentHoverIndex);
     }
     else if (currentHoverIndex != 7)
     {
         if (currentPage < GridPages.Count() - 1 && currentHoverIndex == 8)
         {
             await ShowPage(currentPage + 1, GridPages.Count());
         }
         if (currentPage > 0 && GridPages.Count() > 1 && currentHoverIndex == 6)
         {
             await ShowPage(currentPage - 1, GridPages.Count());
         }
     }
 }
        /// <summary>
        /// Shows the page provided by pageIndex.
        /// </summary>
        /// <param name="pageIndex">The page to show.</param>
        /// <param name="maxPages">Used to update the max pages on the top right corner.</param>
        /// <returns></returns>
        public static async Task ShowPage(int pageIndex, int maxPages)
        {
            if (GridPages.Count() < pageIndex)
            {
                Debug.WriteLine("Page does not exist.");
            }
            else
            {
                if (currentPage != pageIndex)
                {
                    if (lastSelection.Key == pageIndex)
                    {
                        await LoadPage(pageIndex, lastSelection.Value, currentHoverIndex, maxPages);
                    }
                    else
                    {
                        await LoadPage(pageIndex, -1, currentHoverIndex, maxPages);
                    }

                    currentPage = pageIndex;
                }
                if (!_scale.IsLoaded)
                {
                    RequestScaleformMovie("MP_NEXT_JOB_SELECTION");
                    while (_scale.IsLoaded)
                    {
                        await Delay(0);
                    }
                }
                if (currentHoverIndex < 6)
                {
                    _scale.CallFunction("SET_SELECTION", currentHoverIndex, GetVehicleName(GridPages[pageIndex].items[currentHoverIndex].title),
                                        GridPages[pageIndex].items[currentHoverIndex].description, false);
                }
                else
                {
                    _scale.CallFunction("SET_SELECTION", currentHoverIndex, GridPages[pageIndex].items[currentHoverIndex].title,
                                        GridPages[pageIndex].items[currentHoverIndex].description, false);
                }
                if (currentPage == lastSelection.Key)
                {
                    for (var i = 0; i < 9; i++)
                    {
                        _scale.CallFunction("SET_GRID_ITEM_VOTE", i, 0, 0, false, false);
                    }
                    _scale.CallFunction("SET_GRID_ITEM_VOTE", lastSelection.Value, 1, 0, true, false);
                }
                else
                {
                    if (lastSelection.Value == 7)
                    {
                        for (var i = 0; i < 9; i++)
                        {
                            _scale.CallFunction("SET_GRID_ITEM_VOTE", i, 0, 0, false, false);
                        }
                        _scale.CallFunction("SET_GRID_ITEM_VOTE", lastSelection.Value, 1, 0, true, false);
                    }
                }
                _scale.Render2D();
            }
        }