var thruSort = true;
var holePar = new Array(4,4,4,4,3,5,3,4,4,4,4,3,4,5,4,4,3,5);
var sortCnt = 0;
var criteriaCnt = 0;
var scorecardCnt = 0;
var splitMsg = false;
var shotMsg = false;
var holeDisp = false; //indicates if hole display is open
var drag = false; //indicates scorecard has been moved
var posText = "POS";
var playerText = "PLAYER";
var todayText = "TODAY";
var toParText = "TO PAR";
var totalText = "TOTAL";
var roundsText = "ROUNDS";
var scorecardText = "SCORECARD";
var moreText = "MORE";
var posWidth = 49;
var pos1Width = 37; //width of pos num
var pos2Width = 12; //width of pos arrow
var playerWidth = 130;
var todayWidth = 53;
var thruWidth = 53;
var toParWidth = 53;
var roundWidth = 34;
var totalWidth = 48;
var moreWidth = 75;
var total2Width = 59;
var posSortX = "14px";
var playerSortX = "110px";
var todaySortX = "210px";
var thruSortX = "325px";
var rnd1SortX = "354px";
var rnd2SortX = "389px";
var rnd3SortX = "424px";
var rnd4SortX = "459px";
//var posUp = "<span style='color:#00B050;'>&#8593;</span>";
//var posDown = "<span style='color:#C00000;'>&#8595;</span>";
if (lang == "ja_US"){
posText = "&#38918;&#20301;&#12398;&#30053;";
playerText = "&#36984;&#25163;";
todayText = "&#26412;&#26085;&#12398;&#12473;&#12467;&#12450;";
totalText = "&#12488;&#12540;&#12479;&#12523;";
roundsText = "&#12521;&#12454;&#12531;&#12489;";
posWidth = 40;
playerWidth = 145;
todayWidth = 90;
thruWidth = 90;
totalWidth = 90;
total2Width = 90;
posSortX = 15;
playerSortX = 125;
todaySortX = 257;
thruSortX = 347;
rnd1SortX = 503;
rnd2SortX = 542;
rnd3SortX = 583;
rnd4SortX = 625;
}
var out;
var g=-1;
var b;
var row;
var insert;
var thruLink;
var top;
var rowNum;
var matchB; //past champion
var matchC; //american
var matchD; //international
var matchE; //amateurs
var matchF; //first-time
var matchG; //custom
var playerText;
var scoreText;
var moreText;
var name;
var rCnt = 0;
/**********************************************************
Writes out projected cut row in leaderboard table
**********************************************************/
var insertCut = false;
function checkCutPosition(x){
matchB = playerCheck("B",x);
matchC = playerCheck("C",x);
matchD = playerCheck("D",x);
matchE = playerCheck("E",x);
matchF = playerCheck("F",x);
matchG = playerCheck("G",x);
if(projectedCut != "none"){
projectedCut = parseInt(projectedCut);
}
if(players[x].total == "E"){
var playerTotal = 0;
} else {
var playerTotal = parseInt(players[x].total);
}
if(x+1 < players.length){
if(players[x+1].total == "E"){
var nextPlayerTotal = 0;
} else {
var nextPlayerTotal = parseInt(players[x+1].total);
}
} else {
var nextPlayerTotal = "theend";
}
//traceDebug("projectedCut="+projectedCut+", playerTotal="+playerTotal+", nextPlayerTotal="+nextPlayerTotal);
if (!cutPosition){
if((playerTotal <= projectedCut) && ((projectedCut < nextPlayerTotal) || nextPlayerTotal == "theend")){
if(sortItem == "Pos"){
traceDebug("Projected cut after "+players[x].name);
if(matchB && matchC && matchD && matchE && matchF && matchG) {
insertCut = true;
cutPosition = true;
}
}
}
}
}
/**********************************************************
Writes out expanded rows in leaderboard table
**********************************************************/
function getMoreRow(x){
moreText = "";
moreText+=' <table border="0" cellspacing="0" cellpadding="0" id="scoresMore">';
//moreText+=' <tr><td style="height:20px; overflow:hidden;"><div style="float:right; width:68px; text-align:center; padding:0px; margin:0px;"><a href="javascript:hideMore(\''+x+'\',\''+players[x].id+'Table\');" class="closeLink">close</a></div></td><tr>';
moreText+=' <tr>';
moreText+=' <td>';
moreText+=' <table cellpadding="0" cellspacing="0" border="0" id="moreTable">';
moreText+=' <tr>';
moreText+=' <td id="morePhoto"><img src="/images/players/sm/'+players[x].id+'_sm.jpg" width="52" height="79" border="0" alt="'+players[x].name+'"/></td>';
moreText+=' <td style="width:1px; height:91px; background-color:#000000; overflow:hidden;"></td>';
moreText+=' <td valign="top" style="width:350px; height:91px; overflow:hidden;">';
moreText+=' <table border="0" cellspacing="1" cellpadding="0">';
moreText+=' <tr align="center" class="hbhText"><td width="35"><b>Hole</b></td><td width="15">1</td><td width="15">2</td><td width="15">3</td><td width="15">4</td><td width="15">5</td><td width="15">6</td><td width="15">7</td><td width="15">8</td><td width="15">9</td><td width="15">10</td><td width="15">11</td><td width="15">12</td><td width="15">13</td><td width="15">14</td><td width="15">15</td><td width="15">16</td><td width="15">17</td><td width="15">18</td><td width="25"><b>Total</b></td></tr>';
showByHole(x);
moreText+=scoreText;
moreText+=' </table>';
moreText+=' </td>';
moreText+=' <td rowspan="3" style="width:1px; height:91px; background-color:#000000; overflow:hidden;"></td>';
moreText+=' <td width="181" rowspan="3" id="moreStats" valign="top" style="overflow:hidden;">';
moreText+=' <table width="181" cellpadding="0" cellspacing="0" border="0">';
moreText+=' <tr style="height:15px; line-height:15px; overflow:hidden;"><td class="statsTitle">Greens Hit</td><td class="statsTD1">'+players[x].greens+' of '+players[x].greens_att+'</td><td class="statsTD2">'+players[x].greens_per+'%</td></tr>';
moreText+=' <tr style="height:18px; line-height:18px; overflow:hidden;"><td class="statsTitle">Fairways Hit</td><td class="statsTD1">'+players[x].fairways+' of '+players[x].fairways_att+'</td><td class="statsTD2">'+players[x].fairways_per+'%</td></tr>';
moreText+=' <tr style="height:18px; line-height:18px; overflow:hidden;"><td class="statsTitle">Sand Saves</td><td class="statsTD1">'+players[x].sand_saves+' of '+players[x].bunker_shots+'</td><td class="statsTD2">'+players[x].sand_save_per+'%</td></tr>';
moreText+=' <tr style="height:18px; line-height:18px; overflow:hidden;"><td class="statsTitle">Number of Putts</td><td class="statsTD1">'+players[x].no_putts+'</td><td class="statsTD2">'+players[x].avg_putts_hole+' Strokes</td></tr>';
moreText+=' <tr style="height:23px; overflow:hidden;"><td class="statsTitle">Average Driving<br/>Distance</td><td class="statsTD1"></td><td class="statsTD2">'+players[x].avg_drv_dist+' Yards</td></tr>';
moreText+=' </table>';
moreText+=' </td>';
moreText+=' </tr>';
moreText+=' <tr><td colspan="4" style="height:1px; background-color:#000000;"></td></tr>';
moreText+=' <tr>';
moreText+=' <td style="height:13px; overflow:hidden; text-align:center;"><b>LEGEND:</b></td>';
moreText+=' <td style="height:13px; overflow:hidden;" colspan="2" align="center">';
moreText+=' <table cellpadding="0" cellspacing="0" border="0">';
moreText+=' <tr class="vstext" class="whiteBg">';
moreText+=' <td bgcolor="#F7E796" style="width:90px; line-height:13px;">&nbsp;Eagle and better</td><td width="2"></td>';
moreText+=' <td bgcolor="#F68270" style="width:40px; line-height:13px;">&nbsp;Birdie&nbsp;</td><td width="2"></td>';
moreText+=' <td bgcolor="#FFFFFF" style="width:32px; line-height:13px;">&nbsp;Par</td><td width="2"></td>';
moreText+=' <td bgcolor="#9BBB95" style="width:44px; line-height:13px;">&nbsp;Bogey</td><td width="2"></td>';
moreText+=' <td bgcolor="#CAAEC8" style="width:124px; line-height:13px;">&nbsp;Double Bogey and higher&nbsp;</div>';
moreText+=' </tr>';
moreText+=' </table>';
moreText+=' </td>';
moreText+=' </tr>';
moreText+=' </table>';
moreText+=' </td>';
moreText+=' </tr>';
moreText+=' </table>';
}
/**********************************************************
Writes out rows in leaderboard table
**********************************************************/
function getPlayerRow(x){
playerText = "";
matchB = playerCheck("B",x);
matchC = playerCheck("C",x);
matchD = playerCheck("D",x);
matchE = playerCheck("E",x);
matchF = playerCheck("F",x);
matchG = playerCheck("G",x);
if (players[x].name != 'Not Available'){
if (lang == "ja_US") {
players[x].name = getTranslatedName(players[x].id);
}
name = '<a href="/' + lang + '/players/bio' + players[x].id + '.html" class="tb1">' + players[x].name + '</a>';
}
else {
if (lang == "ja_US") {
players[x].name = getTranslatedName(players[x].id);
}
name = players[x].name;
}
//if (dispStatus.indexOf(players[x].player_status) > -1 && matchB && matchC && matchD && matchE && matchF && matchG){ //use this line when you don't want to show cut players
if (matchB && matchC && matchD && matchE && matchF && matchG){ //use this line when you want to show cut players
row = true;
b = (g*=-1)<0?1:2;
if (players[x].position == "999" && players[x].player_status == "B"){players[x].position = "&nbsp;";}
if (players[x].position == "999" && players[x].player_status == "C"){players[x].position = "MC";}
//if (players[x].position == "999"){players[x].position = players[x].player_status;}
//if (players[x].position == "999"){players[x].position = "MC";}
if (players[x].position == "1000"){players[x].position = "WD"; } 
if (players[x].player_status == "C") {players[x].position = "MC";}
playerText+=' <table cellpadding="0" cellspacing="0" border="0" id="'+players[x].id+'Table">';
playerText+=' <tr align="center" height="24">';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+pos1Width+'" align="center">' + players[x].position + '</td>';
playerText+=' <td width="'+pos2Width+'" align="left">' + players[x].pos_dir + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+playerWidth+'" align="left">&nbsp;&nbsp;' + name + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+todayWidth+'" align="center">' + players[x].today + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+thruWidth+'" align="center">' + players[x].thruDispAlt + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+toParWidth+'" align="center">' + players[x].total + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+roundWidth+'" align="center">' + players[x].r1 + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+roundWidth+'" align="center">' + players[x].r2 + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+roundWidth+'" align="center">' + players[x].r3 + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+roundWidth+'" align="center">' + players[x].r4 + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+totalWidth+'" align="center">' + players[x].total_score + '</td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' <td width="'+moreWidth+'" align="center" id="'+players[x].id+'More"><a href="javascript:toggleRow(\''+x+'\',\''+players[x].id+'Table\');" class="viewLink"><b>view</b></a></td>';
playerText+=' <td width="1" class="tblSeperatorGrey"><spacer type="block" width="1"></td>';
playerText+=' </tr>';
playerText+=' </table>';
top++;
}
matchB = true; //past champion
matchC = true; //american
matchD = true; //international
matchE = true; //amateurs
matchF = true; //first-time
matchG = true; //custom
if (players[x].start_type == "N" && (splitMsg == true || shotMsg == true)){
document.getElementById("shotMsgDiv").innerHTML = "";
document.getElementById("splitMsgDiv").innerHTML = "";
shotMsg = false;
splitMsg = false;
}
if (players[x].start_type == "S" && splitMsg == false){
document.getElementById("splitMsgDiv").innerHTML = "* Player began round on hole No. 10<br><br>";
document.getElementById("shotMsgDiv").innerHTML = "";
splitMsg = true;
shotMsg = false;
}
if (players[x].start_type == "G" && shotMsg == false){
document.getElementById("splitMsgDiv").innerHTML = "";
document.getElementById("shotMsgDiv").innerHTML = "Today's start was a shotgun start. Groups began their round on each of the 18 holes.<br>The THRU column of this scoreboard represents the number of holes the player has<br>played and NOT the number of the last hole completed.<br><br>";
splitMsg = false;
shotMsg = true;
}
}
/**********************************************************
Writes out leaderboard table when page first loads
**********************************************************/
function showAll(){
out = "";
g=-1;
row = false;
insert = true;
thruLink;
if (thruSort){
thruLink = '<a href="#" class="sortText" onclick="sortDisp(\'Thru\');callMeasureClick(\'sort\',\'thru\');">THRU</a>';
}
else{
thruLink = '<div class="sortText">THRU</div>';
}
if (lang =="ja_US"){
if (thruSort){
thruLink = '<a href="#" class="sortText" onclick="sortDisp(\'Thru\');sortCnt++;">&#36890;&#36942;&#12507;&#12540;&#12523;&#12398;&#30053;</a>';
}
else {
thruLink = '<div class="sortText">&#36890;&#36942;&#12507;&#12540;&#12523;&#12398;&#30053;</div>';
}
}
out = "";
out="";
out+='<table border="0" cellspacing="0" cellpadding="0" style="width:609px; overflow:hidden;">';
out+=' <tr height="24">';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+posWidth+'" align="center" class="tblTextWhiteOnBlack" colspan="2"><a href="#" class="sortText" onClick="sortDisp(\'Pos\');callMeasureClick(\'sort\',\'pos\');">' + posText + '</a></td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+playerWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'Player\');callMeasureClick(\'sort\',\'player\');">' + playerText + '</a></td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+todayWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'Today\');callMeasureClick(\'sort\',\'today\');">' + todayText + '</a></td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+thruWidth+'" align="center" class="tblTextWhiteOnBlack">' + thruLink + '</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+toParWidth+'" align="center" class="tblTextWhiteOnBlack">' + toParText + '</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+roundWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'R1\');callMeasureClick(\'sort\',\'r1\');">R1</a</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+roundWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'R2\');callMeasureClick(\'sort\',\'r2\');">R2</a</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+roundWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'R3\');callMeasureClick(\'sort\',\'r3\');">R3</a</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+roundWidth+'" align="center" class="tblTextWhiteOnBlack"><a href="#" class="sortText" onclick="sortDisp(\'R4\');callMeasureClick(\'sort\',\'r4\');">R4</a</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+totalWidth+'" align="center" class="tblTextWhiteOnBlack">' + totalText + '</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' <td width="'+moreWidth+'" align="center" class="tblTextWhiteOnBlack">' + moreText + '</td>';
out+=' <td width="1" class="tblTextWhiteOnBlack"><spacer type="block" height="1" width="1"></td>';
out+=' </tr>';
out+=' <tr>';
out+=' <td colspan="24">';
out+=' <table border="0" cellspacing="0" cellpadding="0" id="leaderTable">';
top = 0;
rowNum = 1;
var matchB = true; //past champion
var matchC = true; //american
var matchD = true; //international
var matchE = true; //amateurs
var matchF = true; //first-time
var matchG = true; //custom
name;
rCnt = 0;
var rowClass="";
var prevRowClass="";
for (var x=0; x<players.length; x++){
getPlayerRow(x);
if (row){
if(prevRowClass == "" && rowClass == ""){
rowClass = "darkGreyLine";
} else {
if((prevRowClass == "darkGreyLine") && (prevRowClass == rowClass)){ rowClass = "lightGreyLine"; }
if((prevRowClass == "lightGreyLine") && (prevRowClass == rowClass)){ rowClass = "darkGreyLine"; }
}
out+='<tr id="'+players[x].id+'" class="'+rowClass+'"><td>';
out+= playerText;
out+='</td></tr>';
prevRowClass = rowClass;
if(useProjectedCut){
//write cut row if correct location
checkCutPosition(x);
if(insertCut && x<players.length-1){
out+='<tr id="pcRow"><td class="pcTableRow">Projected Cut</td></tr>';
insertCut = false;
}
}
}
if (!A && top>24){
traceDebug("showAll: " + A + " " + top);
//alert(A);
break;
}
}
if (!row){
out+='<tr align="center" class="bgTbl2">';
out+=' <td height="40" colspan="24" class="ltextghtml"><b>No players meet the criteria selected.</b></td></tr>';
}
out+=' </table>';
out+=' </td>';
out+=' </tr>';
out +=' <tr><td colspan="24" height="1" class="tblScoresGreyBorder"></td></tr>';
out+='</table>';
document.getElementById("innerDiv").innerHTML = out;
showLoading(false);
}
/**********************************************************
Writes out leaderboard table when page refreshes
**********************************************************/
function showRefresh(){
row = false;
var cri=0;
var pid; //id of current player in player array
var lid; //id of current row in leaderboard row array
var lhtml; //inner html of current row in leaderboard row array
var chtml = "";
var rowClass="";
var prevRowClass="";
cutPosition = false;
leaderboard = document.getElementById("leaderTable");
traceDebug("On refresh, players.length = "+players.length);
if(players.length > 0){
for(var i=0; i<players.length; i++){
pid = players[i].id;
//traceDebug("retrieving player data for "+players[i].name);
if(leaderboard.rows.length == 1 && leaderboard.rows[0].id == "noplayers"){
leaderboard.deleteRow(0);
}
for(var j=0; j<leaderboard.rows.length; j++){
if(useProjectedCut){
//first time through loop, remove projected cut row, it will get added in later
if((i==0) && (leaderboard.rows[j].id == "pcRow")){
leaderboard.deleteRow(j);
}
}
if(leaderboard.rows[j]){
lid = leaderboard.rows[j].id;
}
if (lid == pid){
//delete row in previous location
leaderboard.deleteRow(j);
}
}
getPlayerRow(i); //get html to fill row
if(row){
lhtml = playerText; //write data into row
//insert row in new location and set background color
if(prevRowClass == "" && rowClass == ""){
rowClass = "darkGreyLine";
} else {
if((prevRowClass == "darkGreyLine") && (prevRowClass == rowClass)){ rowClass = "lightGreyLine"; }
if((prevRowClass == "lightGreyLine") && (prevRowClass == rowClass)){ rowClass = "darkGreyLine"; }
}
leaderboard.insertRow(cri);
leaderboard.rows[cri].className = rowClass;
prevRowClass = rowClass;
leaderboard.rows[cri].insertCell(0);
//set id of new row
x = leaderboard.rows[cri];
x.id = players[i].id;
//traceDebug(lhtml);
if((players[i].more_data_open) && (players[i].more_data != "")){
showMore(i);
var lhtmlNew = players[i].more_data + "</table>";
lhtml = lhtml.replace("</table>",lhtmlNew);
}
leaderboard.rows[cri].cells[0].innerHTML = lhtml;
cri++;
if(useProjectedCut){
//write cut row if next player score is higher than/equal to projected cut score
checkCutPosition(i);
if(insertCut && i<players.length-1){
leaderboard.insertRow(cri);
leaderboard.rows[cri].insertCell(0);
x = leaderboard.rows[cri];
x.id = "pcRow";
y = leaderboard.rows[cri].cells[0];
y.className = "pcTableRow";
y.innerHTML = "Projected Cut";
cri++;
insertCut = false;
}
}
}
}
if (!row){
if(leaderboard.rows.length == 1){
leaderboard.deleteRow(0);
}
leaderboard.insertRow(0);
leaderboard.rows[0].id="noplayers";
leaderboard.rows[0].align="center";
leaderboard.rows[0].className = "bgTbl2";
leaderboard.rows[0].insertCell(0);
leaderboard.rows[0].cells[0].width="602";
leaderboard.rows[0].cells[0].height="40";
leaderboard.rows[0].cells[0].className="ltext";
leaderboard.rows[cri].cells[0].innerHTML = "<b>No players meet the criteria selected.</b>";
}
}
}
/**********************************************************
Opens or closes second row of data, calls the
corresponding function, and changes the link to view or
close
**********************************************************/
function toggleRow(x,tid){
var morelink = players[x].id+"More";
if(players[x].more_data_open == true){
hideMore(x,tid);
$('#'+morelink).html('<a href="javascript:toggleRow(\''+x+'\',\''+players[x].id+'Table\');" class="viewLink"><b>view</b></a>');
}
else{
openMore(x,tid);
$('#'+morelink).html('<a href="javascript:toggleRow(\''+x+'\',\''+players[x].id+'Table\');" class="closeLink">close</a>');
}
}
/**********************************************************
Expands player by adding second row of data
**********************************************************/
function openMore(x,tid){
measureApp('Scores','Live Scores',players[x].id,'Open Data')
showMore(x,tid);
}
function showMore(x,tid){
players[x].more_data_open = true;
if (tid){
var moreId = tid.substr(0,tid.indexOf("Table"));
var playerTable = document.getElementById(tid);
if (playerTable && (playerTable.rows.length < 2)){
playerTable.insertRow(1);
playerTable.rows[1].insertCell(0);
playerTable.rows[1].cells[0].colSpan = "24";
getMoreRow(x);
playerTable.rows[1].cells[0].innerHTML = moreText;
players[x].more_data = '<tr><td colspan="24">'+moreText+'</td></tr>';
}
} else {
getMoreRow(x);
players[x].more_data = '<tr><td colspan="24">'+moreText+'</td></tr>';
}
}
/**********************************************************
Contracts player by removing second row of data
**********************************************************/
function hideMore(x,tid){
measureApp('Scores','Live Scores',players[x].id,'Close Data')
players[x].more_data_open = false;
var playerTable = document.getElementById(tid);
if(playerTable && (playerTable.rows.length > 1)){
playerTable.deleteRow(1);
}
players[x].more_data = "";
//alert(players[x].more_data_open+", "+players[x].more_data)
}
/**********************************************************
Fills in data of show by hole scorecard
**********************************************************/
function showByHole(x){
var out = "";
var rInfo;
var score;
var parTot = 0;
var score1Tot = 0;
var score2Tot = 0;
var score3Tot = 0;
var score4Tot = 0;
scoreText = "";
var color;
//write out Par row in scorecard
scoreText+='<tr align="center" class="hbhText"><td><b>Par</b></td>';
for (var i=1; i<=18; i++){
scoreText+='<td id="hole'+i+'par">'+holePar[i-1]+'</td>';
parTot += holePar[i-1];
}
scoreText+='<td id="parTotal">'+parTot+'</td></tr>';
//write out Round 1-4 rows in scorecard
for (var j=1; j<=4; j++){
scoreText+='<tr align="center"><td><b>Rd '+j+'</b></td>';
for (var i=1; i<=18; i++){
rInfo = eval("players[" + x + "].r" + j + "_hbh");
if (rInfo.substr(i-1,1) != ' ' && i <= rInfo.length){
score = rInfo.charCodeAt(i-1)-64;
eval("score"+j+"Tot += " + score);
//traceDebug(eval("score"+j+"Tot"));
} else {
score = "";
}
if (rInfo.indexOf(' ') > -1){
eval("score"+j+"Tot = 0");
}
color = "#FFFFFF";
if (score == "") {
color = "#FFFFFF";
} else if (score != ""){
if (score == holePar[i-1]+1) //bogey
color = "#9BBB95";
if (score >= holePar[i-1]+2) //double bogey and better
color = "#CAAEC8";
if (score == holePar[i-1]-1) //birdie
color = "#F68270";
if (score <= holePar[i-1]-2) //eagle and better
color = "#F7E796";
}
scoreText+='<td id="hole'+i+'r'+j+'" bgcolor="'+color+'">'+score+'</td>';
}
if(j==1) {score1Tot>0?score1Tot=score1Tot:score1Tot=""; scoreText+='<td id="r1Total">'+score1Tot+'</td></tr>';}
if(j==2) {score2Tot>0?score2Tot=score2Tot:score2Tot=""; scoreText+='<td id="r2Total">'+score2Tot+'</td></tr>';}
if(j==3) {score3Tot>0?score3Tot=score3Tot:score3Tot=""; scoreText+='<td id="r3Total">'+score3Tot+'</td></tr>';}
if(j==4) {score4Tot>0?score4Tot=score4Tot:score4Tot=""; scoreText+='<td id="r4Total">'+score4Tot+'</td></tr>';}
}
}
function playerCheck(which,ind){
var str;
var found;
switch(which){
case "B" : str = past_champ.toString(); break;
case "C" : str = american.toString(); break;
case "D" : str = international.toString(); break;
case "E" : str = amateurs.toString(); break;
case "F" : str = first_time.toString(); break;
case "G" : str = custom.toString(); break;
}
if (eval(which)){
re = players[ind].id;
found = str.search(re);
if(found < 0){
return false;
}
}
return true;
}
/**********************************************************
Sets which player string to use when a leaderboard display is selected
**********************************************************/
function playerCheck(which,ind){
var str;
var found;
switch(which){
case "B" : str = past_champ.toString(); break;
case "C" : str = american.toString(); break;
case "D" : str = international.toString(); break;
case "E" : str = amateurs.toString(); break;
case "F" : str = first_time.toString(); break;
case "G" : str = custom.toString(); break;
}
if (eval(which)){
re = players[ind].id;
found = str.search(re);
if(found < 0){
return false;
}
}
return true;
}
/**********************************************************
Sorts the players array based on total score (default sort)
**********************************************************/
function posSort(){
players.sort(compareTotal);
var prev;
var last = 999;
var pos2;
var p=0;
var cutPlayers = new Array();
for (var x=0; x<players.length; x++){
if (players[x].player_status == "A") {
p = p+1
players[x].position = p;
if (x>0 && last != 999){
//alert(x + " " + players[last].name + " " + players[last].total + " \n " + players[x].name + " " + players[x].total);
prev = players[last].total;
} else {
prev = "Z";
}
if (players[x].total == prev){
pos2 = players[last].position + "";
if (pos2.indexOf("T") == -1){
players[last].position = "T" + players[last].position;
}
players[x].position = players[last].position;
}
last = x;
} else {
//if(players[x].player_status == "C" || players[x].player_status == "D" || players[x].player_status == "E"){
//players[x].position = "";
//}
//use this line if you want to display projected cut & withdrawn players
if(useProjectedCut){
if(players[x].player_status == "C" || players[x].player_status == "D" || players[x].player_status == "E"){
players[x].position = "1000";
} else {
players[x].position = "999";
}
}
//use this line if you don't want to display cut players
if(!useProjectedCut){players[x].position = "";}
}
}//end for
}
/**********************************************************
Sort Functions
**********************************************************/
function compareTotal(a,b){
var num1, num2;
num1 = a.total=="E"?0:parseInt(a.total);
num2 = b.total=="E"?0:parseInt(b.total);
if (num1 == num2){
num1 = parseInt(a.tee_pos);
num2 = parseInt(b.tee_pos);
}
return num1-num2;
}
function comparePos(a,b){
var aPos = a.position + "";
var bPos = b.position + "";
var num1, num2;
num1 = (aPos.indexOf("T") > -1)?parseInt(aPos.substring(1,aPos.length)):aPos;
num2 = (bPos.indexOf("T") > -1)?parseInt(bPos.substring(1,bPos.length)):bPos;
if (num1 == num2){
num1 = parseInt(a.tee_pos);
num2 = parseInt(b.tee_pos);
}
return num1-num2;
}
function compareThru(a,b){
var num1, num2;
num1 = a.thru==""?0:parseInt(a.thru);
num2 = b.thru==""?0:parseInt(b.thru);
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num2-num1;
}
function compareToday(a,b){
var num1, num2;
if (a.today == ""){
num1 = 1000;
}
else if (a.teeTime != -1){
num1 = a.teeTime.valueOf();
}
else {
num1 = a.today=="E"?"0":parseInt(a.today)
}
if (b.today == ""){
num2 = 1000;
}
else if (b.teeTime != -1){
num2 = b.teeTime.valueOf();
}
else {
num2 = b.today=="E"?"0":parseInt(b.today)
}
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function compareR1(a,b){
var num1, num2;
num1 = a.r1==""?500:parseInt(a.r1);
num2 = b.r1==""?500:parseInt(b.r1);
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function compareR2(a,b){
var num1, num2;
num1 = a.r2==""?500:parseInt(a.r2);
num2 = b.r2==""?500:parseInt(b.r2);
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function compareR3(a,b){
var num1, num2;
num1 = a.r3==""?500:parseInt(a.r3);
num2 = b.r3==""?500:parseInt(b.r3);
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function compareR4(a,b){
var num1, num2;
num1 = a.r4==""?500:parseInt(a.r4);
num2 = b.r4==""?500:parseInt(b.r4);
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function comparePlayers(a,b){
var num1, num2 = 0;
var pla = (a.name=="Not Available")?"zzzzz":a.name;
var plb = (b.name=="Not Available")?"zzzzz":b.name;
pla = pla.substr(pla.indexOf(".")+2);
plb = plb.substr(plb.indexOf(".")+2);
num1 = pla>plb?1:0;
num2 = pla<plb?1:0;
if (num1 == num2){
var val = compareTotal(a,b);
return val;
}
return num1-num2;
}
function compareActive(a,b){
var act1 = a.player_status;
var act2 = b.player_status;
if (act1 == act2){
return 0;
} else if (act1 < act2){
return -1;
} else return 1;
}
/**********************************************************
Sets which table item to use for sorting and moves marker to
top of that column
**********************************************************/
function sortDisp(which){
switch (which){
case "Pos" : players.sort(comparePos); moveMarker(1); break;
case "Today" : players.sort(compareToday); moveMarker(2);break;
case "Thru" : players.sort(compareThru); moveMarker(3);break;
case "R1" : players.sort(compareR1); moveMarker(4);break;
case "R2" : players.sort(compareR2); moveMarker(5);break;
case "R3" : players.sort(compareR3); moveMarker(6);break;
case "R4" : players.sort(compareR4); moveMarker(7);break;
case "Player" : players.sort(comparePlayers); moveMarker(8);break;
default : break;
}
sortItem = which;
if(load){
traceDebug("calling showAll() from sortDisp()");
setTimeout("showAll()",0);
} else {
traceDebug("calling showRefresh() from sortDisp()");
setTimeout("showRefresh()",0);
}
}
/**********************************************************
Sets position of marker when sort items are selected
**********************************************************/
function moveMarker(x){
var arrowDiv = document.getElementById("sortEnDiv");
switch (x){
case 1 : arrowDiv.style.left = posSortX; break;
case 2 : arrowDiv.style.left = todaySortX; break;
case 3 : arrowDiv.style.left = thruSortX; break;
case 4 : arrowDiv.style.left = rnd1SortX; break;
case 5 : arrowDiv.style.left = rnd2SortX; break;
case 6 : arrowDiv.style.left = rnd3SortX; break;
case 7 : arrowDiv.style.left = rnd4SortX; break;
case 8 : arrowDiv.style.left = playerSortX; break;
default : arrowDiv.style.visibility = "hidden"; break;
}
}
function getCnt(x){
if (x == "sort")
return sortCnt;
if (x == "criteria")
return criteriaCnt;
if (x == "scorecard")
return scorecardCnt;
return "";
}
function resetCnt(){
sortCnt = 0;
criteriaCnt = 0;
scorecardCnt = 0;
}
/**********************************************************
modifies table display font size
**********************************************************/
function changefontsize(newClass){
ghtmlClass = newClass;
var cells = document.getElementsByTagName("td");
for (var i=0; i<cells.length; i++){
if (cells[i].className.indexOf("ghtmlText") != -1 && cells[i].className.indexOf("redUnderlineText") == -1){
cells[i].className = newClass;
}
if (cells[i].className.indexOf("redUnderlineText") != -1){
cells[i].className = "redUnderlineText " + newClass;
}
}
}
