private void CalcLP(string[] Fields, ITrack track)
        {
            //declares and assigns
            var dtRaces           = new DataTable();
            var dtAWRaces         = new DataTable();
            var iIndex            = 0;
            var iSurfaceIndex     = 325;
            var iPaceRatingsIndex = 815;
            var iAWSurfaceIndex   = 1402;
            int iOutVal;

            LP = 0;

            dtRaces.Columns.Add(new DataColumn("PaceRating", System.Type.GetType("System.Decimal")));
            dtAWRaces.Columns.Add(new DataColumn("PaceRating", System.Type.GetType("System.Decimal")));

            //process
            while (iIndex < 10)
            {
                iOutVal = 0;

                //get all allweather races
                if (Fields[iAWSurfaceIndex + iIndex].ToLower() == "a" && dtAWRaces.Rows.Count < 3)
                {
                    dtAWRaces.Rows.Add(dtAWRaces.NewRow());
                    dtAWRaces.Rows[dtAWRaces.Rows.Count - 1][0] = int.TryParse(Fields[iPaceRatingsIndex + iIndex], out iOutVal) ? iOutVal : 0;
                }

                //get all races of this track type
                if ((((Fields[iSurfaceIndex + iIndex].ToLower().Equals(track.TrackTypeShort.ToLower())) ||
                      ((track.AllWeather) && (Fields[iSurfaceIndex + iIndex].ToLower().Equals("t")))) &&
                     (!Fields[iAWSurfaceIndex + iIndex].ToLower().Equals("a"))) &&
                    (dtRaces.Rows.Count < 3))
                {
                    dtRaces.Rows.Add(dtRaces.NewRow());
                    dtRaces.Rows[dtRaces.Rows.Count - 1][0] = int.TryParse(Fields[iPaceRatingsIndex + iIndex], out iOutVal) ? iOutVal : 0;
                }

                //increment
                ++iIndex;
            }

            //if track is All Weather, and there are no races in the table to choose from, then use a Turf / Inner Turf race.
            if (track.AllWeather)
            {
                dtRaces.DefaultView.Sort   = "PaceRating desc";
                dtAWRaces.DefaultView.Sort = "PaceRating desc";

                LP = (dtAWRaces.Rows.Count > 0) ? Convert.ToInt32(dtAWRaces.DefaultView.ToTable().Rows[0]["PaceRating"].ToString()) : LP;
                LP = (LP.Equals((Decimal)0.00)) && (dtRaces.Rows.Count > 0) ? Convert.ToInt32(dtRaces.DefaultView.ToTable().Rows[0]["PaceRating"].ToString()) : LP;
            }
            else
            {
                switch (track.TrackTypeShort.ToLower())
                {
                case "t":
                    dtRaces.DefaultView.Sort   = "PaceRating desc";
                    dtAWRaces.DefaultView.Sort = "PaceRating desc";

                    LP = (dtRaces.Rows.Count > 0) ? Convert.ToInt32(dtRaces.DefaultView.ToTable().Rows[0]["PaceRating"].ToString()) : LP;
                    LP = (LP.Equals((Decimal)0.00)) && (dtAWRaces.Rows.Count > 0) ? Convert.ToInt32(dtAWRaces.DefaultView.ToTable().Rows[0]["PaceRating"].ToString()) : LP;

                    //if track is Turf / Inner Turf, and there are no races in the table to choose from, then use an All Weather race.
                    break;

                default:     //All others
                    if (dtRaces.Rows.Count > 0)
                    {
                        dtRaces.DefaultView.Sort = "PaceRating desc";
                        LP = Convert.ToInt32(dtRaces.DefaultView.ToTable().Rows[0]["PaceRating"].ToString());
                    }
                    break;
                }
            }
        }