//THIS JS FILE HAS BEEN SET UP TO CREATE VARYING REPORTS, INCLUDING "IF PLAYOFFS WERE TO START TODAY", FOR myfantasyleague.com FANTASY LEAGUES.
//THIS FILE USES THE JQUERY LIBRARY WHICH NEEDS TO APPEAR BEFORE THIS FILE IN A HOME PAGE MESSAGE (TYPICALLY THE JQUERY LIBRARY WOULD APPEAR IN A HOME PAGE MESSAGE MARKED AS "HEADER")
//THIS FILE USES THE habmanJSON_common.js FILE WHICH NEEDS TO APPEAR BEFORE THIS FILE IN A HOME PAGE MESSAGE (TYPICALLY THE habmanJSON_common.js FILE WOULD APPEAR IN A HOME PAGE MESSAGE MARKED AS "HEADER")
// SET GLOBAL VARIABLES FOR MY APPS
if(habReportGlobalsSet===undefined) { // SET THESE GLOBAL VARIABLES ONE TIME REGARDLESS THE NUMBER OF TIME FILE IS CALLED
var headToHeadArray = new Array();
var sovArray = new Array();
var sosArray = new Array();
var playoffArray = new Array();
var survivorData = new Array();
var habReportsWeeklyPointsScored = new Array();
var habReportsWeeklyBenchScored = new Array();
var habReportsWeeklyTiebreakPlayerScored = new Array();
var habReportsWeeklyToDatePointsScored = new Array();
var leagueName = '';
var seedCount = 0;
var leagueAverage = false;
var didShowScores = false;
var habmanModCount = 0;
var separateHTHByDivision = false;
var separateHTHByConference = false;
var headToHeadTeamDisplay = "";
var scoreAdjustments = new Array();
var tieBreakerTitles = ['by default','Overall Win %','Div. Win %','Div. PF','Overall PF','Victory Points','Power Rank','Play-All Win %','Head-to-Head','Coin Flip','Non-Div. Win %','Non-Div. PF','Reverse PA','Conf. Win %','Conf. PF','Non-Conf. Win%','Non-Conf. PF','Common Games Win%','Head-to-Head','Strength of Schedule','Strength of Victory','Potential Points','Offensive Points','Defensive Points'];
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 , 18 19 20 21 22 23
var standingsTitles = ['','','','W','L','T','Record','Win %','PF','PA','Div-W','Div-L','Div-T','Div-Record','Div-Win %','Div-PF','Power','VP','PlayAll-W','PlayAll-L','PlayAll-T','PlayAll-Record','PlayAll-Win %','NonDiv-W','NonDiv-L','NonDiv-T','NonDiv-Record','NonDiv-Win %','NonDiv-PF','Conf-W','Conf-L','Conf-T','Conf-Record','Conf-Win %','Conf-PF','NonConf-W','NonConf-L','NonConf-T','NonConf-Record','NonConf-Win %','NonConf-PF','Head-to-Head Win %','SOS-Record','SOS-Win %','SOV-Record','SOV-Win %','PP','OP','DP',custom1Title,custom2Title,custom3Title];
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 , 46 , 47 , 48 , 49 , 50 , 51
var standingsDecimals= [-2,-2,-2, 0 , 0 , 0 , -2 , 3 , -1 , -1 , 0 , 0 , 0 , -2 , 3 , -1 , 2 , 0 , 0 , 0 , 0 , -2 , 3 , 0 , 0 , 0 , -2 , 3 , -1 , 0 , 0 , 0 , -2 , 3 , -1 , 0 , 0 , 0 , -2 , 3 , -1 , 3 , -2 , 3 , -2 , 3 , -1 , -1 , -1 , -1 , -1 , -1 ]; // Where -2 is N/A and -1 default
var habReportGlobalsSet = true;
} // END IF globalsSet==undefined
//RESET THESE GLOBALS EACH TIME THIS FILE IS CALLED
habmanModCount++; // Used as a table-identifier in case some one is using more than one app.
var headToHeadWinPctTeams = 0; // This is a countdown and works in conjunction with !useStartOverRule. When zero or less need to rerun head to head win percentage tiebreaker otherwise count down to zero
var hthPointsScoredTeams = 0;
var leagueAverageCreated = false;
var headToHeadBrokeTie = false;
var headToHeadSweep = false;
var headToHeadSwept = false;
var commonGameBrokeTie = false;
var hthPointsScoredBrokeTie = false;
var numDivisionTeams = 1; // Set to 1 for only one division winner per division
var numWildCardTeams = 0;
var numDivisionTeamsTwo = 1;
var hideDivision = false;
var hideDivisionTwo = false;
var hideWildCard = false;
var hidePlayoff = false;
var hideNonPlayoff = false;
var useSweepRule = false;
var useStartOverRule = false;
var useDivisionBestRule = false;
var useDivisionIcon = false;
var useWinPctRule = 1; // 0 - only for 2 teams tied; 1 - MFL Default; 2 - 1 game minimum req'd; 3 - Must have played all the tied teams at least once
var currentWinPctGrouping = "";
var currentWinPctGroupingHTML = "";
var currentCommonGameGrouping = "";
var currentCommonGameGroupingHTML = "";
var disableHilite = false;
var doingDivision = false;
var teamsCurrentlyTied = 0;
var stepsCount = 0;
var stepsText = "";
var stepsHTML = "";
var stepsTitle = "";
var stepsTitleHTML = "";
var genericTable = false;
var showScores = false;
var showSteps = false;
var bypassSameDivisionRule = false;
var bypassConferenceRule = false;
var iconURL = "";
var specialSeed = new Array();
var sortInReverseOrder = false;
var habNameIcon = "";
var habNameIconSource = "";
var baseIconURL = "";
var baseIconExt = "";
var divisionTieBreakerTwo = new Array();
var outOfPlayoffsTiebreaker = new Array();
var outOfPlayoffsReverseSort = false;
var custom1 = new Array();
var custom2 = new Array();
var custom3 = new Array();
var custom1Title = "";
var custom2Title = "";
var custom3Title = "";
var conferenceLikeDivision = false;
var titleHeader = "
If the playoffs were to start today
";
var hideTitleHeader = false;
var titleDivisionWinner = "Division Winners";
var titleDivisionWinnerTwo = "Division Winners 2";
var titleWildCardWinner = "Wild Card Winners";
var titleNonPlayoffTeam = "Out of the Playoffs";
var titlePlayoffTeam = "Playoff Teams";
var reverseTheOrder = false;
var numDivisionWinners = -1;
var numDivisionWinnersTwo = -1;
var outerPlayoffStyle = "border: 0px; margin: 0px;";
var divisionTieBreaker = [1,4,9,0];
var wildCardTieBreaker = [1,4,9,0];
var displayColumns = [6,8]; // Use Standings Titles above
var iconColors = ['FF0000','0000FF','008000','FFFF00','FF00FF','00FF00','00FFFF','C0C0C0']
var commonGameMinGP = 4;
var scoringDecimals = 2;
var enableCodeWriter = false;
var habColBg = new Array(); //Used in my setColColor function for column hiliting
var countPtsScoredOncePerWeek = false;
var separateRegFromPost = false;
var disableScoreAdjustments = false;
var survivorExtraElimination = 0;
//====================================================================================
// JQUERY UI TOOLTIP FUNCTION AND OTHER STYLING
//====================================================================================
var myUICssAsString = ".ui-tooltip {\n background-color:#FFFFFF;\n border:2px solid black;\n color:#000000;\n position:absolute;\n}\n.habSeedExplanation, .habSeedExplanation table {\n border-collapse:collapse;\n width:100%;\n background-color:lemonchiffon;\n}\n.habSeedMainHeader {\n text-align:center;\n color: #000000;\n background-color:lemonchiffon;\n font-size:larger;\n font-weight:bold;\n padding-top:3px;\n padding-bottom:3px;\n}\n";
myUICssAsString += ".habSeedMainCaption {\n text-align:center;\n color: lemonchiffon;\n background-color: #000000;\n padding-top: 3px;\n padding-bottom: 3px;\n font-weight:bold;\n}\n.habSeedSubCaption {\n text-align:left;\n padding-left:15px;\n color: lemonchiffon;\n background-color: #888888;\n padding-top: 2px;\n padding-bottom: 2px;\n}\n";
myUICssAsString += ".habSeedSecondaryCaption {\n text-align:center;\n color: lemonchiffon;\n background-color: #000000;\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.habSeedTiedTeams {\n text-align:left;\n color: black;\n font-weight: bold;\n font-size: smaller;\n padding-left:15px;\n}\n.habSeedSpecialRule {\n font-size: smaller;\n text-align:left;\n font-weight:bold;\n color: black;\n padding-left:15px;\n}\n";
myUICssAsString += ".habSeedSpecialRuleResult {\n font-size: smaller;\n text-align:left;\n color: black;\n padding-left:35px;\n}\n.habSeedTitle {\n text-align:left;\n font-size: smaller;\n color: black;\n padding-left:15px;\n}\n.habSeedGroup {\n text-align:left;\n font-size: smaller;\n font-style: italic;\n color: black;\n padding-left:15px;\n}\n.habSeedBoldSpan {\n font-weight:bold;\n}\n";
myUICssAsString += ".habSeedAdvancedSpan {\n color:green;\n font-weight:bold;\n}\n.habSeedEliminatedSpan {\n color:red;\n font-weight:bold;\n}\n.habSeedRerun {\n padding-left:10px;\n font-size:smaller;\n}\n.habSeedTieBroken {\n font-weight:bold;\n padding-top:10px;\n padding-left:15px;\n}\n.habSeedByDefault {\n font-weight:bold;\n padding-top:10px;\n padding-left:15px;\n}\n.habSeedHR {\n margin-right:20px;\n margin-left:20px;\n}\n";
var myFranchiseIconCssAsString = ".habSeedFranchiseIcon {\n vertical-align:middle;\n max-width:120px;\n max-height:24px;\n}\n";
var mySurvivorCssString = ".habSurvivorImmunity {\n font-weight:bold;\n color: green;\n}\n.habSurvivorEliminated {\n font-weight:bold;\n color: red;\n}\n.habSurvivorSavedByImmunity {\n font-weight:bold;\n color: orange;\n}\n.habSurvivorExtraEliminated {\n font-weight:bold;\n color: blue;\n}\n.habSurvivorChamp {\n font-weight:bold;\n background-color: green;\n color: white;\n}\n\n";
if(disableHilite) var myHiliteCssAsString = ""; else var myHiliteCssAsString = ".habHilite {\n background-color: #ffa;\n cursor:crosshair;\n}\n";
document.write("\n\n");
var myUIFunctionAsString = '$(function() {\n $( document ).tooltip({\n position: {\n my: "right-10 bottom",\n at: "center center",\n },\n items: "[ui-title],[playoff-seed]",\n content: function() {\n var element = $( this );\n if ( element.is( "[ui-title]" ) ) {\n return element.attr("ui-title");\n }\n if ( element.is( "[playoff-seed]" ) ) {\n return element.attr("playoff-seed");\n }\n }\n });\n});\n\n';
var myDoAlertFunctionAsString = 'function doAlert(rank,teamName,text) {\n var str;\n str = teamName + "~" + "Seed #" + rank + "~" + text;\n str = str.replace(/~ Points/g," Points");\n str = str.replace(/~ broke/g," broke");\n str = str.replace(/~/g,"\\n");\n alert(str);\n}\n\n';
var myHiliteFunctionAsString = '$(function() {\n $(".habHiliteTable td, .habHiliteTable th")\n .on("mouseover", function() {\n var el = $(this),\n pos = el.index();\n el.parent().find("th, td").addClass("habHilite");\n $(".habHiliteTable td, .habHiliteTable th").filter(":nth-child(" + (pos+1) + ")").addClass("habHilite");\n })\n .on("mouseout", function() {\n $(".habHiliteTable td, .habHiliteTable th").removeClass("habHilite");\n });\n});\n';
$(function() {
$( document ).tooltip({
position: {
my: "right-10 bottom",
at: "center center",
},
items: "[ui-title],[playoff-seed]",
content: function() {
var element = $( this );
if ( element.is( "[ui-title]" ) ) {
return element.attr("ui-title");
}
if ( element.is( "[playoff-seed]" ) ) {
return element.attr("playoff-seed");
}
}
});
});
$(function() {
$(".habHiliteTable td, .habHiliteTable th")
.on("mouseover", function() {
var el = $(this),
pos = el.index();
el.parent().find("th, td").addClass("habHilite");
$(".habHiliteTable td, .habHiliteTable th").filter(":nth-child(" + (pos+1) + ")").addClass("habHilite");
})
.on("mouseout", function() {
$(".habHiliteTable td, .habHiliteTable th").removeClass("habHilite");
});
});
// THE FOLLOWING FUNCTIONS ARE COMMONLY USED WITHIN MANY OF THE APPS
function habmanBubbleSort(arrayName, length, field, reverse) { // BUBBLE SORTING OF ARRAYS
for (var i=0; i<(length-1); i++)
for (var j=i+1; j arrayName[i][field]) {
var dummy = arrayName[i];
arrayName[i] = arrayName[j];
arrayName[j] = dummy;
}
}catch(er){}
} else {
try{
if (arrayName[j][field] < arrayName[i][field]) {
var dummy = arrayName[i];
arrayName[i] = arrayName[j];
arrayName[j] = dummy;
}
}catch(er) {}
}
return arrayName;
}
function moveRow(arrayName, thisRow, whereTo) {
if(thisRowwhereTo; i--) {
arrayName[i] = arrayName[i-1];
}
arrayName[whereTo]=tempRow;
}
return arrayName;
}
function doAlert(rank,teamName,text) {
var str;
str = teamName + "~" + "Seed #" + rank + "~" + text;
//str = str.replace(/~ Sweep/g," Sweep");
//str = str.replace(/~ Winning/g," Winning");
str = str.replace(/~ Points/g," Points");
str = str.replace(/~ broke/g," broke");
str = str.replace(/~/g,"\n");
alert(str);
}
function addTeamsStillTied(currentText,arrayName,length,notHTML) {
if(notHTML) {
var newText = " Still tied (";
for (var x = 0; x < length; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + ", ";
}
newText = newText.substr(0,newText.length-2);
newText += ")~";
newText = currentText + newText;
return newText;
} else {
var newHTML = "Teams Still tied (";
for (var x = 0; x < length; x++) {
newHTML += habFranchiseData[arrayName[x][0]][1] + ", ";
}
newHTML = newHTML.substr(0,newHTML.length-2);
newHTML += ") |
";
newHTML = currentText + newHTML;
return newHTML;
}
}
function arrayAlert(arrayName) {
if(franchiseDatabase['fid_' + franchise_id].name=="Commissioner") {
var temp = '';
for (var x = 0; x < arrayName.length; x++) {
var y = x+1;
temp += ' ' + y + ' ' + habFranchiseData[arrayName[x][0]][1] + '\n';
}
alert(temp)
}
}
function alertThis(arrayName) {
var temp = '';
for (var x = 0; x < arrayName.length; x++) {
var y = x+1;
temp += ' ' + y + ' ' + habFranchiseData[arrayName[x][0]][1] + '\n';
}
alert(temp)
}
function variableAlert(x) {
if(franchiseDatabase['fid_' + franchise_id].name=="Commissioner") {
alert(x);
}
}
function decimalFormat(thisNum,places){
if(thisNum.toString()=="NaN") thisNum = 0;
if(thisNum==-0.0001) {
thisNum = "-.---";
} else {
thisNum = parseInt(thisNum*Math.pow(10,places))/ (Math.pow(10,places));
if(thisNum==parseInt(thisNum)) {
if(places>0) thisNum += ".";
}
for (var x = 0; x < places; x++) {
if( ( parseFloat(thisNum)*(Math.pow(10,x)) )==parseInt(thisNum*(Math.pow(10,x)) ) ) thisNum += "0";
}
}
return thisNum;
}
function decimalCheck (thisNum,category) {
// Sets up Win % decimals
if(category==7||category==14||category==22||category==27||category==33||category==39||category==43||category==45) {
thisNum=decimalFormat(thisNum,3);
}
// Sets up Power Rank decimals
if(category==16) {
thisNum=decimalFormat(thisNum,2);
}
// Sets up Scoring decimals
if(category==8||category==9||category==15||category==28||category==34||category==40||category==46) {
thisNum=decimalFormat(thisNum,scoringDecimals);
}
return thisNum;
}
function getHabReportsNameIcon(which,fid,fidInPlaceOfFullName) {
var returnHTML = "";
if(which==1) {
switch (habNameIcon) { // setup my html for the franchise name
case "fullname" :
case "iconfullname" :
if(!fidInPlaceOfFullName)
returnHTML = franchiseDatabase['fid_'+fid].name;
else
returnHTML = ""+fid+"";
break;
case "abbrevname" :
case "iconabbrevname" :
returnHTML = ""+franchiseDatabase['fid_'+fid].abbrev+"";
break;
case "icon" :
returnHTML = "";
break;
default:
if(!fidInPlaceOfFullName)
returnHTML = franchiseDatabase['fid_'+fid].name;
else
returnHTML = ""+fid+"";
break;
}
} else {
switch (habNameIcon) { // setup my html for the icon
case "fullname" :
case "abbrevname" :
returnHTML = "";
myFranchiseIconCssAsString = "";
break;
case "icon" :
case "iconfullname" :
case "iconabbrevname" :
if(habNameIconSource=="mflicon")
returnHTML = "";
else if(habNameIconSource=="mfllogo")
returnHTML = "";
else
returnHTML = "";
break;
default:
returnHTML = "";
}
}
return returnHTML;
}
function setupGlobal() {
tieBreakerTitles[17]='Common Games Win% ('+commonGameMinGP+' game minimum requirement)';
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,0,1); // Re-sort Standings Array to get it back to original stats (probably needs to be looked at)
if(custom1.length>0) {
for (var x = 0; x < leagueAttributes['Franchises'] ; x++) {
habStandingsData[x][47] = custom1[x];
}
standingsTitles[47] = custom1Title;
}
if(custom2.length>0) {
for (var x = 0; x < leagueAttributes['Franchises'] ; x++) {
habStandingsData[x][48] = custom2[x];
}
standingsTitles[48] = custom2Title;
}
if(custom3.length>0) {
for (var x = 0; x < leagueAttributes['Franchises'] ; x++) {
habStandingsData[x][49] = custom3[x];
}
standingsTitles[49] = custom3Title;
}
if(useSweepRule == true) useStartOverRule=true;
if(useWinPctRule==2||useWinPctRule==3) useStartOverRule=true;
}
function setupOther(which,teams) {
setupGlobal();
if(which=="draft") {
reverseTheOrder = true;
numWildCardTeams = leagueAttributes['Franchises'] ;
numDivisionWinners=0;
hideNonPlayoff=true;
}
if(which=="toilet") {
reverseTheOrder = true;
numDivisionWinners = -1;
if(teams==undefined) {
numWildCardTeams = 2;
} else {
numWildCardTeams = teams;
}
hideNonPlayoff=true;
}
if(which=="generic") {
numDivisionWinners = 0;
if(sortInReverseOrder)
reverseTheOrder=true;
else
reverseTheOrder=false;
genericTable = true;
}
}
function setupNormal() {
setupGlobal();
if(sortInReverseOrder)
reverseTheOrder=true;
else
reverseTheOrder=false;
numDivisionWinners=-1;
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY ALL PLAY APP
function createAllPlayTable(divID,thisArray,mode) {
var key = new Array;
for ( var i = 0; i < leagueAttributes['Franchises'] ; i++ ) {
key[i] = new Array(i,habFranchiseData[i][0],thisArray[habFranchiseData[i][0]]['winpct']);
}
key = habmanBubbleSort(key,leagueAttributes['Franchises'] ,2,0);
if(disableHilite) var myTableClass = ""; else var myTableClass = " habHiliteTable";
var tempHTML = "";
var loops = 1;
var title = "";
if(mode=="byDivision") loops = habDivisionData.length;
if(mode=="byConference") loops = habConferenceData.length;
for (var i = 0; i < loops; i++) {
if(mode=="byDivision") title = "
" + habDivisionData[i][1];;
if(mode=="byConference") title = "
" + habConferenceData[i][1];
tempHTML += "\nAll Play Results" + title + "\n\n";
tempHTML += " \n | \n";
for ( var m = 0; m < leagueAttributes['Franchises'] ; m++ ) {
var doIt=true;
var fid = habFranchiseData[key[m][0]][0];
//if(mode=="all") doIt = true;
//if(mode.indexOf(habFranchiseData[parseInt(thisArray[m][0]-1)][0])!=-1) var doIt = true;
//if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[m][0]-1)][2]==i) var doIt=true;
//if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[m][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
var myNameHTML = getHabReportsNameIcon(1,fid,true);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myIconHTML!="") var myTopRowTeam = myIconHTML; else if(myNameHTML!="") var myTopRowTeam = myNameHTML; else var myTopRowTeam = fid;
tempHTML += " " + myTopRowTeam + " | \n";
}
}
tempHTML += " Overall | Win % | \n
\n";
for ( var m = 0; m < leagueAttributes['Franchises'] ; m++ ) {
var doIt=true;
var fid = habFranchiseData[key[m][0]][0];
//if(mode=="all") doIt = true;
//if(mode.indexOf(habFranchiseData[parseInt(thisArray[m][0]-1)][0])!=-1) var doIt = true;
//if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[m][0]-1)][2]==i) var doIt=true;
//if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[m][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
if(m % 2 == 0) var thisTableClass="oddtablerow"; else var thisTableClass="eventablerow";
var myNameHTML = getHabReportsNameIcon(1,fid,false);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myNameHTML!=""&&myIconHTML!="") var myGap = " "; else var myGap = "";
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + fid + "&O=01";
tempHTML += " \n " + myIconHTML + myGap + myNameHTML + " | \n";
for ( var n = 0; n < leagueAttributes['Franchises'] ; n++ ) {
var doIt=true;
//if(mode=="all") doIt = true;
//if(mode.indexOf(habFranchiseData[n][0])!=-1) var doIt = true;
//if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[n][0]-1)][2]==i) var doIt=true;
//if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[n][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
if(key[m][0]==key[n][0]) {
tempHTML += " X | \n"
} else {
var fid = habFranchiseData[key[m][0]][0];
var fid2 = habFranchiseData[key[n][0]][0];
tempHTML += " (" + thisArray[fid][fid2][0] + "-" + thisArray[fid][fid2][1] + "-" + thisArray[fid][fid2][2] + ") | \n";
}
} // END DO IT
}
tempHTML += " (" + thisArray[fid]['total'][0] + "-" + thisArray[fid]['total'][1] + "-" + thisArray[fid]['total'][2] + ") | " + thisArray[fid]['winpct'].toFixed(3) + " | \n
\n";
}
}
tempHTML += "\n
\n";
if(!disableScoreAdjustments) {
if(completedWeek<=lastRegularWeek) var endWeek=completedWeek; else endWeek=lastRegularWeek;
tempHTML+= doAdjustmentsFooter(endWeek);
}
} // FOR DIVISION OR CONFERENCE LOOPS
if(enableCodeWriter) {
tempHTML = '\n\n\n\n' +tempHTML;
document.getElementById(divID).innerHTML = tempHTML;
} else {
document.getElementById(divID).innerHTML = tempHTML;
}
}
function doAllPlayTable(divID) {
var userCookieValue = getHabCookieValue('USER_ID');
var allPlayArray = new Array();
var scores = new Array();
for ( var i = 0; i < leagueAttributes['Franchises'] ; i++ ) {
var fid = habFranchiseData[i][0];
allPlayArray[fid] = new Array(); // This for-next loop creates all the multi-dimensional arrays required
allPlayArray[fid]['total'] = [0,0,0];
allPlayArray[fid]['winpct'] = 0;
for ( var j = 0; j < leagueAttributes['Franchises'] ; j++ ) {
var fid2 = habFranchiseData[j][0];
allPlayArray[fid][fid2] = [0,0,0]; // [W,L,T]
}
}
if(completedWeek>lastRegularWeek) var endWeek=lastRegularWeek; else var endWeek=completedWeek;
for (var w = 1; w <= endWeek; w++) {
var currentFile = habCurrentServer+"/"+year+"/export?L="+league_id+"&TYPE=weeklyResults&JSON=1&rand=" + Math.random() + "&W=" + w;
var thisWeekArray = new Array();
//get weekly score for each franchise. score may come from a matchup or team on a bye
$.ajax({type: 'GET',url: currentFile, async: false, weeklyResultsData: {'USER_ID': userCookieValue}}).done(function (weeklyResultsData) {
try { // get all team scores from where there is a matchup
for ( var i = 0; i < weeklyResultsData.weeklyResults.matchup.length; i++ ) {
var fidRoad = weeklyResultsData.weeklyResults.matchup[i].franchise[0].id;
var fidHome = weeklyResultsData.weeklyResults.matchup[i].franchise[1].id;
if(fidRoad!="BYE") scores[fidRoad] = parseFloat(weeklyResultsData.weeklyResults.matchup[i].franchise[0].score,10);
if(fidHome!="BYE") scores[fidHome] = parseFloat(weeklyResultsData.weeklyResults.matchup[i].franchise[1].score,10);
if(!disableScoreAdjustments) { //CHECK THIS OUT AS SCORES ARRAY IS NOT DEFINED SO ALWAYS GET ERROR
try { if(scoreAdjustments[w][fidRoad]!=undefined) scores[fidRoad] = scores[fidRoad] + scoreAdjustments[w][fidRoad]; } catch (er) {}
try { if(scoreAdjustments[w][fidHome]!=undefined) scores[fidHome] = scores[fidHome] + scoreAdjustments[w][fidHome]; } catch (er) {}
}
}
} catch(er) {}
try { // get all team scores from where there is a no matchup
for ( var i = 0; i < weeklyResultsData.weeklyResults.franchise.length; i++ ) {
var fid = weeklyResultsData.weeklyResults.franchise[i].id;
scores[fid] = parseFloat(weeklyResultsData.weeklyResults.franchise[i].score,10);
if(!disableScoreAdjustments) { //CHECK THIS OUT AS SCORES ARRAY IS NOT DEFINED SO ALWAYS GET ERROR
try { if(scoreAdjustments[i][fid]!=undefined) scores[fid] = scores[fid] + scoreAdjustments[i][fid]; } catch (er) {}
}
}
} catch(er) {}
//create the all playtable
for ( var i = 0; i < leagueAttributes['Franchises']; i++) {
var fid = habFranchiseData[i][0];
thisWeekArray[fid] = new Array;
for ( var j = 0; j < leagueAttributes['Franchises']; j++) {
var fid2 = habFranchiseData[j][0];
if(scores[fid]>scores[fid2]) thisWeekArray[fid][fid2] = [1,0,0];
else if (scores[fid] 0)
allPlayArray[fid]['winpct'] = ( allPlayArray[fid]['total'][0] + 0.5 * allPlayArray[fid]['total'][2] ) / ( allPlayArray[fid]['total'][0] + allPlayArray[fid]['total'][1] + allPlayArray[fid]['total'][2] );
else
allPlayArray[fid]['winpct'] = 0;
}
weeklyResultsData=null;
});
}
createAllPlayTable(divID,allPlayArray)
}
function doAdjustmentsFooter(toWeek){
var weeklyAdjustments = new Array();
for ( var n = 1; n <= toWeek; n++ ) weeklyAdjustments[n] = "";
var keyCount=0;
for ( var key in franchiseDatabase) {
if(keyCount<=leagueAttributes['Franchises']) {
keyCount++;
if(franchiseDatabase[key].id!='0000') {
var fid = franchiseDatabase[key].id;
for ( var n = 1; n <= toWeek; n++ ) {
try {
if(scoreAdjustments[n][fid]!=undefined) {
weeklyAdjustments[n] += " " + habFranchiseIDData[fid][1] + " (" + scoreAdjustments[n][fid] + ") ";
}
} catch (er) {
// do Nothing
}
}
}
}
}
var adjustmentsHTML = "";
for ( var n = 1; n <= toWeek; n++ ) {
if(weeklyAdjustments[n] != "") adjustmentsHTML += " Week " + n + ": " + weeklyAdjustments[n] + "
";
}
if(adjustmentsHTML == "")
return adjustmentsHTML;
else
return "
THE ABOVE REPORT INCLUDES THESE WEEKLY SCORING ADJUSTMENTS
"+adjustmentsHTML+"
";
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY SCORING SUMMARY APP
//function createScoringSummaryTable(divID,thisArray,weeksToCount,weeksTotal) {
function createScoringSummaryTable(divID,thisArray) {
if(separateRegFromPost) var weeksToCount = lastRegularWeek; else var weeksToCount = endLeagueWeek;
var weeksTotal = endLeagueWeek;
var key = new Array();
var weeklyAdjustments = new Array();
if(disableHilite) var myTableClass = ""; else var myTableClass = " habHiliteTable";
for ( var i = 0; i < leagueAttributes['Franchises'] ; i++ ) {
key[i] = new Array(i,habFranchiseData[i][0],thisArray[habFranchiseData[i][0]]['total']);
}
for ( var i = 1; i <= weeksTotal; i++ ) {
weeklyAdjustments[i] = "";
}
key = habmanBubbleSort(key,leagueAttributes['Franchises'] ,2,0);
var tempHTML = "";
tempHTML += "\nWeekly Scoring Summary\n\n";
tempHTML += " \n | \n";
for ( var m = 1; m <= weeksTotal; m++ ) {
if(m>weeksToCount) var asterisk = "*"; else var asterisk = "";
tempHTML += " " + m + asterisk + " | \n";
}
tempHTML += " Total | Avg. | \n
\n";
for ( var m = 0; m <= leagueAttributes['Franchises'] ; m++ ) {
try { var fid = habFranchiseData[key[m][0]][0]; } catch(er) { var fid = '0000'; }
if(m % 2 == 0) var thisTableClass="oddtablerow"; else var thisTableClass="eventablerow";
var myNameHTML = getHabReportsNameIcon(1,fid,false);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myNameHTML!=""&&myIconHTML!="") var myGap = " "; else var myGap = "";
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + fid + "&O=01";
if(m==leagueAttributes['Franchises'] )
tempHTML += " \n Average | \n";
else
tempHTML += "
\n " + myIconHTML + myGap + myNameHTML + " | \n";
for ( var n = 1; n <= weeksTotal; n++ ) {
if(n>completedWeek) {
if(m==leagueAttributes['Franchises'] )
tempHTML += " - | \n" ;
else
tempHTML += " - | \n" ;
} else {
if(m==leagueAttributes['Franchises'] )
tempHTML += " " + thisArray['0000'][n].toFixed(1) + " | \n";
else
tempHTML += " " + thisArray[fid][n] + " | \n";
}
}
if(m==leagueAttributes['Franchises'] ) {
tempHTML += " " + thisArray['0000']['total'].toFixed(1) + " | " + thisArray['0000']['avg'].toFixed(1) + " | \n
\n";
} else {
if(weeksToCount>completedWeek)
var average = thisArray[fid]['total']/completedWeek;
else
var average = thisArray[fid]['total']/weeksToCount;
tempHTML += " " + thisArray[fid]['total'] + " | " + average.toFixed(1) + " | \n \n";
}
}
tempHTML += "\n
\n";
if(separateRegFromPost) tempHTML += "* Only regular season weeks are counted points scored total.
\n";
if(!disableScoreAdjustments) tempHTML+= doAdjustmentsFooter(weeksTotal);
if(enableCodeWriter) {
tempHTML = '\n\n\n\n' +tempHTML;
document.getElementById(divID).innerHTML = tempHTML;
} else {
document.getElementById(divID).innerHTML = tempHTML;
}
}
function doHabReportsWeeklyPointsScored() { //THIS FUNCTION CREATES AN ARRAY OF WEEKLY POINTS SCORED IGNORING DOUBLEHEADER GAMES
var matchupType = new Array();
for (var w=1;w<=17;w++) {
var currentFile = habCurrentServer+"/"+year+"/export?L="+league_id+"&TYPE=weeklyResults&JSON=1&rand=" + Math.random() + "&W=" + w;
$.ajax({type: 'GET',url: currentFile, async: false, weeklyResultsData: {'USER_ID': userCookieValue}}).done(function (weeklyResultsData) {
var numberOfMatchups = 0;
try {if(weeklyResultsData.weeklyResults.matchup.length!=undefined) { //multiple matchups passed
numberOfMatchups = 2;
} else if(weeklyResultsData.weeklyResults.matchup!=undefined) { //single matchup passed
numberOfMatchups = 1;
}
} catch(er) {}
if(numberOfMatchups==2) { // get all team scores from where there is multiple matchups
for ( var i = 0; i < weeklyResultsData.weeklyResults.matchup.length; i++ ) {
var fidRoad = weeklyResultsData.weeklyResults.matchup[i].franchise[0].id;
var fidHome = weeklyResultsData.weeklyResults.matchup[i].franchise[1].id;
if(habReportsWeeklyPointsScored[fidRoad]==undefined) {
habReportsWeeklyPointsScored[fidRoad] = new Array();
habReportsWeeklyBenchScored[fidRoad] = new Array();
habReportsWeeklyTiebreakPlayerScored[fidRoad] = new Array();
habReportsWeeklyToDatePointsScored[fidRoad] = new Array();
}
if(habReportsWeeklyPointsScored[fidHome]==undefined) {
habReportsWeeklyPointsScored[fidHome] = new Array();
habReportsWeeklyBenchScored[fidHome] = new Array();
habReportsWeeklyTiebreakPlayerScored[fidHome] = new Array();
habReportsWeeklyToDatePointsScored[fidHome] = new Array();
}
if(matchupType[fidRoad]==undefined) matchupType[fidRoad] = new Array();
if(matchupType[fidHome]==undefined) matchupType[fidHome] = new Array();
if(fidRoad!="BYE") {
habReportsWeeklyPointsScored[fidRoad][w] = getHabValidateAsNumber(weeklyResultsData.weeklyResults.matchup[i].franchise[0].score);
habReportsWeeklyTiebreakPlayerScored[fidRoad][w] = 0;
habReportsWeeklyBenchScored[fidRoad][w] = 0;
if(w==1) habReportsWeeklyToDatePointsScored[fidRoad][w] = habReportsWeeklyPointsScored[fidRoad][w]; else habReportsWeeklyToDatePointsScored[fidRoad][w] = habReportsWeeklyToDatePointsScored[fidRoad][w-1] + habReportsWeeklyPointsScored[fidRoad][w];
try { // to get tiebreaker player(s)
var tieBreakerList = weeklyResultsData.weeklyResults.matchup[i].franchise[0].tiebreaker;
var tieBreakerArray = new Array();
if(tieBreakerList.indexOf(",")>0) { //more than one tiebreaker
while (tieBreakerList.indexOf(",")>0) {
var playerID = tieBreakerList.substring(0,tieBreakerList.indexOf(","));
if(parseFloat(playerID)>0) tieBreakerArray[tieBreakerArray.length] = playerID;
tieBreakerList = tieBreakerList.substring(tieBreakerList.indexOf(",")+1,tieBreakerList.length);
}
} else { //only one player
tieBreakerArray[tieBreakerArray.length] = weeklyResultsData.weeklyResults.matchup[i].franchise[0].tiebreaker;
}
for(var j=0;j0) { //more than one bench player
while (benchList.indexOf(",")>0) {
var playerID = benchList.substring(0,benchList.indexOf(","));
if(parseFloat(playerID)>0) benchArray[benchArray.length] = playerID;
benchList = benchList.substring(benchList.indexOf(",")+1,benchList.length);
}
} else { //only one player
benchArray[benchArray.length] = weeklyResultsData.weeklyResults.matchup[i].franchise[0].nonstarters;
}
for(var j=0;j0) { //more than one tiebreaker
while (tieBreakerList.indexOf(",")>0) {
var playerID = tieBreakerList.substring(0,tieBreakerList.indexOf(","));
if(parseFloat(playerID)>0) tieBreakerArray[tieBreakerArray.length] = playerID;
tieBreakerList = tieBreakerList.substring(tieBreakerList.indexOf(",")+1,tieBreakerList.length);
}
} else { //only one player
tieBreakerArray[tieBreakerArray.length] = weeklyResultsData.weeklyResults.matchup[i].franchise[1].tiebreaker;
}
for(var j=0;j0) { //more than one bench player
while (benchList.indexOf(",")>0) {
var playerID = benchList.substring(0,benchList.indexOf(","));
if(parseFloat(playerID)>0) benchArray[benchArray.length] = playerID;
benchList = benchList.substring(benchList.indexOf(",")+1,benchList.length);
}
} else { //only one player
benchArray[benchArray.length] = weeklyResultsData.weeklyResults.matchup[i].franchise[1].nonstarters;
}
for(var j=0;j0) { //more than one tiebreaker
while (tieBreakerList.indexOf(",")>0) {
var playerID = tieBreakerList.substring(0,tieBreakerList.indexOf(","));
if(parseFloat(playerID)>0) tieBreakerArray[tieBreakerArray.length] = playerID;
tieBreakerList = tieBreakerList.substring(tieBreakerList.indexOf(",")+1,tieBreakerList.length);
}
} else { //only one player
tieBreakerArray[tieBreakerArray.length] = weeklyResultsData.weeklyResults.matchup.franchise[0].tiebreaker;
}
for(var j=0;j0) { //more than one bench player
while (benchList.indexOf(",")>0) {
var playerID = benchList.substring(0,benchList.indexOf(","));
if(parseFloat(playerID)>0) benchArray[benchArray.length] = playerID;
benchList = benchList.substring(benchList.indexOf(",")+1,benchList.length);
}
} else { //only one player
benchArray[benchArray.length] = weeklyResultsData.weeklyResults.matchup.franchise[0].nonstarters;
}
for(var j=0;j0) { //more than one tiebreaker
while (tieBreakerList.indexOf(",")>0) {
var playerID = tieBreakerList.substring(0,tieBreakerList.indexOf(","));
if(parseFloat(playerID)>0) tieBreakerArray[tieBreakerArray.length] = playerID;
tieBreakerList = tieBreakerList.substring(tieBreakerList.indexOf(",")+1,tieBreakerList.length);
}
} else { //only one player
tieBreakerArray[tieBreakerArray.length] = weeklyResultsData.weeklyResults.matchup.franchise[1].tiebreaker;
}
for(var j=0;j0) { //more than one bench player
while (benchList.indexOf(",")>0) {
var playerID = benchList.substring(0,benchList.indexOf(","));
if(parseFloat(playerID)>0) benchArray[benchArray.length] = playerID;
benchList = benchList.substring(benchList.indexOf(",")+1,benchList.length);
}
} else { //only one player
benchArray[benchArray.length] = weeklyResultsData.weeklyResults.matchup.franchise[1].nonstarters;
}
for(var j=0;j0) { //more than one tiebreaker
while (tieBreakerList.indexOf(",")>0) {
var playerID = tieBreakerList.substring(0,tieBreakerList.indexOf(","));
if(parseFloat(playerID)>0) tieBreakerArray[tieBreakerArray.length] = playerID;
tieBreakerList = tieBreakerList.substring(tieBreakerList.indexOf(",")+1,tieBreakerList.length);
}
} else { //only one player
tieBreakerArray[tieBreakerArray.length] = weeklyResultsData.weeklyResults.franchise[i].tiebreaker;
}
for(var j=0;j0) { //more than one bench player
while (benchList.indexOf(",")>0) {
var playerID = benchList.substring(0,benchList.indexOf(","));
if(parseFloat(playerID)>0) benchArray[benchArray.length] = playerID;
benchList = benchList.substring(benchList.indexOf(",")+1,benchList.length);
}
} else { //only one player
benchArray[benchArray.length] = weeklyResultsData.weeklyResults.franchise[i].nonstarters;
}
for(var j=0;j=1&&franchiseCount<=leagueAttributes['Franchises']) {
var fid = franchiseDatabase[key].id;
habReportsWeeklyPointsScored[fid]['totalRegular'] = 0;
habReportsWeeklyPointsScored[fid]['totalAll'] = 0;
habReportsWeeklyPointsScored[fid]['conf_pf'] = 0;
habReportsWeeklyPointsScored[fid]['non_conf_pf'] = 0;
habReportsWeeklyPointsScored[fid]['div_pf'] = 0;
habReportsWeeklyPointsScored[fid]['non_div_pf'] = 0;
for(var w=1;w<=17;w++) {
if(w<=lastRegularWeek) {
habReportsWeeklyPointsScored[fid]['totalRegular'] += habReportsWeeklyPointsScored[fid][w];
if(matchupType[fid][w][0]) habReportsWeeklyPointsScored[fid]['conf_pf'] += habReportsWeeklyPointsScored[fid][w]; else habReportsWeeklyPointsScored[fid]['non_conf_pf'] += habReportsWeeklyPointsScored[fid][w];
if(matchupType[fid][w][1]) habReportsWeeklyPointsScored[fid]['div_pf'] += habReportsWeeklyPointsScored[fid][w]; else habReportsWeeklyPointsScored[fid]['non_div_pf'] += habReportsWeeklyPointsScored[fid][w];
}
habReportsWeeklyPointsScored[fid]['totalAll'] += habReportsWeeklyPointsScored[fid][w];
}
}
franchiseCount++;
}
//update habStandingsData with new points if applicable
if(countPtsScoredOncePerWeek) {
for(var i = 0; i=completedWeek) var divisor = completedWeek; else var divisor = weeksToCount;
summaryArray['0000']['total'] = summaryArray['0000']['total']/leagueAttributes['Franchises'] ;
summaryArray['0000']['avg'] = summaryArray['0000']['total']/divisor;
createScoringSummaryTable(divID,summaryArray,weeksToCount,weeksTotal);
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY HAB SURVIVOR
var survivorElimination = new Array();
survivorElimination[6] = new Array();
survivorElimination[6][0] = new Array('0016','Extra Elimination due to Failure to Submit Lineup',false); // id,reason,replace regular elimination
survivorElimination[6][1] = new Array('0002','Extra Elimination due to Failure to Submit Lineup',false); // id,reason,replace regular elimination
function getSurvivorData(survivorID) {
//i need to loop through the weeks and find winner & losers for each week then return the array
//for each week i need to keep track of eliminated teams
//set all teams as active
returnArray = new Array();
teamActive = new Array();
hasImmunity = new Array();
var survivorChampionFound = false;
for(i=0;ihiScore) hiScore = habReportsWeeklyPointsScored[survivorID[i]][w];
if(teamActive[survivorID[i]]&&habReportsWeeklyPointsScored[survivorID[i]][w]1) {// break tie
var tempArray = new Array();
for(var i=0;itempArray[1][1]) { // tie is broken
hiScoreTeam = tempArray[0][0];
hiScoreTitle = "Gained immunity based on first tiebreaker -> Tiebreaking Player(s).";
} else {
var tempArray2 = new Array();
for(var i=0;itempArray2[1][1]) { // tie is broken
hiScoreTeam = tempArray2[0][0];
hiScoreTitle = "Gained immunity based on 2nd tiebreaker -> Bench Scoring.";
} else {
var tempArray3 = new Array();
for(var i=0;i1) {// break tie
var tempArray = new Array();
for(var i=0;i(completedWeek-survivorExtraElimination)) var tempScore="-"; else var tempScore = decimalFormat(habReportsWeeklyPointsScored[survivorID[i]][w],scoringDecimals);
if(hiScoreTeam==survivorID[i]&&w<(leagueAttributes['Franchises']-2-survivorExtraElimination)) { hasImmunity[survivorID[i]] = true; tempSpanStart=""; tempSpanClose = ""; }
if(hiScoreTeam==survivorID[i]&&w==(leagueAttributes['Franchises']-1-survivorExtraElimination)) { tempSpanStart=""; tempSpanClose = ""; survivorChampionFound = true; }
if(loScoreTeam==survivorID[i]) { teamActive[survivorID[i]] = false; tempSpanStart=""; tempSpanClose = ""; }
if(immunitySavedTeam==survivorID[i]) { tempSpanStart=""; tempSpanClose = ""; }
try {
for (var j=0; j"; tempSpanClose = "";
var tempScore = decimalFormat(habReportsWeeklyPointsScored[survivorID[i]][w],scoringDecimals);
}
} catch(er) {}
}
} catch(er) {}
returnArray[w][i] = tempSpanStart + tempScore + tempSpanClose;
}
}
}
return returnArray;
}
function createHabSurvivorTable(divID) {
var survivorID = new Array();
var franchiseCount = 0;
for (var key in franchiseDatabase) {
if(franchiseCount>=1&&franchiseCount<=leagueAttributes['Franchises']) {
var fid = franchiseDatabase[key].id;
survivorID[franchiseCount-1] = fid;
}
franchiseCount++;
}
if(survivorData.length==0) survivorData = getSurvivorData(survivorID);
if(disableHilite) var myTableClass = ""; else var myTableClass = " habHiliteTable";
var tempHTML = "";
tempHTML += "\nFantasy Survivor Competition\n\n";
tempHTML += " \n | \n";
for ( var m = 1; m <= leagueAttributes['Franchises']-1; m++ ) {
tempHTML += " " + m + " | \n";
}
tempHTML += "
\n";
for(var i = 0; i < leagueAttributes['Franchises']; i++ ) {
var fid = survivorID[i];
if(i % 2 == 0) var thisTableClass="oddtablerow"; else var thisTableClass="eventablerow";
var myNameHTML = getHabReportsNameIcon(1,fid,false);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myNameHTML!=""&&myIconHTML!="") var myGap = " "; else var myGap = "";
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + fid + "&O=01";
tempHTML += " \n " + myIconHTML + myGap + myNameHTML + " | \n";
for ( var w = 1; w <= leagueAttributes['Franchises']-1; w++ ) {
tempHTML += " " + survivorData[w][i] + " | \n";
}
tempHTML += "
\n";
}
tempHTML += "\n
\n";
if(!disableScoreAdjustments) {
endWeek=leagueAttributes['Franchises']-1;
tempHTML+= doAdjustmentsFooter(endWeek);
}
if(enableCodeWriter) {
tempHTML = '\n\n\n\n' +tempHTML;
document.getElementById(divID).innerHTML = tempHTML;
} else {
document.getElementById(divID).innerHTML = tempHTML;
}
}
function doHabSurvivorTable(divID) {
//we need to setup various weekly tiebreakers
if(habReportsWeeklyPointsScored['0001']==undefined) doHabReportsWeeklyPointsScored();
createHabSurvivorTable(divID);
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY BRIEF POWER TABLE APPS
function createBriefPowerTable(arrayName, top, currentTable, field, className) {
for ( var n = 0; n < top; n++ ) {
var r=n+1
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + arrayName[n][1] + "&O=01";
if(n % 2 == 0)
currentTable += " " + r + " | " + arrayName[n][2] + " | " + arrayName[n][field] + " |
\n";
else
currentTable += " " + r + " | " + arrayName[n][2] + " | " + arrayName[n][field] + " |
\n";
}
currentTable += "\n";
return currentTable;
}
function doBriefPowerTables(standings_request) {
var powerRankTable = "";
var victoryPointTable = "";
var allPlayTable = "";
powerRankTable += "\n";
powerRankTable += " \n";
victoryPointTable += "\n";
victoryPointTable += " \n";
allPlayTable += "\n";
allPlayTable += " \n";
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,16,0); powerRankTable = createBriefPowerTable(habStandingsData,5,powerRankTable,16,'pwscore');
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,17,0); victoryPointTable = createBriefPowerTable(habStandingsData,5,victoryPointTable,17,'vpscore');
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,18,0); allPlayTable = createBriefPowerTable(habStandingsData,5,allPlayTable,18,'apscore');
window.document.getElementById("xml_powerrank").innerHTML = powerRankTable;
window.document.getElementById("xml_victorypoint").innerHTML = victoryPointTable;
window.document.getElementById("xml_allplay").innerHTML = allPlayTable;
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY HEAD TO HEAD APPS
function doHeadToHeadArray() {
if(headToHeadArray.length==0||(showScores!=didShowScores)) { // Run this only one time unless we have to redo table due to showScores
didShowScores = showScores;
headToHeadArray = new Array(); // reset head to head array
sosArray = new Array(); // reset sos array
sovArray = new Array(); // reset sov array
for ( var f = 0; f <= leagueAttributes['Franchises'] ; f++ ) { // Adding one extra to accomodate League Average if necessary
headToHeadArray[f] = new Array(); // This for-next loop creates all the multi-dimensional arrays required
sosArray[f] = new Array();
sovArray[f] = new Array();
for ( var t = 0; t <= leagueAttributes['Franchises'] ; t++ ) {
headToHeadArray[f][t] = ["*",0,0,"",0,0,0,0,0,""]; // [WLT text, +1 for W; -1 for L; 0 for tie, Games Played Head to Head, title text, wins, losses, ties, points scored, tooltip text]
sosArray[f] = [0,0,0,0,0,0]; // [Opp. Overall W, Opp. Overall L, Opp. Overall T, Opp. Overall PF, SOS record, SOS %]
sovArray[f] = [0,0,0,0,0,0]; // [Opp. Overall W, Opp. Overall L, Opp. Overall T, Opp. Overall PF, SOV record, SOV %]
}
}
createHeadToHeadArray();
}
}
function createHeadToHeadArray () { // Also will create sosArray (Strength of Schedule) and sovArray (Strength of Victory)
if(completedWeek<=lastRegularWeek) var endWeek=completedWeek; else endWeek=lastRegularWeek;
for (var w=1;w<=endWeek;w++) {
var currentFile = habCurrentServer+"/"+year+"/export?L="+league_id+"&TYPE=weeklyResults&JSON=1&rand=" + Math.random() + "&W=" + w;
$.ajax({type: 'GET',url: currentFile, async: false, weeklyResultsData: {'USER_ID': userCookieValue}}).done(function (weeklyResultsData) {
fillHeadToHeadArray(weeklyResultsData,w);
});
weeklyResultsData=null;
}
for ( var n = 0; n < leagueAttributes['Franchises'] ; n++ ) {
if((sosArray[n][0] + sosArray[n][1] + sosArray[n][2])!=0)
sosArray[n][5] = parseInt((sosArray[n][0] + (sosArray[n][2]*0.5))*1000 / (sosArray[n][0] + sosArray[n][1] + sosArray[n][2]))/1000;
sosArray[n][4] = sosArray[n][0] + '-' + sosArray[n][1] + '-' + sosArray[n][2];
habStandingsData[n][42] = sosArray[n][4];
habStandingsData[n][43] = sosArray[n][5];
if((sovArray[n][0] + sovArray[n][1] + sovArray[n][2])!=0)
sovArray[n][5] = parseInt((sovArray[n][0] + (sovArray[n][2]*0.5))*1000 / (sovArray[n][0] + sovArray[n][1] + sovArray[n][2]))/1000;
sovArray[n][4] = sovArray[n][0] + '-' + sovArray[n][1] + '-' + sovArray[n][2];
habStandingsData[n][44] = sovArray[n][4];
habStandingsData[n][45] = sovArray[n][5];
}
}
function fillHeadToHeadArray (thisArray,thisWeek) {
var skipMatchup = false;
for ( var m = 0; m < thisArray.weeklyResults.matchup.length; m++ ) {
var awayIDStr = thisArray.weeklyResults.matchup[m].franchise[0].id;
var homeIDStr = thisArray.weeklyResults.matchup[m].franchise[1].id;
var awayID = parseInt(awayIDStr,10)-1;
var homeID = parseInt(homeIDStr,10)-1;
if(awayIDStr=="AVG") { awayID=leagueAttributes['Franchises'] ; leagueAverage=true; }
if(homeIDStr=="AVG") { homeID=leagueAttributes['Franchises'] ; leagueAverage=true; }
if(leagueAverage&&!leagueAverageCreated) {
habFranchiseData[leagueAttributes['Franchises'] ] = new Array();
habFranchiseData[leagueAttributes['Franchises'] ] = [parseInt(leagueAttributes['Franchises'] ,10)+1,"Average",0];
habStandingsData[leagueAttributes['Franchises'] ] = new Array();
habStandingsData[leagueAttributes['Franchises'] ] = [0,0,0,0,0,0,"n/a"];
leagueAverageCreated = true;
}
if(awayIDStr=="BYE"||homeIDStr=="BYE") skipMatchup = true;
if(!skipMatchup) {
var awayScore = parseFloat(thisArray.weeklyResults.matchup[m].franchise[0].score);
var homeScore = parseFloat(thisArray.weeklyResults.matchup[m].franchise[1].score);
var awayResult = thisArray.weeklyResults.matchup[m].franchise[0].result;
var homeResult = thisArray.weeklyResults.matchup[m].franchise[1].result;
if(awayScore>homeScore||awayResult=="W") {
if(awayScore==homeScore) { var asterisk="*"; var asteriskExplanation = "won tiebreaker"; } else { var asterisk=""; var asteriskExplanation = ""; }
if(showScores) var awayResult='' + awayScore + asterisk + ''; else var awayResult='W'+asterisk+'';
if(showScores) var homeResult='' + homeScore + asterisk + ''; else var homeResult='L'+asterisk+'';
var awayCount = 1;
var homeCount = -1;
var awayTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[awayID][1] + ' ' + awayScore + asterisk + ' defeated ' + habFranchiseData[homeID][1] + ' ' + homeScore + ' ' + asterisk + asteriskExplanation;
var homeTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[homeID][1] + ' ' + homeScore + ' lost to ' + habFranchiseData[awayID][1] + ' ' + awayScore + asterisk + ' ' + asterisk + asteriskExplanation;
var awayWin = 1;
var homeWin = 0;
var awayLoss = 0;
var homeLoss = 1;
var awayTie = 0;
var homeTie = 0;
sovArray[awayID][0] += habStandingsData[homeID][3];
sovArray[awayID][1] += habStandingsData[homeID][4];
sovArray[awayID][2] += habStandingsData[homeID][5];
sovArray[awayID][3] += habStandingsData[homeID][8];
} else if(awayScore'; else var awayResult='L'+asterisk+'';
if(showScores) var homeResult='' + homeScore + asterisk + ''; else var homeResult='W'+asterisk+'';
var awayCount = -1;
var homeCount = 1;
var awayTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[awayID][1] + ' ' + awayScore + ' lost to ' + habFranchiseData[homeID][1] + ' ' + homeScore + asterisk + ' ' + asterisk + asteriskExplanation;
var homeTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[homeID][1] + ' ' + homeScore + asterisk + ' defeated ' + habFranchiseData[awayID][1] + ' ' + awayScore + ' ' + asterisk + asteriskExplanation;
var awayWin = 0;
var homeWin = 1;
var awayLoss = 1;
var homeLoss = 0;
var awayTie = 0;
var homeTie = 0;
sovArray[homeID][0] += habStandingsData[awayID][3];
sovArray[homeID][1] += habStandingsData[awayID][4];
sovArray[homeID][2] += habStandingsData[awayID][5];
sovArray[homeID][3] += habStandingsData[awayID][8];
} else { // TIE
if(showScores) var awayResult=awayScore; else var awayResult='T';
if(showScores) var homeResult=homeScore; else var homeResult='T';
var awayCount = 0;
var homeCount = 0;
var awayTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[awayID][1] + ' ' + awayScore + ' tied ' + habFranchiseData[homeID][1] + ' ' + homeScore;
var homeTitle = 'Week #' + thisWeek + ': ' + habFranchiseData[homeID][1] + ' ' + homeScore + ' tied ' + habFranchiseData[awayID][1] + ' ' + awayScore;
var awayWin = 0;
var homeWin = 0;
var awayLoss = 0;
var homeLoss = 0;
var awayTie = 1;
var homeTie = 1;
}
sosArray[awayID][0] += habStandingsData[homeID][3];
sosArray[homeID][0] += habStandingsData[awayID][3];
sosArray[awayID][1] += habStandingsData[homeID][4];
sosArray[homeID][1] += habStandingsData[awayID][4];
sosArray[awayID][2] += habStandingsData[homeID][5];
sosArray[homeID][2] += habStandingsData[awayID][5];
sosArray[awayID][3] += habStandingsData[homeID][8];
sosArray[homeID][3] += habStandingsData[awayID][8];
if(headToHeadArray[homeID][awayID][0]=="*") {
headToHeadArray[homeID][awayID][0] = homeResult;
headToHeadArray[homeID][awayID][1] = homeCount;
headToHeadArray[homeID][awayID][2] = 1;
headToHeadArray[homeID][awayID][3] = homeTitle;
headToHeadArray[homeID][awayID][4] = homeWin;
headToHeadArray[homeID][awayID][5] = homeLoss;
headToHeadArray[homeID][awayID][6] = homeTie;
headToHeadArray[homeID][awayID][7] = homeScore;
headToHeadArray[homeID][awayID][8] = ' ' + homeTitle + ' ';
headToHeadArray[awayID][homeID][0] = awayResult;
headToHeadArray[awayID][homeID][1] = awayCount;
headToHeadArray[awayID][homeID][2] = 1;
headToHeadArray[awayID][homeID][3] = awayTitle;
headToHeadArray[awayID][homeID][4] = awayWin;
headToHeadArray[awayID][homeID][5] = awayLoss;
headToHeadArray[awayID][homeID][6] = awayTie;
headToHeadArray[awayID][homeID][7] = awayScore;
headToHeadArray[awayID][homeID][8] = ' ' + awayTitle + ' ';
} else {
headToHeadArray[homeID][awayID][0] += ',' + homeResult;
headToHeadArray[homeID][awayID][1] += homeCount;
headToHeadArray[homeID][awayID][2] += 1;
headToHeadArray[homeID][awayID][3] += '\n' + homeTitle;
headToHeadArray[homeID][awayID][4] += homeWin;
headToHeadArray[homeID][awayID][5] += homeLoss;
headToHeadArray[homeID][awayID][6] += homeTie;
headToHeadArray[homeID][awayID][7] += homeScore;
headToHeadArray[homeID][awayID][8] += '
' + homeTitle + ' ';
headToHeadArray[awayID][homeID][0] += ',' + awayResult;
headToHeadArray[awayID][homeID][1] += awayCount;
headToHeadArray[awayID][homeID][2] += 1;
headToHeadArray[awayID][homeID][3] += '\n' + awayTitle;
headToHeadArray[awayID][homeID][4] += awayWin;
headToHeadArray[awayID][homeID][5] += awayLoss;
headToHeadArray[awayID][homeID][6] += awayTie;
headToHeadArray[awayID][homeID][7] += awayScore;
headToHeadArray[awayID][homeID][8] += '
' + awayTitle + ' ';
}
} //END IF !SkipMatchup
skipMatchup = false;
}
}
function doHeadToHeadTable(divID,which) {
if(headToHeadArray.length==0) doHeadToHeadArray();
if(which == undefined) { var which; var mode = "all"; } else var mode = which;
var thisArray = habStandingsData;
thisArray = habmanBubbleSort(thisArray,leagueAttributes['Franchises'] ,7,0);
if(disableHilite) var myTableClass = ""; else var myTableClass = " habHiliteTable";
if(leagueAverage) var teams=parseInt(leagueAttributes['Franchises'] ,10)+1; else var teams=leagueAttributes['Franchises'] ;
var tempHTML = "";
var loops = 1;
var title = "";
if(mode=="byDivision") loops = habDivisionData.length;
if(mode=="byConference") loops = habConferenceData.length;
for (var i = 0; i < loops; i++) {
if(mode=="byDivision") title = "
" + habDivisionData[i][1];;
if(mode=="byConference") title = "
" + habConferenceData[i][1];
tempHTML += "\nHead-To-Head Results" + title + "\n\n";
tempHTML += " \n | \n";
for ( var m = 0; m < teams; m++ ) {
var doIt=false;
var fid = habFranchiseData[parseInt(thisArray[m][0]-1)][0];
if(mode=="all") doIt = true;
if(mode.indexOf(habFranchiseData[parseInt(thisArray[m][0]-1)][0])!=-1) var doIt = true;
if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[m][0]-1)][2]==i) var doIt=true;
if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[m][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
var myNameHTML = getHabReportsNameIcon(1,fid,true);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myIconHTML!="") var myTopRowTeam = myIconHTML; else if(myNameHTML!="") var myTopRowTeam = myNameHTML; else var myTopRowTeam = fid;
tempHTML += " " + myTopRowTeam + " | \n";
}
}
tempHTML += " Overall | \n
\n";
for ( var m = 0; m < teams; m++ ) {
var doIt=false;
var fid = habFranchiseData[parseInt(thisArray[m][0]-1)][0];
if(mode=="all") doIt = true;
if(mode.indexOf(habFranchiseData[parseInt(thisArray[m][0]-1)][0])!=-1) var doIt = true;
if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[m][0]-1)][2]==i) var doIt=true;
if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[m][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
if(m % 2 == 0) var thisTableClass="oddtablerow"; else var thisTableClass="eventablerow";
var myNameHTML = getHabReportsNameIcon(1,fid,false);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myNameHTML!=""&&myIconHTML!="") var myGap = " "; else var myGap = "";
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + fid + "&O=01";
tempHTML += " \n " + myIconHTML + myGap + myNameHTML + " | \n";
for ( var n = 0; n < teams; n++ ) {
var doIt=false;
if(mode=="all") doIt = true;
if(mode.indexOf(habFranchiseData[parseInt(thisArray[n][0]-1)][0])!=-1) var doIt = true;
if(mode=="byDivision"&&habFranchiseData[parseInt(thisArray[n][0]-1)][2]==i) var doIt=true;
if(mode=="byConference"&&parseInt(habDivisionData[parseInt(habFranchiseData[parseInt(thisArray[n][0]-1)][2],10)][2],10)==i) var doIt=true;
if(doIt) {
if(m==n) {
tempHTML += " X | \n";
} else {
if(headToHeadArray[parseInt(thisArray[m][0],10)-1][parseInt(thisArray[n][0],10)-1][0] != "*") {
tempHTML += " " + headToHeadArray[parseInt(thisArray[m][0],10)-1][parseInt(thisArray[n][0],10)-1][0] + " | \n";
} else {
tempHTML += " - | \n";
}
}
} // END DO IT
}
tempHTML += " " + habStandingsData[m][6] + " | \n
\n";
}
}
tempHTML += "\n
\n";
if(!disableScoreAdjustments) {
if(completedWeek<=lastRegularWeek) var endWeek=completedWeek; else endWeek=lastRegularWeek;
tempHTML+= doAdjustmentsFooter(endWeek);
}
} // FOR DIVISION OR CONFERENCE LOOPS
if(enableCodeWriter) {
tempHTML = '\n\n\n\n' +tempHTML;
document.getElementById(divID).innerHTML = tempHTML;
} else {
document.getElementById(divID).innerHTML = tempHTML;
}
}
// THE FOLLOWING FUNCTIONS ARE USED FOR MY PLAYOFF APPS
function sortHeadToHeadSweep(arrayName, length) { //if there is a three-way or more this test for head to head sweep and swept
if(headToHeadArray.length==0) doHeadToHeadArray();
var sweep=false;
var swept=false;
var teamFound=-1;
stepsText += " Applying Sweep Rule~";
stepsHTML += "Applying Sweep Rule |
";
headToHeadSweep = false;
headToHeadSwept = false;
for (var i=0; i 0) {
if(headToHeadArray[arrayName[i][0]][arrayName[j][0]][1]==0) {
sweep=false; swept=false;
} else {
if(headToHeadArray[arrayName[i][0]][arrayName[j][0]][2]!=Math.abs(headToHeadArray[arrayName[i][0]][arrayName[j][0]][1])) { sweep=false; swept=false; }
if(headToHeadArray[arrayName[i][0]][arrayName[j][0]][2]==headToHeadArray[arrayName[i][0]][arrayName[j][0]][1]) swept=false;
if(headToHeadArray[arrayName[i][0]][arrayName[j][0]][2]==-1*headToHeadArray[arrayName[i][0]][arrayName[j][0]][1]) sweep=false;
}
} else {
if(i!=j) { sweep=false; swept=false; }
}
}
if(sweep||swept) { teamFound=i; i=length; }
}
if(reverseTheOrder) {
var temp=sweep;
sweep=swept;
swept=temp;
}
if(!sweep&&!swept) {
stepsText += " No team Sweeped or was Swept~";
stepsHTML += "==> No team Sweeped or was Swept |
";
}
if(sweep) {
headToHeadSweep=true;
if((arrayName[teamFound][0]+1)<10) var fid = "000"+(arrayName[teamFound][0]+1); else if((arrayName[teamFound][0]+1)<100) var fid = "00"+(arrayName[teamFound][0]+1); else if((arrayName[teamFound][0]+1)<1000) var fid = "0"+(arrayName[teamFound][0]+1); else var fid=""+(arrayName[teamFound][0]+1);
stepsText += " "+habFranchiseIDData[fid][1]+" Swept Opponents therefore Advanced~";
stepsHTML += "==> "+habFranchiseIDData[fid][1]+" Swept Opponents therefore Advanced |
";
teamsCurrentlyTied=1;
arrayName = moveRow(arrayName,teamFound,0);
headToHeadBrokeTie=true;
}
if(swept) {
headToHeadSwept=true;
if((arrayName[teamFound][0]+1)<10) var fid = "000"+(arrayName[teamFound][0]+1); else if((arrayName[teamFound][0]+1)<100) var fid = "00"+(arrayName[teamFound][0]+1); else if((arrayName[teamFound][0]+1)<1000) var fid = "0"+(arrayName[teamFound][0]+1); else var fid=""+(arrayName[teamFound][0]+1);
stepsText += " "+habFranchiseIDData[fid][1]+" was Swept therefore Eliminated~";
stepsHTML += "==> "+habFranchiseIDData[fid][1]+" was Swept therefore Eliminated |
";
teamsCurrentlyTied-=1;
arrayName = moveRow(arrayName,teamFound,teamsCurrentlyTied);
if(teamsCurrentlyTied==1) headToHeadBrokeTie=true;
}
return arrayName;
}
function sortHeadToHeadWinPctStartOverRule (arrayName, length) {
if(headToHeadArray.length==0) doHeadToHeadArray();
var gamesPlayed;
var wins;
var losses;
var ties;
var allPlayed = true;
var onePlayedMinimum = true;
var goodToGo = true;
for (var i=0; iApplying Win% Rule | ";
for (var i=0; i 0) { //GAMES PLAYED CHECK
gamesPlayed += headToHeadArray[arrayName[i][0]][arrayName[j][0]][2];
wins += headToHeadArray[arrayName[i][0]][arrayName[j][0]][4];
losses += headToHeadArray[arrayName[i][0]][arrayName[j][0]][5];
ties += headToHeadArray[arrayName[i][0]][arrayName[j][0]][6];
} else {
if(i!=j) allPlayed = false;
}
}
arrayName[i][8] = parseInt((wins + 0.5*ties)*1000/gamesPlayed)/1000;
if(arrayName[i][8].toString()=="NaN") {
arrayName[i][8] = -0.0001;
onePlayedMinimum = false;
}
}
if(useWinPctRule==2&&!onePlayedMinimum) {
goodToGo=false;
stepsText +=" . . . . not applicable since all the teams did not play at least one game~";
stepsHTML +="==> N/A. All teams did not play at least one game |
";
}
if(useWinPctRule==3&&!allPlayed) {
goodToGo=false;
stepsText +=" . . . . not applicable since the teams did not play at least one game against each other~";
stepsHTML +="==> N/A. Did not play at least one game against each other |
";
}
if(!reverseTheOrder)
arrayName = habmanBubbleSort(arrayName,length,8,0);
else
arrayName = habmanBubbleSort(arrayName,length,8,1);
var newText = " Current grouping (";
var newTextHTML = "Current Grouping (";
for (var x = 0; x < length; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][8],3) + ", ";
if(decimalFormat(arrayName[x][8],3)==decimalFormat(arrayName[0][8],3)) var advancedSpanClass = "habSeedAdvancedSpan"; else var advancedSpanClass = "habSeedEliminatedSpan";
newTextHTML += "" + habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][8],3) + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
currentWinPctGrouping = newText;
currentWinPctGroupingHTML = newTextHTML;
var retest = false;
if(goodToGo) {
if(arrayName[0][8]!=arrayName[1][8]) { // If one winner then set up return for sortTheseTeams
headToHeadBrokeTie=true;
} else { // else reset teamsCurrentlyTied eliminating bottom teams
var teamCount = 1;
for (var t=0; t<(arrayName.length-1); t++) {
if(arrayName[t][8]==arrayName[t+1][8])
teamCount++;
else
t=arrayName.length-1;
}
if(teamsCurrentlyTied>teamCount) teamsCurrentlyTied = teamCount;
if(teamsCurrentlyTied"+currentWinPctGroupingHTML+" | ";
if(retest) arrayName = sortHeadToHeadWinPctStartOverRule(arrayName, teamsCurrentlyTied); //NEW ADDITION TO RETEST AFTER CHANGES IN TIED TEAMS
return arrayName;
}
function sortHeadToHeadWinPctMFLRule (arrayName, length, previousTieBreak) {
if(headToHeadArray.length==0) doHeadToHeadArray();
var gamesPlayed;
var wins;
var losses;
var ties;
stepsText += " Applying MFL Win% Rule~";
stepsHTML += "Applying MFL Win% Rule |
";
if(headToHeadWinPctTeams<1) {
headToHeadWinPctTeams=length;
for (var i=0; i 0) { //GAMES PLAYED CHECK
gamesPlayed += headToHeadArray[arrayName[i][0]][arrayName[j][0]][2];
wins += headToHeadArray[arrayName[i][0]][arrayName[j][0]][4];
losses += headToHeadArray[arrayName[i][0]][arrayName[j][0]][5];
ties += headToHeadArray[arrayName[i][0]][arrayName[j][0]][6];
}
}
arrayName[i][8] = parseInt((wins + 0.5*ties)*1000/gamesPlayed)/1000;
if(arrayName[i][8].toString()=="NaN") {
arrayName[i][8] = -0.0001;
}
}
if(!reverseTheOrder)
arrayName = habmanBubbleSort(arrayName,length,8,0);
else
arrayName = habmanBubbleSort(arrayName,length,8,1);
if(arrayName[0][8]!=arrayName[1][8]) { // If one winner then set up return for sortTheseTeams
headToHeadBrokeTie=true;
}
var newText = " Current grouping (";
var newTextHTML = "Current Grouping ("
for (var x = 0; x < length; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][8],3) + ", ";
if(decimalFormat(arrayName[x][8],3)==decimalFormat(arrayName[0][8],3)) var advancedSpanClass = "habSeedAdvancedSpan"; else var advancedSpanClass = "habSeedEliminatedSpan";
newTextHTML += "" + habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][8],3) + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
currentWinPctGrouping = newText;
currentWinPctGroupingHTML = newTextHTML;
}
stepsText += currentWinPctGrouping;
stepsHTML += ""+currentWinPctGroupingHTML+" |
";
return arrayName;
}
function sortHthPointsScoredStartOverRule (arrayName, length) {
if(headToHeadArray.length==0) doHeadToHeadArray();
var pointsScored;
for (var i=0; iPoints Scored | ";
for (var i=0; i 0) { //GAMES PLAYED CHECK
pointsScored += headToHeadArray[arrayName[i][0]][arrayName[j][0]][7];
}
}
arrayName[i][18] = pointsScored;
if(arrayName[i][18].toString()=="NaN") arrayName[i][18] = 0;
}
if(!reverseTheOrder)
arrayName = habmanBubbleSort(arrayName,length,18,0);
else
arrayName = habmanBubbleSort(arrayName,length,18,1);
var newText = " Current grouping (";
var newTextHTML = "Current Grouping (";
for (var x = 0; x < length; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][18],scoringDecimals) + ", ";
if(decimalFormat(arrayName[x][18],scoringDecimals)==decimalFormat(arrayName[0][18],scoringDecimals)) var advancedSpanClass = "habSeedAdvancedSpan"; else var advancedSpanClass = "habSeedEliminatedSpan";
newTextHTML += ""+ habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][18],scoringDecimals) + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
currentPointsScoredGrouping = newText;
currentPointsScoredGroupingHTML = newTextHTML;
if(arrayName[0][18]!=arrayName[1][18]) { // If one winner then set up return for sortTheseTeams
hthPointsScoredBrokeTie=true;
} else { // else reset teamsCurrentlyTied eliminating bottom teams
var teamCount = 1;
for (var t=0; t<(arrayName.length-1); t++) {
if(arrayName[t][18]==arrayName[t+1][18])
teamCount++;
else
t=arrayName.length-1;
}
if(teamsCurrentlyTied>teamCount) teamsCurrentlyTied = teamCount;
}
stepsText += currentPointsScoredGrouping;
stepsHTML += ""+currentPointsScoredGroupingHTML+" |
";
return arrayName;
}
function sortHthPointsScoredMFLRule (arrayName, length, previousTieBreak){
var pointsScored;
stepsText += " Points Scored~";
stepsHTML += "Points Scored |
";
if(hthPointsScoredTeams<1) {
hthPointsScoredTeams=length;
for (var i=0; i 0) { //GAMES PLAYED CHECK
pointsScored += headToHeadArray[arrayName[i][0]][arrayName[j][0]][7];
}
}
arrayName[i][18] = pointsScored;
if(arrayName[i][18].toString()=="NaN") arrayName[i][18] = 0;
}
if(!reverseTheOrder)
arrayName = habmanBubbleSort(arrayName,length,18,0);
else
arrayName = habmanBubbleSort(arrayName,length,18,1);
if(arrayName[0][18]!=arrayName[1][18]) { // If one winner then set up return for sortTheseTeams
hthPointsScoredBrokeTie=true;
}
var newText = " Current grouping (";
var newTextHTML = "Current Grouping (";
for (var x = 0; x < length; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][18],scoringDecimals) + ", ";
if(decimalFormat(arrayName[x][18],scoringDecimals)==decimalFormat(arrayName[0][18],scoringDecimals)) var advancedSpanClass = "habSeedAdvancedSpan"; else var advancedSpanClass = "habSeedEliminatedSpan";
newTextHTML += "" + habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][18],scoringDecimals) + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
currentPointsScoredGrouping = newText;
currentPointsScoredGroupingHTML = newTextHTML;
}
stepsText += currentPointsScoredGrouping;
stepsHTML += ""+currentPointsScoredGroupingHTML+" |
";
return arrayName;
}
function sortHeadToHeadWinPct(arrayName, length, previousTieBreak) { //if there is a three-way or more this test for head to head win percent amongst the three teams
if(useStartOverRule)
arrayName = sortHeadToHeadWinPctStartOverRule (arrayName, length)
else
arrayName = sortHeadToHeadWinPctMFLRule (arrayName, length, previousTieBreak)
return arrayName;
}
function sortHthPointsScored(arrayName, length, previousTieBreak) { //if there is a three-way or more this test for head to head win percent amongst the three teams
if(useStartOverRule)
arrayName = sortHthPointsScoredStartOverRule (arrayName, length)
else
arrayName = sortHthPointsScoredMFLRule (arrayName, length, previousTieBreak)
return arrayName;
}
function sortHeadToHead(arrayName, length, previousTieBreak, secondaryRank) { // SORT HEAD TO HEAD
var threeWayTie = false;
var rankTier = 2;
var sweepRan = false;
var lengthAdj = 0;
headToHeadBrokeTie = false;
if(secondaryRank) rankTier=4;
var goodToGo = false;
// for (var i=0; i<(length-2); i++) {
// if((arrayName[i][previousTieBreak]==arrayName[i+1][previousTieBreak])&&(arrayName[i][previousTieBreak]==arrayName[i+2][previousTieBreak])&&(playoffArray[arrayName[i][0]][rankTier]==0)) {// We need to find if there is a three way tie
// threeWayTie = true;
// }
// }
if(useSweepRule&&!doingDivision&&teamsCurrentlyTied>2) {
arrayName = sortHeadToHeadSweep(arrayName,length);
sweepRan=true;
}
if(sweepRan&&teamsCurrentlyTied==2) { // <== NEW ADDITION: can run win pct check regardless of which win % rule is used
sweepRan=false;
lengthAdj = 1;
headToHeadSwept=false; // since we will now run win pct rule we want to avoid re-calling a check for head to head sweep
}
if(!sweepRan) {
switch (useWinPctRule) {
case 0 : { if(teamsCurrentlyTied>2) {
stepsText += " . . . . not applicable since more than two teams are tied~";
stepsHTML += " . . . . not applicable since more than two teams are tied |
";
} else {
goodToGo = true;
}
break;
}
case 1 : { goodToGo = true; break; }
case 2 : { goodToGo = true; break; }
case 3 : { goodToGo = true; break; }
}
if(goodToGo) arrayName = sortHeadToHeadWinPct(arrayName,length - lengthAdj,previousTieBreak);
}
// if(!threeWayTie&&!useWinPctRule) {
// for (var i=0; i<(length-1); i++) {
// if(secondaryRank) rankTier=4;
// if((arrayName[i][previousTieBreak]==arrayName[i+1][previousTieBreak])&&(playoffArray[arrayName[i][0]][rankTier]==0)) { // We need to find which teams are tied and if they aren't already seeded (even though they shouldn't be).
// if(headToHeadArray[arrayName[i][0]][arrayName[i+1][0]][1] != 0)
// headToHeadBrokeTie = true;
// if(!reverseTheOrder) {
// if(headToHeadArray[arrayName[i][0]][arrayName[i+1][0]][1] < 0) { // Current team lost to next team
// var dummy = arrayName[i];
// arrayName[i] = arrayName[i+1];
// arrayName[i+1] = dummy;
// }
// } else {
// if(headToHeadArray[arrayName[i][0]][arrayName[i+1][0]][1] > 0) { // Current team lost to next team
// var dummy = arrayName[i];
// arrayName[i] = arrayName[i+1];
// arrayName[i+1] = dummy;
// }
// }
// }
// }
// }
return arrayName;
}
function sortCommonGame(arrayName, numTiedTeams, previousTieBreak) { // SORT COMMON GAMES
if(headToHeadArray.length==0) doHeadToHeadArray();
commonGameBrokeTie = false;
//First need to find common games
var commonGameCheckArray = new Array();
var commonGameArray = new Array();
var commonGameCount = 0;
var gamesPlayed;
var wins;
var losses;
var ties;
for (var i=0; i 0) commonGameCheckArray[i]++;
}
}
for (var i=0; i= commonGameMinGP){
for (var i=0; iCommon Game Opponents (";
for (var x = 0; x < commonGameArray.length; x++) {
newText += habFranchiseData[commonGameArray[x]][1] + ", ";
newTextHTML += habFranchiseData[commonGameArray[x]][1] + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
newText += " Win % in common games (";
newTextHTML += "Win % in Common Games (";
for (var x = 0; x < numTiedTeams; x++) {
newText += habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][17],3) + ", ";
if(decimalFormat(arrayName[x][17],3)==decimalFormat(arrayName[0][17],3)) var advancedSpanClass = "habSeedAdvancedSpan"; else var advancedSpanClass = "habSeedEliminatedSpan";
newTextHTML += ""+ habFranchiseData[arrayName[x][0]][1] + " " + decimalFormat(arrayName[x][17],3) + ", ";
}
newText = newText.substr(0,newText.length-2);
newTextHTML = newTextHTML.substr(0,newTextHTML.length-2);
newText += ")~";
newTextHTML += ")";
currentCommonGameGrouping = newText;
currentCommonGameGroupingHTML = newTextHTML;
if(arrayName[0][17]!=arrayName[1][17]) { // If one winner then set up return for sortTheseTeams
commonGameBrokeTie=true;
} else { // else reset teamsCurrentlyTied eliminating bottom teams
var teamCount = 1;
for (var t=0; t<(arrayName.length-1); t++) {
if(arrayName[t][17]==arrayName[t+1][17])
teamCount++;
else
t=arrayName.length-1;
}
if(teamsCurrentlyTied>teamCount) teamsCurrentlyTied = teamCount;
}
stepsText += currentCommonGameGrouping;
stepsHTML += ""+currentCommonGameGroupingHTML+" |
";
} else {
var newText = " Minimum games not met. Common games include (";
if(commonGameArray.length>0)
for (var x = 0; x < commonGameArray.length; x++) {
newText += habFranchiseData[commonGameArray[x]][1] + ", ";
}
else
newText += "none ";
newText = newText.substr(0,newText.length-2);
newText += ")~";
stepsText += newText;
stepsHTML += ""+newText+" |
";
}
return arrayName;
}
function eliminateBottomTeams(theseTeams,tieBreakerArray,thisTieBreak) {
var teamCount = 1;
for (var t=0; t<(theseTeams.length-1); t++) {
if(theseTeams[t][tieBreakerArray[thisTieBreak]]==theseTeams[t+1][tieBreakerArray[thisTieBreak]])
teamCount++;
else {
t=theseTeams.length-1;
}
}
return teamCount;
}
function divisionCheck(theseTeams,tiedTeams) {
var goodToGo = true;
for (var t=0; t . . . . using division winning % even though teams are not from the same division | ";
}
return goodToGo;
}
function rankThisTeam(sortArray,tieBreakerArray,currentTieBreaker,alreadyRanked,assignSeed) {
if(assignSeed) {
var extraText="";
var extraTextHTML="";
if(currentTieBreaker>0) {
extraText += " - Tie Broken!~";
extraTextHTML += "Tie Broken |
";
}
if(!alreadyRanked) {
playoffArray[sortArray[0][0]][2] = 1; //This marks the playoff array showing that the current team has been seeded.
playoffArray[sortArray[0][0]][3] = tieBreakerArray[currentTieBreaker]; //This marks the playoff array showing which tiebreaker was used for the Division.
playoffArray[sortArray[0][0]][6] = extraText;
playoffArray[sortArray[0][0]][10] = extraTextHTML;
if(sortArray.length==1) {
playoffArray[sortArray[0][0]][8] += stepsTitle + "1. By Default~";
playoffArray[sortArray[0][0]][9] += stepsTitleHTML + "By Default |
";
} else {
playoffArray[sortArray[0][0]][8] += stepsText + extraText;
playoffArray[sortArray[0][0]][9] += stepsHTML + extraTextHTML;
}
} else {
playoffArray[sortArray[0][0]][4] = 1;
playoffArray[sortArray[0][0]][5] = tieBreakerArray[currentTieBreaker];
playoffArray[sortArray[0][0]][7] = extraText;
playoffArray[sortArray[0][0]][11] = extraTextHTML;
if(sortArray.length==1) {
playoffArray[sortArray[0][0]][8] += stepsTitle + "1. By Default~";
playoffArray[sortArray[0][0]][9] += stepsTitleHTML + "By Default |
";
} else {
playoffArray[sortArray[0][0]][8] += stepsText + extraText;
playoffArray[sortArray[0][0]][9] += stepsHTML + extraTextHTML;
}
}
}
return sortArray[0];
}
function updateSortArray (sortArray) {
var tempArray = new Array();
for (var n = 1; n < sortArray.length; n++) {
tempArray[n-1] = sortArray[n];
}
sortArray = tempArray;
return sortArray;
}
function sortTheseTeams(theseTeams,teamsToSort,tieBreakerArray,alreadyRanked,assignSeed) { //This function will sort the assigned "theseTeams" array and set the requested number of teams to the playoffs; If alreadyRanked then just sort the array
var currentTieBreaker = 0;
var sortOrder = 0;
var sortArray = new Array();
var updateArray = new Array();
var tempArray = new Array();
var retestHeadToHead = false;
var retestCommonGame = false;
var retestHthPointsScored = false;
var headToHeadUsed = false;
var commonGameUsed = false;
var hthPointsScoredUsed = false;
var extraText = "";
var extraTextHTML = "";
var headToHeadTieBreaker;
var commonGameTieBreaker;
var hthPointsScoredTieBreaker;
var goodToGo;
for (var t = 0; t < theseTeams.length; t++) {
sortArray[t]=theseTeams[t];
}
for (var t = 0; t < teamsToSort; t++) {
stepsText = stepsTitle;
stepsHTML = stepsTitleHTML;
stepsCount = 0;
teamsCurrentlyTied = sortArray.length;
retestHeadToHead = false;
retestCommonGame = false;
retestHthPointsScored = false;
headToHeadUsed = false;
commonGameUsed = false;
hthPointsScoredUsed = false;
headToHeadBrokeTie = false;
commonGameBrokeTie = false;
hthPointsScoredBrokeTie = false;
headToHeadSweep = false;
headToHeadWinPctTeams -= 1;
hthPointsScoredTeams -= 1;
for (var s = 0; s < tieBreakerArray.length; s++) {
currentTieBreaker = s;
stepsCount++;
var suffix = "th";
switch(stepsCount) {
case 1: suffix = "st"; break;
case 2: suffix = "nd"; break;
case 3: suffix = "rd"; break;
}
stepsText += stepsCount + ". " + tieBreakerTitles[tieBreakerArray[s]] + "~";
stepsHTML += ""+stepsCount+suffix+" Tiebreaker: "+tieBreakerTitles[tieBreakerArray[s]]+" |
";
//if(tieBreakerArray[s]==12) sortOrder=1; else sortOrder=0; //Set reverse order for designated tiebreakers
if(reverseTheOrder) sortOrder=1;
if(sortArray.length>1) { // If sortArray = 1 then we are on the last team and use the 0 tie breaker which is By Default
if(useStartOverRule) {
goodToGo = true;
if(tieBreakerArray[s]==2&&!doingDivision) {
goodToGo = divisionCheck(sortArray,teamsCurrentlyTied);
if(!goodToGo) stepsText += " . . . . tied teams are not from the same division so going to next tiebreaker~";
if(!goodToGo) stepsHTML += " . . . . tied teams are not from the same division so going to next tiebreaker |
";
}
if(tieBreakerArray[s]==8) {
headToHeadUsed = true;
headToHeadTieBreaker = s;
sortArray = sortHeadToHead(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1],alreadyRanked);
}
if(tieBreakerArray[s]==17) {
commonGameUsed = true;
commonGameTieBreaker = s;
sortArray = sortCommonGame(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
}
if(tieBreakerArray[s]==18) {
hthPointsScoredUsed = true;
hthPointsScoredTieBreaker = s;
sortArray = sortHthPointsScored(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
}
if(goodToGo&&tieBreakerArray[s]!=8&&tieBreakerArray[s]!=17&&tieBreakerArray[s]!=18) {
sortArray = habmanBubbleSort(sortArray,teamsCurrentlyTied,tieBreakerArray[s],sortOrder);
}
if(tieBreakerArray[s]==8&&headToHeadBrokeTie) s=tieBreakerArray.length;
if(tieBreakerArray[s]==17&&commonGameBrokeTie) s=tieBreakerArray.length;
if(tieBreakerArray[s]==18&&hthPointsScoredBrokeTie) s=tieBreakerArray.length;
if(goodToGo&&tieBreakerArray[s]!=8&&tieBreakerArray[s]!=17&&tieBreakerArray[s]!=18&&sortArray[0][tieBreakerArray[s]]!=sortArray[1][tieBreakerArray[s]]) s=tieBreakerArray.length; // Escapes sorting routine because team is found
if(goodToGo&&tieBreakerArray[s]!=8&&tieBreakerArray[s]!=17&&tieBreakerArray[s]!=18&&s!=tieBreakerArray.length) {
var temp = teamsCurrentlyTied;
teamsCurrentlyTied = eliminateBottomTeams(sortArray,tieBreakerArray,s);
if(teamsCurrentlyTiedtemp) teamsCurrentlyTied = temp; //Avoid adding more teams to the sort process while walking through the sortArray
}
} else { // Use Default MFL Rule which is !useStartOverRule
goodToGo = true;
if(tieBreakerArray[s]==2&&!doingDivision) {
goodToGo = divisionCheck(sortArray,teamsCurrentlyTied);
if(!goodToGo) stepsText += " . . . . tied teams are not from the same division so going to next tiebreaker~";
if(!goodToGo) stepsHTML += " . . . . tied teams are not from the same division so going to next tiebreaker |
";
}
if(tieBreakerArray[s]==8) { // Set up Head to head array
sortArray = sortHeadToHead(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1],alreadyRanked);
}
if(tieBreakerArray[s]==17) { // Set up common game array
sortArray = sortCommonGame(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
}
if(tieBreakerArray[s]==18) { // Set up Head to head point scored array
sortArray = sortHthPointsScored(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
}
sortArray = habmanBubbleSort(sortArray,teamsCurrentlyTied,tieBreakerArray[s],sortOrder);
if(goodToGo&&sortArray[0][tieBreakerArray[s]]!=sortArray[1][tieBreakerArray[s]]) s=tieBreakerArray.length; // Escapes sorting routine because team is found
if(goodToGo&&s!=tieBreakerArray.length) {
var temp = teamsCurrentlyTied;
teamsCurrentlyTied = eliminateBottomTeams(sortArray,tieBreakerArray,s);
if(teamsCurrentlyTied>temp) teamsCurrentlyTied = temp; //Avoid adding more teams to the sort process while walking through the sortArray
}
}
if(s!=tieBreakerArray.length&&teamsCurrentlyTied>0) {
stepsText = addTeamsStillTied(stepsText,sortArray,teamsCurrentlyTied,true);
stepsHTML = addTeamsStillTied(stepsHTML,sortArray,teamsCurrentlyTied,false);
}
if(headToHeadSwept&&!headToHeadBrokeTie) { retestHeadToHead=true; headToHeadSwept=false; }
if(retestHeadToHead&&useStartOverRule&&s!=tieBreakerArray.length) {
stepsText += " . . . . re-running head to head~";
stepsHTML += " . . . . re-running head to head |
";
sortArray = sortHeadToHead(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1],alreadyRanked);
if(headToHeadBrokeTie) { currentTieBreaker=headToHeadTieBreaker; s=tieBreakerArray.length; }
retestHeadToHead=false;
}
if(retestCommonGame&&useStartOverRule&&s!=tieBreakerArray.length) {
stepsText += " . . . . re-running common games~";
stepsHTML += " . . . . re-running common games |
";
sortArray = sortCommonGame(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
if(commonGameBrokeTie) { currentTieBreaker=commonGameTieBreaker; s=tieBreakerArray.length; }
retestCommonGame=false;
}
if(retestHthPointsScored&&useStartOverRule&&s!=tieBreakerArray.length) {
stepsText += " . . . . re-running head to head points scored~";
stepsHTML += " . . . . re-running head to head points scored |
";
sortArray = sortHthPointsScored(sortArray,teamsCurrentlyTied,tieBreakerArray[s-1]);
if(hthPointsScoredBrokeTie) { currentTieBreaker=hthPointsScoredTieBreaker; s=tieBreakerArray.length; }
retestHthPointsScored=false;
}
if((headToHeadBrokeTie||commonGameBrokeTie||hthPointsScoredBrokeTie)&&!useStartOverRule) { s=tieBreakerArray.length; }
}
}
if(sortArray.length>0) updateArray[t] = rankThisTeam(sortArray,tieBreakerArray,currentTieBreaker,alreadyRanked,assignSeed);
sortArray = updateSortArray(sortArray);
}
return updateArray;
}
function setDivisionWinners(thisConference,assignSeed,teamsToSort,theseDivTieBreakers) {
var divisionWinner = new Array();
var teamCount;
var divisionCount;
var currentTieBreaker;
doingDivision = true;
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'],0,1); // Re-sort Standings Array to get it back to original stats (probably needs to be looked at)
divisionCount=0;
for (var d = 0; d < habDivisionData.length; d++ ) {
var currentDivision = new Array();
teamCount = 0;
for (var f = 0; f < leagueAttributes['Franchises'] ; f++) {
if(playoffArray[f][1] == d && playoffArray[f][2] == 0 && playoffArray[f][4] == 0) {
if(habConferenceData.length>0) {
if(parseInt(habDivisionData[parseInt(habFranchiseData[f][2],10)][2],10)==thisConference) {
currentDivision[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
} else {
currentDivision[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
}
}
//After Division Array is setup we need to rank them to get Division winner at the [0] spot using the Division Tie-Breaker Array
stepsTitle="~Division Tiebreaker: ~";
stepsTitleHTML="DIVISION TIEBREAKER";
stepsCount=0;
if(currentDivision.length > 0){
currentDivisionLeader = sortTheseTeams(currentDivision,teamsToSort,theseDivTieBreakers,false,assignSeed);
for (var x = 0; x < teamsToSort; x++ ) {
divisionWinner[divisionCount] = currentDivisionLeader[x];
divisionCount++;
}
}
}
//After the division winners are found this will sort the division winners using the Wild Card Tie-Breaker Array
doingDivision = false;
if(assignSeed) {
stepsTitle="~Wild Card Tiebreaker used to sort Division Winners: ~";
stepsTitleHTML="
|
Wild Card Tiebreaker(s) used to sort Division Winners |
";
stepsCount=0;
divisionWinner = sortTheseTeams(divisionWinner,divisionWinner.length,wildCardTieBreaker,true,assignSeed);
if(numDivisionWinners!=-1) { //This routine is run to reduce the number of division winners if necessary
var tempArray = new Array();
for (var f = 0; f < divisionWinner.length; f++) {
if(fWILD CARD TIEBREAKER";
if(reverseTheOrder) stepsTitle+= " - seeding has been run in reverse order (i.e. worst to best)~";
if(reverseTheOrder) stepsTitleHTML+= "seeding has been run in reverse order (i.e. worst to best) |
";
stepsCount=0;
if(useDivisionBestRule) {
wildCardArray = setDivisionWinners(thisConference,false,teamsToRank,divisionTieBreaker);
headToHeadWinPctTeams = 0;
hthPointsScoredTeams = 0;
var newText = addTeamsStillTied("",wildCardArray,wildCardArray.length,true);
newText = newText.replace(/ Still tied/,"");
stepsTitle = "~Wild-Card Tiebreaker: ~ . . . applying Division Best rule we get these teams " + newText;
stepsTitleHTML = "Wild Card Tiebreaker |
==> Applying Division Best rule we get these teams " + newText + " | |
";
} else {
teamCount=0;
for (var f = 0; f < leagueAttributes['Franchises'] ; f++) {
if(playoffArray[f][2] == 0) {
if(habConferenceData.length>0) {
if(parseInt(habDivisionData[parseInt(habFranchiseData[f][2],10)][2],10)==thisConference) {
wildCardArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
} else {
wildCardArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
}
}
}
//After finding all the other teams i.e. non-division winners this will sort them to determine the Wild Card Teams using the Wild Card Tie Breaker Array in reverse order
wildCardArray = sortTheseTeams(wildCardArray,teamsToRank,wildCardTieBreaker,false,assignSeed);
return wildCardArray;
}
function setSpecialSeed(thisArray,thisConference) {
var nonPlayoffArray = new Array();
var teamCount;
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,0,1); // Re-sort Standings Array to get it back to original stats (probably needs to be looked at)
stepsTitle="~Special Seed Assignment: ~";
stepsTitleHTML="Special Seed Assignment: |
";
teamCount=0;
for (var f = 0; f < leagueAttributes['Franchises'] ; f++) {
if(playoffArray[f][2] == 0) {
if(habConferenceData.length>0) {
if(parseInt(habDivisionData[parseInt(habFranchiseData[f][2],10)][2],10)==thisConference) {
nonPlayoffArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
} else {
nonPlayoffArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
}
}
//After finding all the other teams i.e. non-playoff teams this will add the special seeds to the bottom of that array
nonPlayoffArray = sortTheseTeams(nonPlayoffArray,1,specialSeed,false,true);
thisArray[thisArray.length] = nonPlayoffArray[0];
return thisArray;
}
function setNonPlayoffTeams(thisConference) {
var nonPlayoffArray = new Array();
var teamCount;
habStandingsData = habmanBubbleSort(habStandingsData,leagueAttributes['Franchises'] ,0,1); // Re-sort Standings Array to get it back to original stats (probably needs to be looked at)
stepsTitle="~Wild-Card Tiebreaker: ~";
stepsTitleHTML="OUT OF PLAYOFFS (Wild Card Tiebreakers) |
";
teamCount=0;
for (var f = 0; f < leagueAttributes['Franchises'] ; f++) {
if(playoffArray[f][2] == 0) {
if(habConferenceData.length>0) {
if(parseInt(habDivisionData[parseInt(habFranchiseData[f][2],10)][2],10)==thisConference) {
nonPlayoffArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
} else {
nonPlayoffArray[teamCount] = [f,habStandingsData[f][7],habStandingsData[f][14],habStandingsData[f][15],habStandingsData[f][8],habStandingsData[f][17],habStandingsData[f][16],habStandingsData[f][22], 0, Math.random(), habStandingsData[f][27], habStandingsData[f][28], habStandingsData[f][9], habStandingsData[f][33], habStandingsData[f][34], habStandingsData[f][39], habStandingsData[f][40], 0, 0, habStandingsData[f][43], habStandingsData[f][45], habStandingsData[f][46], habStandingsData[f][47], habStandingsData[f][48]]; // [id,pct., div_pct., div pf, pf, vp, power, pa_pct., head-to-head, random, non_div_pct., non_div_pf, reverse_pa, conf_pct, conf_pf, non_conf_pct, non_conf_pf, common_games, hth pf, sos_win_pct, sov_win_pct, pp, op, dp];
teamCount++;
}
}
}
//After finding all the other teams i.e. non-playoff teams this will sort them to determine their order using the Wild Card Tie Breaker Array in reverse order
//but first we need to check if there is a set of out of playoff tiebreakers for the non-playoff teams
if(outOfPlayoffsTiebreaker.length>0) {
wildCardTieBreaker = outOfPlayoffsTiebreaker;
if(outOfPlayoffsReverseSort) reverseTheOrder = true;
}
nonPlayoffArray = sortTheseTeams(nonPlayoffArray,nonPlayoffArray.length,wildCardTieBreaker,false,true);
return nonPlayoffArray;
}
function createTable(seedArray,thisConference,thisID,thisCaption,hideTable) {
if(seedArray.length>0&&hideTable==false) {
var tableID = thisID + thisConference + "-" + habmanModCount;
var thisTable = " \n \n";
thisTable += " \n " + thisCaption + "\n"
if(!genericTable||showSteps)
thisTable += " \n Seed | \n Franchise | \n";
else
thisTable += " \n Franchise | ";
for (var i=0; i" + standingsTitles[displayColumns[i]] + "\n";
}
thisTable += " \n";
for (var d = 0; d < seedArray.length; d++) {
var r=d+seedCount;
var thisFranchiseNumber = seedArray[d][0];
var fid = habFranchiseData[thisFranchiseNumber][0];
var link = baseURLDynamic + "/" + year + "/options?L=" + league_id + "&F=" + fid + "&O=01";
if(useDivisionIcon)
var divIcon = "";
else
var divIcon = "";
var myNameHTML = getHabReportsNameIcon(1,fid,false);
var myIconHTML = getHabReportsNameIcon(2,fid,false);
if(myNameHTML!=""&&myIconHTML!="") var myGap = " "; else var myGap = "";
if(d % 2 == 0) var thisRowClass = "oddtablerow"; else var thisRowClass = "eventablerow";
if(!genericTable||showSteps) {
thisTable += " \n " + r + " | \n " + divIcon + " " + myIconHTML + myGap + myNameHTML + " | \n";
} else {
thisTable += " \n " + divIcon + " " + myIconHTML + myGap + myNameHTML + " | \n";
}
for (var i=0; i" + decimalCheck(habStandingsData[thisFranchiseNumber][displayColumns[i]],displayColumns[i]) + "\n";
}
thisTable += " \n";
}
thisTable += " \n";
thisTable += " | \n
\n";
seedCount=r+1;
} else {
var thisTable="";
}
return thisTable;
}
function formatPlayoffTitles() {
titleHeader = titleHeader.replace(/'/g,"´");
titleHeader = titleHeader.replace(/"/g,"”");
titleDivisionWinner = titleDivisionWinner.replace(/'/g,"´");
titleDivisionWinner = titleDivisionWinner.replace(/"/g,"”");
titleDivisionWinnerTwo = titleDivisionWinnerTwo.replace(/'/g,"´");
titleDivisionWinnerTwo = titleDivisionWinnerTwo.replace(/"/g,"”");
titleWildCardWinner = titleWildCardWinner.replace(/'/g,"´");
titleWildCardWinner = titleWildCardWinner.replace(/"/g,"”");
titleNonPlayoffTeam = titleNonPlayoffTeam.replace(/'/g,"´");
titleNonPlayoffTeam = titleNonPlayoffTeam.replace(/"/g,"”");
titlePlayoffTeam = titlePlayoffTeam.replace(/'/g,"´");
titlePlayoffTeam = titlePlayoffTeam.replace(/"/g,"”");
}
function doPlayoffTable(divID,tableType,teamsToRank) {
setTimeout("doPlayoffTable2('"+divID+"','"+tableType+"',"+teamsToRank+","+enableCodeWriter+")",50);
}
function doPlayoffTable2(divID,tableType,teamsToRank,doCode) {
// THERE IS A GLOBAL ARRAY playoffArray THAT WILL CONTAIN ALL SEEDING INFORMATION FROM MY PLAYOFF TABLES
// FORMAT FOR THIS ARRAY ==> playoffArray[#][fid,parseInt(fid's division #), seeded(0 or 1), Which division/WildCard tiebreaker, secondary seeded (0 or 1), Which wildcard tiebreaker, append text to primary, append text to secondary, alert , HTML, extra text to HTML primary , extra text to HTML secondary]
if(countPtsScoredOncePerWeek&&habReportsWeeklyPointsScored['0001']==undefined) doHabReportsWeeklyPointsScored();
var numConferences = habConferenceData.length;
formatPlayoffTitles();
if(tableType == undefined) setupNormal(); else setupOther(tableType,teamsToRank);
for (var f = 0; f < leagueAttributes['Franchises'] ; f++ ) {
playoffArray[f] = [habFranchiseData[f][0],parseInt(habFranchiseData[f][2],10),0,0,0,0,"","","","","",""]; //Assign Team ID, Division ID, Seeded(0,1), Which division/WildCard tiebreaker, Secondary Seed(0,1) Which wild-card tiebreaker, append text to primary, append text to secondary, alert Text , HTML, extra text to HTML primary , extra text to HTML secondary
}
if(conferenceLikeDivision) { // This will treat division like a conference
for (var d = 0; d < habDivisionData.length; d++ ) {
habDivisionData[d][2] = new Array();
habDivisionData[d][2] = d;
habConferenceData[d] = new Array();
habConferenceData[d][0] = d;
habConferenceData[d][1] = new Array();
habConferenceData[d][1] = habDivisionData[d][1];
}
numConferences=habDivisionData.length; //set numConferences length to habDivisionData.length since conference array is null
}
if(numConferences==0) var conferenceLoops=1; else var conferenceLoops=numConferences;
if(!conferenceLikeDivision) var divisionWinners = new Array();
var divisionWinnersTwo = new Array(); // Second seeding criteria for example first division winner may be win %, second division winner may be most points scored
var wildCardWinners = new Array();
var nonPlayoffTeams = new Array();
//- LOOP THROUGH CONFERENCES (IN MOST CASES JUST ONE LOOP)
//- FOR EACH LOOP WE WILL FIRST SET DIVISION WINNERS BY CALLING setDivisionWinners.
//- THIS PROCEDURE WILL RETURN A MULTI-DIMENSIONAL ARRAY OF DIVISION WINNERS (primary key is division winner count ie [0],[1],[2] etc sorted by best division winner using wild card tiebreaker if there is more that one division) AND EACH PRIMARY KEY HAS AN ARRAY WITH [franchise #, + several sorting items ie win %, point scored etc ]
//- THIS PROCEDURE WILL ALSO POPULATE THE GLOBAL playoffArray WITH SEEDING INFORMATION AND MARK FRANCHISES AS BEING SEEDED AS A DIVISION WINNER
for (var c = 0; c < conferenceLoops; c++ ) {
if(!conferenceLikeDivision) divisionWinners[c] = setDivisionWinners(c,true,numDivisionTeams,divisionTieBreaker); // (division #, assignSeed , teams to advance per division, divisionTieBreaker Array)
if(!conferenceLikeDivision&&divisionTieBreakerTwo.length>1) divisionWinnersTwo[c] = setDivisionWinners(c,true,numDivisionTeamsTwo,divisionTieBreakerTwo); // (division #, assignSeed , teams to advance per division, divisionTieBreakerTwo Array)
if(useDivisionBestRule) {
var tempArray = new Array();
wildCardWinners[c] = new Array();
for (var x = 0; x < numWildCardTeams; x++ ) {
tempArray = setWildCardWinners(c,true,1);
wildCardWinners[c][x] = tempArray[0];
}
} else {
wildCardWinners[c] = setWildCardWinners(c,true,numWildCardTeams);
}
if(specialSeed.length>0) wildCardWinners[c] = setSpecialSeed(wildCardWinners[c],c);
if(useDivisionBestRule) {
var tempArray = new Array();
var remainingTeams = 0;
for (var x = 0; x < playoffArray.length; x++ ) {
if(playoffArray[x][2]==0) {
if(numConferences==0) remainingTeams++;
else if(habDivisionData[parseInt(habFranchiseData[parseInt(playoffArray[x][0],10)-1][2],10)][2]==c) remainingTeams++;
}
}
nonPlayoffTeams[c] = new Array();
for (var x = 0; x < remainingTeams; x++ ) {
tempArray = setWildCardWinners(c,true,1);
nonPlayoffTeams[c][x] = tempArray[0];
}
} else {
nonPlayoffTeams[c] = setNonPlayoffTeams(c);
}
}
var tempOutput = "";
if(!hideTitleHeader) tempOutput += titleHeader + '\n';
for (var c = 0; c < conferenceLoops; c++ ) {
var tableID = "outerplayoff_table" + c + "-" + habmanModCount;
tempOutput += "\n";
seedCount = 1;
if(numConferences>0) tempOutput += "" + habConferenceData[c][1] + "\n";
if(habDivisionData.length > 0 && conferenceLikeDivision==false) {
tempOutput += createTable(divisionWinners[c],c,'divisionwinner_table',titleDivisionWinner,hideDivision);
if(divisionTieBreakerTwo.length>1)
tempOutput += createTable(divisionWinnersTwo[c],c,'divisionwinnertwo_table',titleDivisionWinnerTwo,hideDivisionTwo);
tempOutput += createTable(wildCardWinners[c],c,'wildcardwinner_table',titleWildCardWinner,hideWildCard);
} else {
tempOutput += createTable(wildCardWinners[c],c,'playoffwinner_table',titlePlayoffTeam,hidePlayoff);
}
tempOutput += createTable(nonPlayoffTeams[c],c,'nonplayoffteam_table',titleNonPlayoffTeam,hideNonPlayoff) + "
\n";
}
if(doCode) {
tempOutput = '\n\n\n\n' +tempOutput;
document.getElementById(divID).innerHTML = tempOutput;
} else {
document.getElementById(divID).innerHTML = tempOutput;
}
}