/* Advanced-search obtained-team display fix: 2026-07-17 */ var teamid; var first_load = 0; var currentPage = ""; var mobileMenuState = 0; function getDesktopMenuItems() { return document.querySelectorAll("#banner nav .desktop-menu .menu-item"); } function initHeaderOverlay(currentPage) { var descs = [ "Home", "The Capulator - Build Your Own NBA Team", "An itemised explainer for the NBA's CBA", "Current NBA Salary Data", "The Scouting Database - Featuring over 10,000 players from around the world", "Follow @markdeeks on Threads", "Follow MarkDeeksNBA on Twitter", "Follow markdeeks.bsky.social on BlueSky", "Connect on LinkedIn", "E-mail Mark" ]; var items = getDesktopMenuItems(); for (var i = 0; i < items.length; i++) { if (i === currentPage) continue; (function(item, description) { item.addEventListener("mouseover", function() { var overlay = document.getElementById("navSelected"); if (!overlay) return; overlay.innerHTML = description || item.textContent.trim(); overlay.style.visibility = "visible"; }); item.addEventListener("mouseout", function() { var overlay = document.getElementById("navSelected"); if (overlay) overlay.style.visibility = "hidden"; }); }(items[i], descs[i])); } } function selectPage(page) { currentPage = page; var items = getDesktopMenuItems(); if (!items.length) return; if (page == " The Basketball Manifesto" || page == " CBA Glossary") page = 2; else if (page == " NBA Salaries") page = 3; else if (page == " Players" || page == " Player Profile" || page == " Roster" || page == " Advanced Search" || page == " Search" || page == " Player Not Found") page = 4; else if (page == " Capulator" || page == " The Capulator") page = 1; else if (page == "") page = 0; else page = -1; if (page >= 0 && page < items.length) { items[page].style.backgroundColor = "white"; items[page].style.borderBottom = "2px solid white"; $(items[page]).find("a").each(function() { $(this).css("color", "#130e46"); }); } initHeaderOverlay(page); } function elemResize() { var movesHeight = $('#careerMoves').css('height'); var transactionsHeight = $('#transactions').css('height'); movesHeight = parseInt(movesHeight.substring(0,movesHeight.indexOf("px"))); transactionsHeight = parseInt(transactionsHeight.substring(0,transactionsHeight.indexOf("px"))); if(movesHeight > transactionsHeight) { $('#transactions').css('height',movesHeight); } else if(transactionsHeight > movesHeight) { $('#careerMoves').css('height',transactionsHeight); } } $(window).resize(function () { //if(currentPage == " Player Profile") //elemResize(); //if(currentPage == " Capulator") //capulatorGUI.setMoveListMargin(); }); //var root = "127.0.0.1/~Jon/wordpress/"; var root = ""; var sort = []; sort[0] = {column:"last_name",status:""}; sort[1] = {column:"position",status:""}; sort[2] = {column:"height",status:""}; sort[3] = {column:"weight",status:""}; sort[4] = {column:"dob",status:""}; sort[5] = {column:"out_of",status:""}; sort[6] = {column:"country",status:""}; sort[7] = {column:"years",status:""}; sort[8] = {column:"obtained",status:""}; sort[9] = {column:"players.teamid",status:""}; function shamRosterPlayerSlug(firstName, lastName) { var fullName = ((firstName || "") + " " + (lastName || "")).trim(); if (typeof fullName.normalize === "function") fullName = fullName.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); return fullName .replace(/[’‘`']/g, "") .replace(/\./g, "") .replace(/[^A-Za-z0-9]+/g, "-") .replace(/^-+|-+$/g, "") .toLowerCase(); } function shamRosterIsSecondaryPlayer(player) { var currentTeamId = parseInt(teamid, 10) || 0; var body = document.getElementById('bodyDiv'); var primaryTeamId = parseInt(player.teamid, 10) || 0; var secondaryTeamId = parseInt(player.secondaryteamid, 10) || 0; var tertiaryTeamId = parseInt(player.tertiaryteamid, 10) || 0; if (!currentTeamId || !body) return false; if (body.dataset.nbaTeam === '1') return primaryTeamId === currentTeamId && secondaryTeamId > 0; if (body.dataset.gLeague === '1') return secondaryTeamId === currentTeamId || tertiaryTeamId === currentTeamId; return false; } function getList(type,parameter) { if(!type) type = 0; $.ajax({url:"//"+root+"wp-content/themes/ShamSports/getTeamList.php",type:"post",data:{func:1,type:type,parameter:parameter},dataType:"json",success:function(players) { document.getElementById("playerList").innerHTML = ""; for(var i=0; i 1) { var teamCell = row.appendChild(document.createElement("td")); var rawTeamName = (players[i]["teamName"] || "").trim(); var obtainedName = (players[i]["obtained"] || "").trim(); var isGenericSignedStatus = /^(signed\s+in|signed\s+with)\b/i.test(rawTeamName); if(isGenericSignedStatus && obtainedName !== "") { teamCell.appendChild(document.createTextNode(obtainedName)); } else { var teamLink = teamCell.appendChild(document.createElement("a")); teamLink.appendChild(document.createTextNode(rawTeamName)); teamLink.href = "//"+root+"rosterView?tid="+players[i]["teamid"]; } } } }}); } function getQuote(init) { $.ajax({url:"//"+root+"wp-content/themes/ShamSports/getQuote.php",type:"post",data:{},dataType:"json",success:function(quote) { if(init == 1) document.getElementById("quoteInner").innerHTML = quote; else { $("#quoteInner").animate({'top':'-20px'},function() { document.getElementById("quoteInner").innerHTML = quote; $("#quoteInner").css('top','20px'); $("#quoteInner").animate({'top':'0px'}); }); } }}); } function quoteTimer() { getQuote(1); setInterval(getQuote,10000); } function escapeString(stringToEscape) { stringToEscape = stringToEscape.replace("’","'"); stringToEscape = stringToEscape.replace("‘","'"); stringToEscape = stringToEscape.replace("`","'"); stringToEscape = stringToEscape.replace("'","\\'"); return stringToEscape; } function addListeners(tid) { teamid = tid; var searchBox = document.getElementById("playerSearchBox"); if(teamid == -1 && searchBox && !searchBox.dataset.shamSearchBound) { searchBox.dataset.shamSearchBound = "1"; searchBox.addEventListener("keydown",function(event) { if(event.key !== "Enter" || searchBox.value.trim() === "") return; event.preventDefault(); if(document.getElementById("playerList")) { updateList(3); } else { location.href = "//" + root + "players/search?search=" + encodeURIComponent(searchBox.value.trim()); } }); } var sortBindings = [ ["last_name",0],["position",1],["height",2],["weight",3],["dob",4], ["out_of",5],["country",6],["years",7] ]; sortBindings.forEach(function(binding){ var element = document.getElementById(binding[0]); if(element && !element.dataset.shamSortBound) { element.dataset.shamSortBound = "1"; element.addEventListener("click",function(){ setSort(binding[1],teamid); }); } }); if(teamid > 0) { var obtainedHeader = document.getElementById("obtained"); if(obtainedHeader && !obtainedHeader.dataset.shamSortBound) { obtainedHeader.dataset.shamSortBound = "1"; obtainedHeader.addEventListener("click",function(){ setSort(8,teamid); }); } loadSort(1); } else if(teamid <= 0) { var teamHeader = document.getElementById("players.teamid"); if(teamHeader && !teamHeader.dataset.shamSortBound) { teamHeader.dataset.shamSortBound = "1"; teamHeader.addEventListener("click",function(){ setSort(9,teamid); }); } } if(teamid == 0) { var countrySelect = document.getElementById("countrySelect"); if(countrySelect && !countrySelect.dataset.shamCountryBound) { countrySelect.dataset.shamCountryBound = "1"; countrySelect.addEventListener("change",function(){ updateList(2); }); } } } function setSort(column,teamid) { if(teamid > -2) { if(sort[column]["status"] == "") sort[column]["status"] = "asc"; else if(sort[column]["status"] == "asc") sort[column]["status"] = "desc"; else if(sort[column]["status"] == "desc") sort[column]["status"] = ""; var type; if(teamid > 0) type = 1; else if(teamid == 0) type = 2; else if(teamid == -1) type = 3; updateList(type); } var symbol = "" if(sort[column]["status"] == "asc") symbol = "+"; else if(sort[column]["status"] == "desc") symbol = "-"; document.getElementById(sort[column]["column"]).childNodes[1].childNodes[0].nodeValue = " "+symbol; } function getTeamList(type) { $.ajax({url:"//"+root+"wp-content/themes/ShamSports/getTeamList.php",type:"post",dataType:"json",data:{func:2,type:type},success:function(teams) { //var box = document.getElementById("playersTeamBox"); var panel = document.getElementById("teamOptions"); var heading; if(type == 1) heading = "NBA"; else if(type == 2) heading = "G-League"; else if(type == 3) heading = "International"; else if(type == 4) heading = "College/etc" panel.appendChild(document.createElement("div")).appendChild(document.createTextNode(heading)); for(var i=0; i 1) setSort(9,-2); } function updateListx(mode) { /*if(!sort) sort = "";*/ var type; if(mode == 1) type = 1; else if(mode == 2) { document.getElementById("playerSearchBox").value = ""; type = 2; } else if(mode == 3) { if(document.getElementById("playerSearchBox").value == "") type = 2; else type = 1; } var finalParams; var sortString = ""; if(type == 2) { var teamString = getTeamChecks(); var positionString = getPositionChecks(); if(positionString != "") finalParams = "("+teamString+") and ("+positionString+")"; else finalParams = teamString; } else finalParams = "first_name like '%"+document.getElementById("playerSearchBox").value+"%' or last_name like '%"+document.getElementById("playerSearchBox").value+"%'"; for(var i=2; i>=0; i--) { if(sort[i]["status"] != "") { if(sortString == "") sortString = "ORDER BY "; else sortString = sortString + ", "; sortString = sortString + sort[i]["column"] + " " + sort[i]["status"]; } } if(sortString != "") finalParams = finalParams + " " + sortString; if(teamString != "") getList(type,finalParams); else document.getElementById("playerList").innerHTML = ""; } function updateList(mode) { var finalParams = ""; var sortString = ""; for(var i=9; i>=0; i--) { if(sort[i]["status"] != "") { if(sortString == "") sortString = "ORDER BY "; else sortString = sortString + ", "; if(sort[i]["column"] == "height") { sortString = sortString + "feet " + sort[i]["status"] + ", inch " + sort[i]["status"]; } else if(sort[i]["column"] == "dob") { sortString = sortString + "year " + sort[i]["status"] + ", month " + sort[i]["status"] + ", date " + sort[i]["status"]; } else sortString = sortString + sort[i]["column"] + " " + sort[i]["status"]; } } if(sortString == "" && first_load == 0) { setSort(0,teamid); sortString = "last_name asc"; first_load = 1; } setSessionVars(sort,3); if(mode == 1) { finalParams = "teamid = " + teamid + " or secondaryteamid = "+teamid; if(sortString != "") finalParams = finalParams +" "+sortString; } else if(mode == 2) { var teamString = getTeamChecks(); var positionString = getPositionChecks(); getTeamChecks(1); getPositionChecks(1); setSessionVars(document.getElementById("countrySelect").value,6); /*if(teamString == "") teamString = "players.teamid = -1"; if(positionString != "") finalParams = "("+teamString+") and ("+positionString+") "+sortString; else finalParams = teamString + " " + sortString; finalParams = "("+teamString+")"; if(positionString != "") finalParams = finalParams + " and ("+positionString+")"; if(document.getElementById("countrySelect").value != -1) { finalParams = finalParams + " and country like '%" + document.getElementById("countrySelect").value + "%' "; } finalParams = finalParams + " " + sortString;*/ if(teamString != "") finalParams = "("+teamString+")"; if(positionString != "") { if(finalParams != "") finalParams = finalParams + " and "; finalParams = finalParams + "("+positionString+")"; } if(finalParams != "") { finalParams = finalParams + " and country like '%" + document.getElementById("countrySelect").value + "%'"; } else { if(document.getElementById("countrySelect").value != "") finalParams = "country like '%" + document.getElementById("countrySelect").value + "%'"; } if(finalParams == "") finalParams = "players.teamid = -1"; finalParams = finalParams + " " + sortString; } else if(mode == 3) { var searchValue = document.getElementById("playerSearchBox").value.trim(); var escapedString = escapeString(searchValue); finalParams = "first_name like '%"+escapedString+"%' or last_name like '%"+escapedString+"%' or concat_ws(' ',first_name,last_name) like '%"+escapedString+"%'"; finalParams = finalParams + " "+sortString; } getList(mode,finalParams); } function getStats() { var x = document.getElementById("statFrame").contentDocument.body.scrollHeight; $("#statFrame").css("height",x); $("#statFrame").css("visibility","visible"); } function showMobileNav(forceState) { var menu = document.getElementById("mobileNav"); var button = document.querySelector(".mobileNavIcon"); if(!menu) return; var shouldOpen = (typeof forceState === "boolean") ? forceState : !menu.classList.contains("is-open"); menu.classList.toggle("is-open", shouldOpen); document.body.classList.toggle("mobile-menu-open", shouldOpen); mobileMenuState = shouldOpen ? 1 : 0; if(button) { button.setAttribute("aria-expanded", shouldOpen ? "true" : "false"); } } /* Close the mobile menu after choosing a link, when tapping outside it, or when returning to desktop width. */ document.addEventListener("DOMContentLoaded", function() { var menu = document.getElementById("mobileNav"); var button = document.querySelector(".mobileNavIcon"); if(menu) { menu.addEventListener("click", function(event) { if(event.target.closest("a")) showMobileNav(false); }); } document.addEventListener("click", function(event) { if(!menu || !menu.classList.contains("is-open")) return; if(menu.contains(event.target) || (button && button.contains(event.target))) return; showMobileNav(false); }); window.addEventListener("resize", function() { if(window.innerWidth > 800) showMobileNav(false); }); });