PageSourceSearch

http://www.tennisabstract.com/cgi-bin/player.cgi?p=106421/Daniil-Medvedev

html tennisabstract.com collected 2026-10-02 06:02:50 UTC 44,602 bytes, 678 lines download raw bytes

1
2<html><head>
3<title>Tennis Abstract: Daniil Medvedev Match Results, Splits, and Analysis</title>
4<link rel="stylesheet" href="https://www.tennisabstract.com/blue/style.css" type="text/css">
5<script type="text/javascript" src="https://www.tennisabstract.com/jquery-1.7.1-min.js"></script>
vendor: 1 bytes, line 5
5
6<script type="text/javascript" src="https://www.tennisabstract.com/jquery.tablesorter.js"></script>
vendor: 1 bytes, line 6
6
7<script type="text/javascript" src="https://www.tennisabstract.com/navbar.js"></script>
7
8
9<script type="text/javascript" src="https://www.tennisabstract.com/jsfrags/DaniilMedvedev.js"></script>
vendor: 1 bytes, line 9
9
10<script language="JavaScript">
11var currentTime = new Date();
12var month = currentTime.getMonth() + 1;
13var day = currentTime.getDate();
14var year = currentTime.getFullYear().toString();
15var mm, dd;
16if (month < 10) {mm = '0' + month.toString();}
17else {mm = month.toString();}
18if (day < 10) {dd = '0' + day.toString();}
19else {dd = day.toString();}
20var today = year + mm + dd;
21var one_day=1000*60*60*24;
22var nameparam = 'DaniilMedvedev';
23
24
25
26
27
28var fullname = 'Daniil Medvedev';
29var lastname = 'Medvedev';
30var currentrank = 6;
31var peakrank = 1;
32var peakfirst = 20220228;
33var peaklast = 20220829;
34var dob = 19960211;
35var ht = 198;
36var hand = 'R';
37var backhand = '2';
38var country = 'RUS';
39var shortlist = 0;
40var careerjs = 0;
41var active = 1;
42var lastdate = 0;
43var twitter = 'DaniilMedwed';
44var current_dubs = '"UNR"';
45var peak_dubs = '"UNR"';
46var peakfirst_dubs = '""';
47var liverank = '';
48var chartagg = 0;
49var photog = 'sirobi';
50var photog_credit = 'si.robi';
51var photog_link = 'https://www.flickr.com/photos/sirobi';
52var itf_id = '100157702';
53var atp_id = 'MM58';
54var dc_id = '';
55var wiki_id = 'Daniil_Medvedev';
56var elo_rating = '1956';
57var elo_rank = '11';
58 
59
60var fourspaces = "    ";
61                  
62function make(tag, attr, cont) {
63    if (arguments.length == 2 && (attr instanceof Array || typeof attr == "string")) {
64        cont = attr;
65        attributes = null;
66        }
67    var open = "<" + tag;
68    var close = "</" + tag + ">";
69    if (attr) {
70	for(var name in attr) {
71            attx = " " + name + '="' + attr[name] + '"';
72	    open = open.concat(attx);
73            }
74        }
75    open = open.concat(">");
76    if (cont instanceof Array) {
77	var content = cont.join("");
78	}
79    else {
80	var content = cont;
81	} 
82    var elem = open + content + close;
83    return elem;
84    }
85
86function sortRev(a,b) {return b - a;}
87
88var rmonths = {'Jan': '01',
89                'Feb': '02',
90                'Mar': '03',
91                'Apr': '04',
92                'May': '05',
93                'Jun': '06',
94                'Jul': '07',
95                'Aug': '08',
96                'Sep': '09',
97                'Oct': '10',
98                'Nov': '11',
99                'Dec': '12'
100                };
101
102var months = {'01': 'Jan',
103                '02': 'Feb',
104                '03': 'Mar',
105                '04': 'Apr',
106                '05': 'May',
107                '06': 'Jun',
108                '07': 'Jul',
109                '08': 'Aug',
110                '09': 'Sep',
111                '10': 'Oct',
112                '11': 'Nov',
113                '12': 'Dec'
114                };                        
115
116function calculateAge(dobString) {
117    // Extract the year, month, and day from the dobString (yyyymmdd)
118    let year = parseInt(dobString.substring(0, 4), 10);
119    let month = parseInt(dobString.substring(4, 6), 10) - 1; // Months are 0-indexed in JS Date
120    let day = parseInt(dobString.substring(6, 8), 10);
121    let birthDate = new Date(year, month, day);
122    let today = new Date();
123    let age = today.getFullYear() - birthDate.getFullYear();
124    let hasHadBirthdayThisYear = (
125        today.getMonth() > birthDate.getMonth() || 
126        (today.getMonth() === birthDate.getMonth() && today.getDate() >= birthDate.getDate())
127    );
128    if (!hasHadBirthdayThisYear) {
129        age--;
130    }
131    return age;
132}
133
134var bhdict = {'1': 'one', '2': 'two'};
135
136function insertPictureBio() {
137    var plname = '<span style="font-size:18px"><b>' + fullname + ' [' + country + ']</b></span>';
138    if (typeof dob === 'undefined') {var birthdate = '';}
139    else {
140        var bd = dob.toString();
141        //var birthdate = 'Date of birth: ' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4);
142        var birthdate = 'Age: ' + calculateAge(bd).toString();
143        birthdate = birthdate + ' (' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4) + ')';
144        }
145
146    var pic_src = 'https://www.tennisabstract.com/photos/' + fullname.toLowerCase().replace(/ /g, "_") + '-' + photog + '.jpg'
147    // background-color:d3d3d3; 
148    var biotable = '<p id="biog"><table style="border-spacing:0"><tr><td><img src="' + pic_src + '" height="225" width="150"></td>'
149    biotable = biotable + '<td>&nbsp;&nbsp;</td><td style="vertical-align:top">'
150    biotable = biotable + '<table cellpadding=2 cellspacing=1><tr><td>' + plname + fourspaces + fourspaces + '</td></tr>';  
151
152    if (typeof twitter != 'undefined' && twitter != "") {
153        var tline = '<a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>';
154        biotable = biotable + '<tr><td>' + tline + '</td></tr>';
155        }
156    else {
157        biotable = biotable + '<tr><td>&nbsp;</td></tr>'; 
158        }
159
160    biotable = biotable + '<tr><td>' + birthdate + '</td></tr>';
161    var handed;
162    if (hand == 'R') {handed = 'Plays: Right-handed';}
163    else if (hand == 'L') {handed = 'Plays: Left-handed';}
164    else {handed = '';}
165    if (typeof backhand != 'undefined' && backhand != '') {handed = handed.slice(0,-7) + ' 
165(' + bhdict[backhand] + '-handed backhand)';}
166    if (handed != '') {
167        biotable = biotable + '<tr><td>' + handed + '</td></tr>'; 
168        }
169
170    if (currentrank == '') {var crank = '';}
171    else {var crank = 'Current rank: <b>'+currentrank.toString()+'</b>'}; 
172    //if (typeof liverank != 'undefined' && liverank != '') {var lrank = '&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://live-tennis.eu/"><i>Live: ' + liverank.toString() + '</i></a>';}
173    //else {var lrank = '';} 
174    var lrank = '';
175    if (crank != '') {
176        biotable = biotable + '<tr><td>' + crank + lrank + '</td></tr>'; 
177        }  
178
179    if (peakrank != 'UNR') {var prank = 'Peak rank: <b>' + peakrank.toString()+'</b>';}
180    else {var prank = '';}
181    if (peakfirst != '') {
182    	var pf = peakfirst.toString();
183    	prank = prank + ' (' + pf.slice(6) + '-' + months[pf.slice(4, 6)] + '-' + pf.slice(0, 4) + ')';
184    	}
185    if (prank != '') {
186        biotable = biotable + '<tr><td>' + prank + '</td></tr>'; 
187        } 
188        
189    // if (peak_dubs == "" || peakfirst_dubs == "") {
190    //     var drank = '&nbsp;';
191    //     }
192    // else if (typeof current_dubs === 'undefined' || current_dubs == "" || current_dubs == "UNR") {
193    //     if (!(typeof peak_dubs === 'undefined' || peak_dubs == "")) {
194    //         var drank = "Doubles peak: <b>" + peak_dubs.toString() + '</b>'
195    //         var pfd = peakfirst_dubs.toString();
196    //         drank = drank + ' (' + pfd.slice(6) + '-' + months[pfd.slice(4, 6)] + '-' + pfd.slice(0, 4) + ')';
197    //         }
198    //     else {drank = "&nbsp;";}
199    //     }
200    // else {
201    //     var drank = "Doubles rank: <b>" + current_dubs.toString() + '</b>&nbsp;|&nbsp;';
202    //     drank = drank + 'Peak: <b>' + peak_dubs.toString() + '</b>'
203    //     }
204    //
205    //var drank = "&nbsp;";
206    //biotable = biotable + '<tr><td>' + drank + '</td></tr>'; 
207    
208    if (typeof elo_rating != 'undefined' && elo_rating != "") {
209        if (window.location.pathname.includes("wplayer")) {
210            var elo_url = "https://tennisabstract.com/reports/wta_elo_ratings.html";
211            }
212        else {var elo_url = "https://tennisabstract.com/reports/atp_elo_ratings.html";}
213        var elo_row = "Elo rank: <b>" + elo_rank + '</b> (<a href="' + elo_url + '">rating: ' + elo_rating + ')</a>';
214        }    
215    else {var elo_row = "&nbsp;";}
216
217    biotable = biotable + '<tr><td>' + elo_row + '</td></tr>';     
218        
219    var profiles = '';
220    // if (typeof atp_id != 'undefined' && atp_id != "") {
221    //     var atp_stem = "https://www.atpworldtour.com/en/players/";
222    //     profiles = profiles + '<a href="' + atp_stem + atp_id + '/overview" target="_blank" title="Profile at atpworldtour.com">ATP</a> | ';
223    //     }   
224    // if (typeof itf_id != 'undefined' && itf_id != "") {
225    //     var itf_stem = "https://www.itftennis.com/procircuit/players/player/profile.aspx?playerid=";
226    //     profiles = profiles + '<a href="' + itf_stem + itf_id + '" target="_blank" title="Profile at the ITF website">ITF</a> | ';
227    //     }
228    // if (typeof dc_id != 'undefined' && dc_id != "") {
229    //     var dc_stem = "https://www.daviscup.com/en/players/player.aspx?id=";
230    //     profiles = profiles + '<a href="' + dc_stem + dc_id + '" target="_blank" title="Profile at Davis Cup website">DC</a> | ';
231    //     }
232    if (typeof wiki_id != 'undefined' && wiki_id != "") {
233        var wiki_stem = "https://en.wikipedia.org/wiki/";
234        profiles = profiles + '<a href="' + wiki_stem + wiki_id + '" target="_blank" title="Profile at Wikipedia">Wikipedia</a> | '  ;
235        }
236        
237    if (profiles != '') {
238        biotable = biotable + '<tr><td>Profile: ' + profiles.slice(0,-3) + '</td><td>&nbsp;</td></tr>';
239        } 
240    else {
241        biotable = biotable + '<tr><td>&nbsp;</td></tr>'; 
242        } 
243
244    biotable = biotable + '<tr><td>&nbsp;</td></tr>';
245    biotable = biotable + '<tr><td>' + '<i>Photo: <a target="_blank" href="' + photog_link + '">' + photog_credit + '</a></i></td></tr>';
246
247    $("#bio").html(biotable + '</table></td><td>&nbsp;&nbsp;</td></tr></table></p>');
248    }
249
250function insertBio() {
251    var plname = '<span style="font-size:18px"><b>' + fullname + ' [' + country + ']</b></span>';
252    if (typeof dob === 'undefined') {var birthdate = '';}
253    else {
254        var bd = dob.toString();
255        //var birthdate = 'Date of birth: ' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4);
256        var birthdate = 'Age: ' + calculateAge(bd).toString();
257        birthdate = birthdate + ' (' + bd.slice(6) + '-' + months[bd.slice(4, 6)] + '-' + bd.slice(0, 4) + ')';
258        }
259    var handed;
260    if (hand == 'R') {handed = 'Plays: Right-handed';}
261    else if (hand == 'L') {handed = 'Plays: Left-handed';}
262    else {handed = '';}
263    if (typeof backhand != 'undefined' && backhand != '') {handed = handed.slice(0,-7) + ' 
263(' + bhdict[backhand] + '-handed backhand)';}
264    if (currentrank == '') {var crank = '';}
265    else {var crank = 'Current rank: <b>'+currentrank.toString()+'</b>'}; 
266    // if (typeof liverank != 'undefined' && liverank != '') {var lrank = '&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://live-tennis.eu/"><i>Live: ' + liverank.toString() + '</i></a>';}
267    // else {var lrank = '';}
268    var lrank = '';
269    if (peakrank != 'UNR') {var prank = 'Peak rank: <b>' + peakrank.toString()+'</b>';}
270    else {var prank = '';}
271    if (peakfirst != '') {
272    	var pf = peakfirst.toString();
273    	prank = prank + ' (' + pf.slice(6) + '-' + months[pf.slice(4, 6)] + '-' + pf.slice(0, 4) + ')';
274    	}
275    //if (typeof twitter != 'undefined' && twitter != "") {var tline = 'Twitter: <a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>';}
276    if (typeof twitter != 'undefined' && twitter != "") {var tline = '<a href="https://twitter.com/' + twitter + '" target="_blank">@' + twitter + '</a>';}
277    else {var tline = '';}
278    var biotable = '<p id="biog"><table cellpadding=1 cellspacing=1><tr><td>' + plname + fourspaces + fourspaces + '</td><td>' + tline + '</td></tr>';
279    if (birthdate != '') {var rowtwo = '<tr><td>' + birthdate + fourspaces + fourspaces + '</td><td>' + handed + '</td></tr>';}
280    else {var rowtwo = '<tr><td>' + handed + '</td><td>&nbsp;</td></tr>';}
281    if (crank != '') {var rowthree = '<tr><td>' + crank + lrank + '</td><td>' + prank + '</td></tr>';}
282    else {var rowthree = '<tr><td>' + prank + '</td><td>&nbsp;</td></tr>';}
283    
284    var profiles = '';
285    // if (typeof atp_id != 'undefined' && atp_id != "") {
286    //     var atp_stem = "https://www.atpworldtour.com/en/players/";
287    //     profiles = profiles + '<a href="' + atp_stem + atp_id + '/overview" target="_blank" title="Profile at atpworldtour.com">ATP</a> | ';
288    //     }   
289    // if (typeof itf_id != 'undefined' && itf_id != "") {
290    //     var itf_stem = "https://www.itftennis.com/procircuit/players/player/profile.aspx?playerid=";
291    //     profiles = profiles + '<a href="' + itf_stem + itf_id + '" target="_blank" title="Profile at the ITF website">ITF</a> | ';
292    //     }
293    // if (typeof dc_id != 'undefined' && dc_id != "") {
294    //     var dc_stem = "https://www.daviscup.com/en/players/player.aspx?id=";
295    //     profiles = profiles + '<a href="' + dc_stem + dc_id + '" target="_blank" title="Profile at Davis Cup website">DC</a> | ';
296    //     }
297    if (typeof wiki_id != 'undefined' && wiki_id != "") {
298        var wiki_stem = "https://en.wikipedia.org/wiki/";
299        profiles = profiles + '<a href="' + wiki_stem + wiki_id + '" target="_blank" title="Profile at Wikipedia">Wikipedia</a> | '  ;
300        }
301        
302    if (profiles != '') {
303        var profile_row = '<tr><td>Profile: ' + profiles.slice(0,-3) + '</td><td>&nbsp;</td></tr>';
304        } 
305    else {var profile_row = '<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';} 
306    
307    if (typeof elo_rating != 'undefined' && elo_rating != "") {
308        if (window.location.pathname.includes("wplayer")) {
309            var elo_url = "https://tennisabstract.com/reports/wta_elo_ratings.html";
310            }
311        else {var elo_url = "https://tennisabstract.com/reports/atp_elo_ratings.html";}
312        var elo_row = "Elo rank: <b>" + elo_rank + '</b> (<a href="' + elo_url + '">rating: ' + elo_rating + ')</a>';
313        rowfour = '<tr><td>' + elo_row + '</td><td>&nbsp;</td></tr>';
314        }  
315    else {var rowfour = "";}    
316
317    $("#bio").html(biotable + rowtwo + rowthree + rowfour + profile_row + '</table></p>');
318    }    
319
320$(document).ready(function() { 
321
322    //$("#navbar").html(navbar);
323    
324    if (typeof navbar !== 'undefined') {
325        $("#navbar").html(navbar);
326        } 
327
328    if (typeof photog == 'undefined' || photog == '') {
329        insertBio();
330        }
331    else {
332        insertPictureBio();
333        }
334        
335    $("#main").html(player_frag)
336    $("#menu").html(frag_menu)
337    
338    $("#recent-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
339    $("#recent-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
340                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
341                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
342                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
343                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
344                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
345                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
346                                    }}
347                                   );
348                                   
349    $("#recent-events").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
350    $("#recent-events").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
351                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
352                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
353                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
354                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
355                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
356                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
357                                    }}
358                                   );                                   
359
360    $("#recent-finals").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
361    $("#recent-finals").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
362                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
363                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
364                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
365                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
366                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
367                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
368                                    }}
369                                   );
370                                   
371    $("#tour-years").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
372    $("#tour-years").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
373                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
374                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
375                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
376                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
377                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
378                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
379                                    }}
380                                   );
381                                   
382    $("#chall-years").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
383    $("#chall-years").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
384                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
385                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
386                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
387                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
388                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
389                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
390                                    }}
391                                   );
392                                   
393    $("#career-splits").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
394    $("#career-splits").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
395                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
396                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
397                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
398                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
399                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
400                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
401                                    }}
402                                   );
403                                   
404    $("#last52-splits").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
405    $("#last52-splits").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
406                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
407                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
408                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
409                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
410                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
411                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
412                                    }}
413                                   );
414                                   
415    $("#news-analysis").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
416    $("#news-analysis").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
417                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
418                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
419                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
420                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
421                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
422                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
423                                    }}
424                                   );
425                                   
426    $("#mcp-serve").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
427    $("#mcp-serve").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
428                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
429                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
430                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
431                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
432                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
433                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
434                                    }}
435                                   );
436                                   
437    $("#mcp-return").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
438    $("#mcp-return").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
439                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
440                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
441                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
442                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
443                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
444                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
445                                    }}
446                                   );
447                                   
448    $("#mcp-rally").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
449    $("#mcp-rally").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
450                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
451                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
452                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
453                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
454                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
455                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
456                                    }}
457                                   );
458
459    $("#mcp-tactics").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
460    $("#mcp-tactics").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
461                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
462                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
463                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
464                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
465                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
466                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
467                                    }}
468                                   );
469                                   
470    $("#head-to-heads").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
471    $("#head-to-heads").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
472                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
473                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
474                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
475                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
476                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
477                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
478                                    }}
479                                   );
480                                   
481    $("#tour-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
482    $("#tour-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
483                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
484                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
485                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
486                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
487                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
488                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
489                                    }}
490                                   );
491                                   
492    $("#match-results").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
493    $("#match-results").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
494                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
495                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
496                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
497                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
498                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
499                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
500                                    }}
501                                   );
502                                   
503    $("#career-splits-chall").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
504    $("#career-splits-chall").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
505                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
506                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
507                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
508                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
509                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
510                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
511                                    }}
512                                   );
513                                   
514    $("#last52-splits-chall").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
515    $("#last52-splits-chall").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
516                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
517                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
518                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
519                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
520                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
521                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
522                                    }}
523                                   );
524                                   
525    $("#year-end-rankings").attr('border', 0).attr('cellspacing', 
5250).attr('cellpadding', 4);
526    $("#year-end-rankings").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
527                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
528                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
529                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
530                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
531                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
532                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
533                                    }}
534                                   );
535                                   
536    $("#titles-finals").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
537    $("#titles-finals").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
538                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
539                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
540                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
541                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
542                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
543                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
544                                    }}
545                                   );
546                                   
547    $("#doubles").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
548    $("#doubles").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
549                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}
550                                    }}
551                                   );
552    $("#mixed-doubles").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
553    $("#mixed-doubles").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
554                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false}
555                                    }}
556                                   );
557                                   
558    $("#pbp-points").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
559    $("#pbp-points").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
560                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
561                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
562                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
563                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
564                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
565                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
566                                    }}
567                                   );
568                                   
569    $("#pbp-games").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
570    $("#pbp-games").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
571                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
572                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
573                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
574                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
575                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
576                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
577                                    }}
578                                   );
579                                   
580    $("#pbp-stats").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
581    $("#pbp-stats").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
582                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
583                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
584                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
585                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
586                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
587                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
588                                    }}
589                                   );
590                                   
591    $("#serve-speed").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
592    $("#serve-speed").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
593                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
594                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
595                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
596                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
597                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
598                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
599                                    }}
600                                   );
601                                   
602    $("#winners-errors").attr('border', 0).attr('cellspacing', 0).attr('cellpadding', 4);
603    $("#winners-errors").tablesorter( {headers: {0: {sorter:false}, 1: {sorter:false}, 2: {sorter:false}, 3: {sorter:false},
604                                                 4: {sorter:false}, 5: {sorter:false}, 6: {sorter:false}, 7: {sorter:false},
605                                                8: {sorter:false}, 9: {sorter:false}, 10: {sorter:false}, 11: {sorter:false},
606                                                12: {sorter:false}, 13: {sorter:false}, 14: {sorter:false}, 15: {sorter:false},
607                                                16: {sorter:false}, 17: {sorter:false}, 18: {sorter:false}, 19: {sorter:false},
608                                                20: {sorter:false}, 21: {sorter:false}, 22: {sorter:false}, 23: {sorter:false},
609                                                24: {sorter:false}, 25: {sorter:false}, 26: {sorter:false}, 27: {sorter:false}
610                                    }}
611                                   );
612                                   
613    $.getScript("https://www.tennisabstract.com/jquery.ui.core.js", function() {});
614    $.getScript("https://www.tennisabstract.com/jquery.ui.position.js", function() {});
615    $.getScript("https://www.tennisabstract.com/jquery.ui.widget.js", function() {});
616    $.getScript("https://www.tennisabstract.com/mwplayerlist.js", function() {}); 
617    $.getScript("https://www.tennisabstract.com/jquery.ui.autocomplete.js", function() {});    
618    $('#playersearch').append($('<input>').attr('id', 'tags'));
619
620    var searchbox = "Player Search";		
621    $("#tags").val(searchbox);
622    $("#tags").focus(function() {
623        if ($(this).val() == searchbox) {$(this).val("");}
624        $( "#tags" ).autocomplete({
625                source: playerlist,
626                minLength: 2,
627                select: function(e, ui) {
628                    var playerselect = ui.item.value;
629                    var player = playerselect.slice(4);
630                    var mw = playerselect.slice(1,2);
631                    if (mw == 'M') {
632                        var playerurl = 'https://www.tennisabstract.com/cgi-bin/player.cgi?p=' + player.replace(/ /g, '');
633                        }
634                    else {
635                        var playerurl = 'https://www.tennisabstract.com/cgi-bin/wplayer.cgi?p=' + player.replace(/ /g, '');
636                        }                        
637                    window.open(playerurl, "_self");
638                    }
639            });
640        }); 
641    })
642
643
644</script>
644
645<style type="text/css">
646u {    
647    border-bottom: 1px dotted #000;
648    text-decoration: none;
649}
650
651</style>
652</head>
653<body>
654
655<div id="header">
656
657<div id="navbar">
658</div>
659
660<table width=1240px>
661<tr><td>&nbsp;</td><td>&nbsp;</td>
662</tr>
663<tr>
664<td align="left" style="vertical-align:top"><span id="bio">&nbsp;</span>
665</td>
666<td id="menu" align="right" style="vertical-align:top">&nbsp;</td>
667</tr>
668</tr></table>
669</div>
670
671<div id="main">
672
673</div>
674</div>
675
676<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a441801d3cdfe1d7',t:'MTc5MDkyMDk2OQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
676<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"592714df19074b3b85668cfe8f554b86","r":1,"spa":2}' crossorigin="anonymous"></script>
676
677</body>
678

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.