/**
 * Create mechanism to load XSL document.
 */
var xmldocloaded = false;
var loadedxml;
var currentLoc = "leader"; // holds current sort.
var currentDir = "a";  // a, d are allowed vals
var golfers = new Array ();
var uid;
var majorSort = 'favorite';
var minorSortA = 'possort';
var minorSortB = 'lname';
var minorSortC = 'postee';
var splitscreen = true;
var favoritelink = "";
var addfavoritelink = "<a href=\"javascript:leadhandlegolferMouseDown('add-favorite')\" id='add-favorite'><img src='http://www.augusta.com/masters/images/leaderboard/btn-addfavorite.gif' width='108' height='21' alt='Add a favorite' style='border:none' ></a>";
var editfavoriteslink = "";
var savelink = "";
var displaysave = false;
var tempSort = "";
var tempSortArray = new Array();
var cookieGolfers = "";
var user = new Array();
var limitXXX =	10;
var mysortcol = "possort";
var flip = false;
var sponsorWhite = "http://www.augusta.com/masters/images/taylormade-leaderboard-2.gif";
var sponsorGray = "http://www.augusta.com/masters/images/taylormade-leaderboard-gray.gif";
var updateBioPosition = true;
var currentRound = "2009 Masters - Round 4";
var rail = "r4";

// Sponsored golfer array.
var spgolf = new Array ();
//spgolf[0] = new Array ();
//spgolf[1] = new Array ();
//spgolf[2] = new Array ();
//spgolf[3] = new Array ();
//spgolf[0][0] = 209;
//spgolf[0][1] = "<A class='leaderboard-sponsor' HREF=\"http://ad.doubleclick.net/jump/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0><IMG SRC=\"http://ad.doubleclick.net/ad/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0 WIDTH=1 HEIGHT=1 ALT=\"Click Here\"></A><a href=\"http://ad.doubleclick.net/clk;29483968;12966691;g?http://www.taylormadegolf.com/players.asp?tID=2&pID=2&BAC-06Augusta&attr=logo\">";
//spgolf[1][0] = 1209;
//spgolf[1][1] = "<A class='leaderboard-sponsor' HREF=\"http://ad.doubleclick.net/jump/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0><IMG SRC=\"http://ad.doubleclick.net/ad/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0 WIDTH=1 HEIGHT=1 ALT=\"Click Here\"></A><a href=\"http://ad.doubleclick.net/clk;29828191;13017091;f?http://www.taylormadegolf.com/players.asp?tID=2&pID=128&BAC-06Augusta&attr=logo\">";
//spgolf[2][0] = 142;
//spgolf[2][1] = "<A class='leaderboard-sponsor' HREF=\"http://ad.doubleclick.net/jump/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0><IMG SRC=\"http://ad.doubleclick.net/ad/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0 WIDTH=1 HEIGHT=1 ALT=\"Click Here\"></A><a href=\"http://ad.doubleclick.net/clk;29828188;13017090;k?http://www.taylormadegolf.com/players.asp?tID=2&pID=101&BAC-06Augusta&attr=logo\">";
//spgolf[3][0] = 2344;
//spgolf[3][1] = "<A class='leaderboard-sponsor' HREF=\"http://ad.doubleclick.net/jump/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0><IMG SRC=\"http://ad.doubleclick.net/ad/N2789.Augusta/B1787084.7;sz=1x1;ord=[%n]?\" BORDER=0 WIDTH=1 HEIGHT=1 ALT=\"Click Here\"></A><a href=\"http://ad.doubleclick.net/clk;29828184;13017087;m?http://www.taylormadegolf.com/players.asp?tID=2&pID=152&BAC-06Augusta&attr=logo \">";

function golfer () {
	this.name =			"";
	this.pos =			"";
	this.total =		"";
	this.thru =			"";
	this.r1 =			"";
	this.r2 =			"";
	this.r3 =			"";
	this.r4 =			"";
	this.strokes =		"";
	this.id =			"";
	this.favorite =		"";
	this.sponsored =	"";
}

function addGolfer (init, name, fname, lname, pos, possort, total, ttotal, thru, r1, r2, r3, r4, strokes, id, favorite, sponsored, teetime, teetime2, postee) {
	var tmp =		new golfer();
	tmp.init =		init;
	tmp.name =		name;
	tmp.fname =		fname;
	tmp.lname =		lname;
	tmp.pos =		pos;
	tmp.possort =	possort;
	tmp.postee =	postee;
	tmp.total =		total;
	tmp.ttotal =	ttotal;
	tmp.thru =		thru;
	tmp.r1 =		r1;
	tmp.r2 =		r2;
	tmp.r3 =		r3;
	tmp.r4 =		r4;
	tmp.strokes =	strokes;
	tmp.id =		id;
	tmp.favorite =	favorite;
	tmp.teetime =	teetime;
	tmp.teetime2 =	teetime2;
	tmp.sponsored = sponsored;
	golfers.push(tmp);
}

function drawTable (limit) {
	var table = "<table id=\"leaderboard-table\" align=\"center\" width=\"100%\" border=\"0\" cellpadding=\"3\" bgcolor=\"#052210\" cellspacing=\"1\">\n<tbody>\n<tr>\n";
	table += "<td colspan=\"9\" align=\"center\" valign=\"middle\"><h2>"+currentRound+"</h2><div id='controls-block'>"+ addfavoritelink;
	if (displaysave) {
		table += "" + savelink;
	}
	table += "" + editfavoriteslink + favoritelink + "<div style='clear:both'></div></div></td>\n</tr>\n";
	table += "<tr bgcolor=\"#1d452b\">\n<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('possort')\">Pos</a></td>\n<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('lname')\">Player</a>";
	table += "</td>\n<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('total')\">Tot</a></td>\n";
	table += "<td align=\"center\" valign=\"top\" class=\"player-column\">\nThru\n</td>\n";
	if (rail == 'r1') {
		table += "<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('r1')\">R1</a></td>\n";
	} else if (rail == 'r2') {
		table += "<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('r2')\">R2</a></td>\n";
	} else if (rail == 'r3') {
		table += "<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('r3')\">R3</a></td>\n";
	} else {
		table += "<td align=\"center\" valign=\"top\" class=\"player-column\"><a href=\"javascript:change('r4')\">R4</a></td>\n";
	}
	table += "</tr>";
	var top, style;
	if (limitXXX > 0) {
		top = limitXXX;
	} else {
		top = golfers.length;
	}

	var style, bgcolor;
	var favcount = 0;
	var regcount = 0;
	var totcount = 0;
	var lastpos = 0;
	var showleaderboard = true;
	for (var i = 0; i < top; i++) {
		if (golfers[i].favorite == 1){
			if (splitscreen==true) {
				style = "fav-split";
				bgcolor = "#4f4f4f";
				color = "#ffffff";
			} else if (totcount % 2 == 0) {
				style = "fav-even";
				bgcolor = "#4f4f4f";
				color = "#ffffff";
			} else {
				style = "fav-odd";
				bgcolor = "#4f4f4f";
				color = "#ffffff";
			}
		} else {
			if (totcount % 2 == 0) {
				style = "even";
				bgcolor = "#010101";
				color = "#ffffff";
			} else {
				style = "odd";
				bgcolor = "#313131";
				color = "#ffffff";
			}
			if (showleaderboard) {
				if (regcount == 5) {
					last = golfers[i].possort;
				} else if (regcount > 5) {
					if (last != golfers[i].possort) {
						showleaderboard = false;
					}
				}
			}
			regcount++;
		}
		if (showleaderboard) {
			// Cut players.
			if (golfers[i].possort == '999') {
				if (golfers[i].favorite == 1){
					if (splitscreen==true) {
						style = "fav-split-cut";
						bgcolor = "#4f4f4f";
						color = "#888888";
					} else if (i % 2 == 0) {
						style = "fav-even-cut";
						bgcolor = "#4f4f4f";
						color = "#888888";
					} else {
						style = "fav-odd-cut";
						bgcolor = "#4f4f4f";
						color = "#888888";
					}
				} else {
					if (i % 2 == 0) {
						style = "even-cut";
						bgcolor = "#000";
						color = "#888888";
					} else {
						style = "odd-cut";
						bgcolor = "#000000";
						color = "#888888";
					}
				}
			}
			totcount++;
			table += '<tr bgcolor="' + bgcolor + '" class="' + style + '">';
			table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].pos + '</font></td>';
			table += '<td class="golfer-name" align="left" nowrap="nowrap"><span style="font-size:12px;">' + golfers[i].name + "&nbsp;&nbsp;" + golfers[i].sponsored + '</span></td>';
			if (golfers[i].total == 0) {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">E</font></td>';
			} else if (golfers[i].total > 0) {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">+' + golfers[i].total + '</font></td>';
			} else if (golfers[i].total < 0) {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].total + '</font></td>';
			}
			if (golfers[i].thru != '-') {
				if (golfers[i].thru != 19) {
					table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].thru + '</font></td>';
				} else if (golfers[i].possort == 999) {
					table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">-</font></td>';
				} else {
					table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">F</font></td>';
				}
			} else {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].teetime2 + '</font></td>';
//				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">-</font></td>';
			}
			if (rail == 'r1') {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].r1 + '</font></td>';
			} else if (rail == 'r2') {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].r2 + '</font></td>';
			} else if (rail == 'r3') {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].r3 + '</font></td>';
			} else {
				table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">' + golfers[i].r4 + '</font></td>';
			}
			if (golfers[i].thru == '-') {
				//table += '<td align="center" nowrap="nowrap"><font color="'+color+'" face="Arial, Sans-Serif" size="2">-</font></td>';
			}
			table += '</tr>\n';
		}
	}
	table += "</table>\n";

	var preTournament = false;
	if (preTournament==true) {
		table += '<div style="background-color:#1d452b;margin:7px 7px 0 7px;text-align:center;padding:1px 1px 1px 1px"><div style="background-color:#052a14;color:#fff;font-size;12px;padding:10px">Come back  Thursday, April 9 for continually updated results from the <b>2009 Masters</b>.</div></div>';
	} else {
		table += "<div style=\"padding: 6px 0pt; font-size: 10px; color: rgb(204, 204, 204); text-align: center;\">Updated continually during play</div><div id=\"railboard-timestamp\">Last updated "+updatedStamp+"</div>\n";
	}

	return table;
}

function mysortfnFav(a,b) {
  if (a["favorite"] < b["favorite"]) {
	return -1;
  }
  else if (a["favorite"] > b["favorite"]) {
	return 1;
  }
  else if (a["favorite"] == 1) {
		// both players are favorites, try sorting on position
		if (a["possort"] != '-' && b["possort"] != '-') {
			// both players have started, sort on position
			if (parseInt(a["possort"]) < parseInt(b["possort"])) {
				return -1;	
			}
			else if (parseInt(a["possort"]) > parseInt(b["possort"])) {
				return 1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a["possort"] == '-' && b["possort"] == '-') {
			// both players have not started, sort on tee time
			if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a["possort"] != '-' && b["possort"] == '-') {
			return -1;
		} else if (a["possort"] == '-' && b["possort"] != '-') {
			return 1;
		}
  }
  else {
		// both players are not favorites, try sorting on position
		if (a["possort"] != '-' && b["possort"] != '-') {
			// both players have started, sort on position
			if (parseInt(a["possort"]) < parseInt(b["possort"])) {
				return -1;	
			}
			else if (parseInt(a["possort"]) > parseInt(b["possort"])) {
				return 1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a["possort"] == '-' && b["possort"] == '-') {
			// both players have not started, sort on tee time
			if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a["possort"] != '-' && b["possort"] == '-') {
			return -1;
		} else if (a["possort"] == '-' && b["possort"] != '-') {
			return 1;
		}
  }
}

function mysortFnFav2 (a, b) {
  if (a["favorite"] < b["favorite"]) {
	return -1;
  }
  else if (a["favorite"] > b["favorite"]) {
	return 1;
  }
  else if (a["favorite"] == 1) {
		// both players are favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a[mysortcol]) < parseInt(b[mysortcol])) {
				return -1;	
			}
			else if (parseInt(a[mysortcol]) > parseInt(b[mysortcol])) {
				return 1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
  else {
		// both players are not favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a[mysortcol]) < parseInt(b[mysortcol])) {
				return -1;	
			}
			else if (parseInt(a[mysortcol]) > parseInt(b[mysortcol])) {
				return 1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
}

function revmysort2 (a, b) {
  if (a["favorite"] < b["favorite"]) {
	return -1;
  }
  else if (a["favorite"] > b["favorite"]) {
	return 1;
  }
  else if (a["favorite"] == 1) {
		// both players are favorites, try sorting on position
		if (parseInt(a[mysortcol]) != '-' && parseInt(b[mysortcol]) != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a[mysortcol]) < parseInt(b[mysortcol])) {
				return 1;
			}
			else if (parseInt(a[mysortcol]) > parseInt(b[mysortcol])) {
				return -1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (parseInt(a[mysortcol]) == '-' && parseInt(b[mysortcol]) == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return 1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return -1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
  else {
		// both players are not favorites, try sorting on position
		if (parseInt(a[mysortcol]) != '-' && parseInt(b[mysortcol]) != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a[mysortcol]) < parseInt(b[mysortcol])) {
				return 1;	
			}
			else if (parseInt(a[mysortcol]) > parseInt(b[mysortcol])) {
				return -1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (parseInt(a[mysortcol]) == '-' && parseInt(b[mysortcol]) == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return 1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return -1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
}

function mysortFnFav3 (a, b) {
  if (a["favorite"] < b["favorite"]) {
	return -1;
  }
  else if (a["favorite"] > b["favorite"]) {
	return 1;
  }
  else if (a["favorite"] == 1) {
		// both players are favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (a[mysortcol] < b[mysortcol]) {
				return -1;	
			} else if (a[mysortcol] > b[mysortcol]) {
				return 1;
			} else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
  else {
		// both players are not favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (a[mysortcol] < b[mysortcol]) {
				return -1;	
			}
			else if (a[mysortcol] > b[mysortcol]) {
				return 1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return -1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return 1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
}

function revmysort3 (a, b) {
  if (a["favorite"] < b["favorite"]) {
	return -1;
  }
  else if (a["favorite"] > b["favorite"]) {
	return 1;
  }
  else if (a["favorite"] == 1) {
		// both players are favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (a[mysortcol] < b[mysortcol]) {
				return 1;	
			}
			else if (a[mysortcol] > b[mysortcol]) {
				return -1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return 1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return -1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
  else {
		// both players are not favorites, try sorting on position
		if (a[mysortcol] != '-' && b[mysortcol] != '-') {
			// both players have started, sort on position
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (a[mysortcol] < b[mysortcol]) {
				return 1;	
			}
			else if (a[mysortcol] > b[mysortcol]) {
				return -1;
			}
			else {
				// positions are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		}
		else if (a[mysortcol] == '-' && b[mysortcol] == '-') {
			// both players have not started, sort on tee time
			if (a["possort"] == 999 && b["possort"] != 999) {
				return 1;
			} else if (a["possort"] != 999 && b["possort"] == 999) {
				return -1;
			} else if (parseInt(a["teetime"]) < parseInt(b["teetime"])) {
				return 1;	
			}
			else if (parseInt(a["teetime"]) > parseInt(b["teetime"])) {
				return -1;
			}
			else {
				// tee times are tied, sort on name
				if (a["lname"]+a["fname"] < b["lname"]+b["fname"]) {
					return -1;	
				}
				else if (a["lname"]+a["fname"] > b["lname"]+b["fname"]) {
					return 1;
				}
			}
		} else if (a[mysortcol] != '-' && b[mysortcol] == '-') {
			return -1;
		} else if (a[mysortcol] == '-' && b[mysortcol] != '-') {
			return 1;
		}
  }
}

function transform (player, div, sort) {
	if (xmldocloaded == false) {
		savelink = " <a href=\"javascript:clearCookieGolfers();\" id=\"edit-favorites\"><img src=\"http://www.augusta.com/masters/images/leaderboard/btn-clear.gif\" width=\"43\" height=\"21\" alt=\"Clear favorites\" style=\"border:none\" ></a><a href=\"http://apps.augusta.com/alert/leaderboard.html?from=board";
		for (var i = 0; i < player.length; i++) {
			var id =		player[i].getAttribute('id');
			var pos =		player[i].getAttribute('pos');
			var possort =	player[i].getAttribute('pos_notie');
			var fname =		player[i].getAttribute('fname');
			var lname =		player[i].getAttribute('lname');
			var name =		"<a href=\"http://www.augusta.com/masters/players/holebyhole/" + fname + "_" + lname + ".shtml\">" + fname + " " + lname + "</a>";
			var total =		player[i].getAttribute('oTotal');
			var thru =		player[i].getAttribute('thru');
			var r1 =		player[i].getAttribute('round1');
			var r2 =		player[i].getAttribute('round2');
			var r3 =		player[i].getAttribute('round3');
			var r4 =		player[i].getAttribute('round4');
			var strokes =	player[i].getAttribute('totalScore');
			var teetime =	player[i].getAttribute('tee_time1');
			var teetime2 =	player[i].getAttribute('teetime2');
			var ttotal =	player[i].getAttribute('tTotal');
			var postee;
			if (possort == '-') {
				postee = teetime;
			} else {
				postee = possort;
			}
			var sponsored =	'&nbsp;';
			var favorite =	2;
			for (var j = 0; j < spgolf.length; j++) {
				if (spgolf[j][0] == id) {
					sponsored = spgolf[j][1];
					if ( possort=="999" ) {
						sponsored += "<img src=\"http://www.augusta.com/masters/images/taylormade-leaderboard-gray.gif\" border=0></a>";
					} else {
						sponsored += "<img src=\"http://www.augusta.com/masters/images/taylormade-leaderboard-2.gif\" border=0></a>";
					}
				}
			}
			for (var j = 0; j < user.length; j++) {
				if (user[j] > 0) {
					favoritelink = "<div id='split-toggle'><b>Favorites on top</b> | <a href=\"javascript:splitboard()\">Standard view</a></div>";
				}
				if (user[j] == id) {
					favorite = 1;
					savelink += "&prev"+j+"="+id+"&prev"+j+"name="+fname+" "+lname;
				}
			}
			if (user.length == 5) {
				addfavoritelink = "<img id='add-favorite' src='http://www.augusta.com/masters/images/leaderboard/btn-addvfavorite-disabled.gif' width='108' height='21' alt='Maximum of five favorites allowed' style='border:none' >";
			} else {
				addfavoritelink = "<a href=\"javascript:leadhandlegolferMouseDown('add-favorite')\" id='add-favorite'><img src='http://www.augusta.com/masters/images/leaderboard/btn-addfavorite.gif' width='108' height='21' alt='Add a favorite' style='border:none' ></a>";
			}
			addGolfer (i, name, fname, lname, pos, possort, total, ttotal, thru, r1, r2, r3, r4, strokes, id, favorite, sponsored, teetime, teetime2, postee);
			if ( (typeof(thisGolferId) != 'undefined') && (updateBioPosition == true) ){
				if (id == thisGolferId ) {
					var posdiv = document.getElementById('player-position-live');
					posdiv.innerHTML = '('+pos+')';
				}
			}
		}
		savelink += "&totalprev="+user.length;
		savelink += "\" id=\"savefavorites\" ><img src=\"http://www.augusta.com/masters/images/leaderboard/btn-save.gif\" width=\"45\" height=\"21\" style=\"border:none\" ></a>";
	}
	if (sort) {
		if (mysortcol == "lname") {
			if (flip) {
				golfers.sort (revmysort3);
			} else {
				golfers.sort (mysortFnFav3);
			}
		} else {
			if (flip) {
				golfers.sort (revmysort2);
			} else {
				golfers.sort (mysortFnFav2);
			}
		}
	}
	if (div) {
		div.innerHTML = drawTable (0);
	}
}

/*function reparse(text) {
	var temp  = new ActiveXObject('Microsoft.XMLDOM');
	temp.loadXML(text);
	return temp;
}*/

function loadboard (stylesheet, sort) {
	if (!sort) {
		sort = 'favorite';
	}
	var today = new Date();
	var hour = today.getHours();
	var min = today.getMinutes();
	var append = "?rand=" + hour + min;
	var div = document.getElementById('railboard');
	var xmldoc = "/masters/data/leaderboard.xml" + append;
	if (xmldocloaded == true) {
		transform (loadedxml.documentElement.getElementsByTagName('player'), div, sort);
	} else {

		// create the XMLHttpRequest object

		//req=new XMLHttpRequest();

	    var req=new ActiveXObject("Microsoft.XMLHTTP");

		if ( typeof req.overrideMimeType != 'undefined') {
			req.overrideMimeType('text/xml');
		}

		if(req){
			req.onreadystatechange=function(){
				if(req.readyState==4){

					if (req.status == 200) {
//						if (!req.responseXML.documentElement) {
//							doc = {documentElement:null};
//							doc.documentElement = reparse(req.responseText);
//						}
//						else {
						var doc = req.responseXML;
//						}
						//alert("Doc"+doc);
						var player = doc.getElementsByTagName('player');
						transform (player, div, sort);
						xmldocloaded = true;
						loadedxml = req.responseXML;
						//document.title = 'Masters 2007 presented by Augusta.com ' + ' . ' + req.responseText.substr(0,5);
					} else {
						alert ("There was a problem retrieving the XML data:\n" + req.statusText);
					}
				}
			};
		
			req.open("GET",xmldoc);
			req.setRequestHeader("Content-Type","application/xml");
			req.send(null);
		}
	}
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function change (elm) {
	if (elm == mysortcol) {
		if (flip) {
			flip = false;
		} else {
			flip = true;
		}
	} else {
		flip = false;
		mysortcol = elm;
	}

	loadboard ("/masters/includes/xsl/full.xsl", elm);
}

function splitboard () {
	if (splitscreen == false) {
		splitscreen = true;
		loadboard ("/masters/includes/xsl/full.xsl", "favorite");
		document.getElementById('split-toggle').innerHTML = "<div id='split-toggle'><b>Favorites on top</b> | <a href=\"javascript:splitboard()\">Standard view</a></div>";
	} else {
		splitscreen = false;
		loadboard ("/masters/includes/xsl/full.xsl", "init");
		document.getElementById('split-toggle').innerHTML = "<div id='split-toggle'><a href=\"javascript:splitboard()\">Favorites on top</a> | <b>Standard view</b></div>";
	}
}

// Function to load an element into the page.
function loadJS (id, src)
{
	var element = document.createElement('script');
	element.setAttribute('id', id);
	element.setAttribute('language', 'javascript');
	element.setAttribute('type', 'text/javascript');
	element.setAttribute('src', src);
	document.getElementsByTagName('head')[0].appendChild(element);
}

// Function to unload an element from the page.
function unloadContent (id)
{
	var results = false;
	if (document.getElementById(id))
	{
		var node = document.getElementById(id);
		node.parentNode.removeChild(node);
		results = true;
	}

	return results;
}

function loadchanges () {
	//loadJS ('leaderTitle', '/js/masters/ajax/currentround.js');
	uid = readCookie('augmstusr');
	if (uid > 0){
		if ( readCookie("golfers") != null ) {
			loadCookieGolfers();
			displaysave = false;
			editfavoriteslink = "<a href=\"http://apps.augusta.com/alert/customize.html?action=edit&from=leaderboard#edit\" id='edit-favorites'><img src='http://www.augusta.com/masters/images/leaderboard/btn-editfavorites.gif' width='90' height='21' alt='Edit favorites' style='border:none' ></a>";
			loadboard ("/masters/includes/xsl/full.xsl");
		} else {
			var file = 'http://apps.augusta.com/alert/js/alertlookup.jsx?user='+uid;
			loadJS ('userjs', file);
			editfavoriteslink = "<a href=\"http://apps.augusta.com/alert/customize.html?action=edit&from=leaderboard#edit\" id='edit-favorites'><img src='http://www.augusta.com/masters/images/leaderboard/btn-editfavorites.gif' width='90' height='21' alt='Edit favorites' style='border:none' ></a>";
		}
	} else {
		loadCookieGolfers();
		loadboard ("/masters/includes/xsl/full.xsl");
	}
}

function loadCookieGolfers () {
	cookieGolfers = readCookie("golfers");
	if (cookieGolfers != null) {
		var saved_golfers = cookieGolfers.split("_");
		for (var i=0; i < saved_golfers.length; i++) {
			user[i] = saved_golfers[i];
		}
		displaysave = true;
	}

}

function addCookieGolfer (gid) {
	if (cookieGolfers) {cookieGolfers += "_";}
	cookieGolfers += gid;
	WM_setCookie("golfers",cookieGolfers, 216, '/', 'augusta.com', false);
}

function clearCookieGolfers () {
	xmldocloaded = false;
	cookieGolfers = "";
	displaysave = false;
	golfers = new Array();
	user = new Array ();
	WM_setCookie("golfers","", -1, '/', 'augusta.com', false);
	unloadContent('userjs');
	loadboard("/masters/includes/xsl/full.xsl");
}

function drawLoginBox () {
	if ( (parseInt(readCookie("augmstusr")) < 1) || (! readCookie("augmstusr"))) {
		document.write('<div style="background-image:url(http://www.augusta.com/masters/images/side/login-bkg.gif);background-repeat:no-repeat;width:288px;height:36px;margin:0 0 12px 7px">');
		document.write('<div style="padding:12px;color:#aaa;font-weight:bold;text-align:center">');
		document.write('<a href="http://apps.augusta.com/alert/login.html?from=rail">Sign in</a> to retrieve saved favorites');
		document.write('</div>');
		document.write('</div>');
	} else {
		document.write('<div style="background-image:url(http://www.augusta.com/masters/images/side/login-bkg.gif);background-repeat:no-repeat;width:288px;height:36px;margin:0 0 12px 7px">');
		document.write('<div style="padding:12px;color:#aaa;font-weight:bold;text-align:center">');
		document.write('<a href="http://apps.augusta.com/alert/signout.html?from=rail">Sign out</a> of this profile');
		document.write('</div>');
		document.write('</div>');
	}
}

function redirectCourseTour () {
	var oldLoc = window.location.href;
	if ( oldLoc.match(/www\.augusta\.com\/masters\/coursetour\/hole(\d+)\//) ) {
		var newLoc = oldLoc.replace( /coursetour\/hole/, 'news/coursetour' );
		newLoc = newLoc.replace( /\/$/, '.shtml' );
		window.location = newLoc;
	}
}

//redirectCourseTour();


