var lapso=90000,scoresTimer,c=false,gt,gr,gs,ha,pgaPlayerData={},pgaOpenCard=null;
var pgLbHasR1=false,pgLbHasR2=false,pgLbHasR3=false,pgLbHasR4=false,pgLbHasR5=false,pgLbHasR6=false;

function cargarleader(cref,idt,dbb,hadmin){gt=cref;gr=idt;gs=dbb;ha=hadmin;refresh('/leader/leader.js.content.php?id='+encodeURIComponent(idt)+'&torneo='+encodeURIComponent(cref)+'&dbb='+encodeURIComponent(dbb)+'&hadmin='+encodeURIComponent(hadmin));}
function refresh(URL){
	var frame=document.getElementById('ScoresAqui');
	if(frame){frame.src=URL+(URL.indexOf('?')>=0?'&':'?')+'_refresh='+(new Date().getTime());}
	window.clearTimeout(scoresTimer);scoresTimer=window.setTimeout(function(){refresh(URL);},lapso);
}
function pgaBoardChildKey(node){if(!node||node.nodeType!==1)return'';if(node.classList.contains('pga-entry')){var row=node.querySelector('.pga-row[aria-controls]');return row?'entry:'+row.getAttribute('aria-controls'):'';}if(node.classList.contains('pga-subhead'))return'subhead:'+node.textContent.replace(/\s+/g,' ').trim();return'';}
function pgaUpdateEntry(current,incoming){var currentRow=current.querySelector('.pga-row'),incomingRow=incoming.querySelector('.pga-row');if(!currentRow||!incomingRow)return;var wasOpen=currentRow.getAttribute('aria-expanded')==='true',oldCells=currentRow.children,newCells=incomingRow.children;if(oldCells.length!==newCells.length){currentRow.innerHTML=incomingRow.innerHTML;}else{for(var cell=0;cell<newCells.length;cell++){if(oldCells[cell].className!==newCells[cell].className)oldCells[cell].className=newCells[cell].className;if(oldCells[cell].innerHTML!==newCells[cell].innerHTML)oldCells[cell].innerHTML=newCells[cell].innerHTML;}}currentRow.className=incomingRow.className;currentRow.setAttribute('data-player',incomingRow.getAttribute('data-player')||'');currentRow.setAttribute('data-tournament',incomingRow.getAttribute('data-tournament')||'');currentRow.setAttribute('aria-expanded',wasOpen?'true':'false');}
function pgaWriteInObj(objN,nest,html){var target=document.getElementById(objN);if(!target)return false;var holder=document.createElement('div');holder.innerHTML=html;var incoming=holder.querySelector('.pga-board'),current=target.querySelector('.pga-board');if(!incoming||!current){target.innerHTML=html;return true;}current.setAttribute('style',incoming.getAttribute('style')||'');var currentMeta=current.querySelector(':scope > .pga-board-meta'),incomingMeta=incoming.querySelector(':scope > .pga-board-meta');if(currentMeta&&incomingMeta){var oldMeta=currentMeta.children,newMeta=incomingMeta.children;for(var m=0;m<newMeta.length;m++)if(oldMeta[m]&&oldMeta[m].textContent!==newMeta[m].textContent)oldMeta[m].textContent=newMeta[m].textContent;}var currentHead=current.querySelector(':scope > .pga-head'),incomingHead=incoming.querySelector(':scope > .pga-head');if(currentHead&&incomingHead&&currentHead.innerHTML!==incomingHead.innerHTML)currentHead.innerHTML=incomingHead.innerHTML;var existing={},children=Array.prototype.slice.call(current.children);for(var e=0;e<children.length;e++){var existingKey=pgaBoardChildKey(children[e]);if(existingKey)existing[existingKey]=children[e];}var incomingChildren=Array.prototype.slice.call(incoming.children),anchor=currentHead?currentHead.nextSibling:null,used={};for(var i=0;i<incomingChildren.length;i++){var candidate=incomingChildren[i],key=pgaBoardChildKey(candidate);if(!key)continue;var node=existing[key]||candidate;if(existing[key]&&node.classList.contains('pga-entry'))pgaUpdateEntry(node,candidate);used[key]=true;if(node!==anchor)current.insertBefore(node,anchor);anchor=node.nextSibling;}for(var keyName in existing)if(Object.prototype.hasOwnProperty.call(existing,keyName)&&!used[keyName])existing[keyName].remove();return true;}
function player_scores(idtor,creft,ccodcli,startPos,currPos,Difer,Name,Country,CurrHole,scoreToPar,d1score,d2score,d3score,d4score,d5score,d6score,total,foto,todayscore){
	this.idtor=idtor;this.creft=creft;this.ccodcli=ccodcli;this.startPos=startPos;this.currPos=currPos;this.Difer=Difer;this.Name=Name;this.Country=Country;this.CurrHole=CurrHole;this.scoreToPar=scoreToPar;
	if(arguments.length<=17){this.d1score=d1score;this.d2score=d2score;this.d3score=d3score;this.d4score=d4score;this.d5score='';this.d6score='';this.total=d5score;this.foto=d6score;this.todayscore=total;}
	else{this.d1score=d1score;this.d2score=d2score;this.d3score=d3score;this.d4score=d4score;this.d5score=d5score;this.d6score=d6score;this.total=total;this.foto=foto;this.todayscore=todayscore;}
	this.get_player_row=getPlayerRow;this.get_player_row_my=getPlayerRowMy;
}
function pgClean(v){return v==null?'':String(v);}
function pgText(v){return pgClean(v).replace(/<[^>]*>/g,'').replace(/&nbsp;/g,' ').trim();}
function pgIdentity(v){var raw=pgClean(v),name='',club='';try{var holder=document.createElement('div');holder.innerHTML=raw;var bold=holder.querySelector('b'),italic=holder.querySelector('i');name=bold?bold.textContent.trim():'';club=italic?italic.textContent.trim():'';}catch(error){}if(!name){name=pgText(raw.replace(/<br\s*\/?\s*>/gi,' | ')).split('|')[0].trim();}if(name&&club){var upperName=name.toUpperCase(),upperClub=club.toUpperCase();if(upperName.slice(-upperClub.length)===upperClub)name=name.slice(0,name.length-club.length).trim();}return{name:name,club:club};}
function pgAttr(v){return pgClean(v).replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
function pgNum(v){var n=parseFloat(pgText(v).replace(/−/g,'-'));return isNaN(n)?null:n;}
function pgScore(v){var n=pgNum(v);return '<span class="pga-score '+(n!==null&&n<0?'is-under':'')+'">'+(n===0?'E':pgClean(v))+'</span>';}
function pgRound(v,n){return window['pgLbHasR'+n]?'<div class="pga-cell pga-round" data-label="R'+n+'">'+pgClean(v||'—')+'</div>':'';}
function pgPhotoUrl(v){var p=pgText(v);if(!p||p==='0')return '';if(!/^(https?:|\/)/i.test(p))p='https://admin.plus.golf/plyimg/'+p;return p;}
function pgFlagUrl(v){var country=pgText(v).toUpperCase();return country?'https://admin.plus.golf/flag/'+encodeURIComponent(country)+'.png':'';}
function pgPhoto(v,country){var p=pgPhotoUrl(v),flag=pgFlagUrl(country);if(!p&&!flag)return '';return '<span class="pga-player-photo-wrap">'+(p?'<img class="pga-avatar" src="'+pgAttr(p)+'" alt="">':'<span class="pga-avatar pga-avatar-empty"></span>')+(flag?'<img class="pga-player-photo-flag" src="'+pgAttr(flag)+'" alt="'+pgAttr(pgText(country).toUpperCase())+'">':'')+'</span>';}
function pgIsPlayer(o){return ['tenpos','thecut','nocut','finalcut','OUT'].indexOf(o.idtor)<0||o.idtor==='nocut';}
function pgaIsMyPlayer(player){var saved=typeof Get_Cookie==='function'?Get_Cookie('myLeader'):null;if(!saved)return false;var players=String(saved).split(',');for(var i=0;i<players.length;i++)if(players[i]===String(player))return true;return false;}
function getPlayerRow(instanceSuffix){
	if(this.idtor==='thecut'||this.idtor==='finalcut')return '<div class="pga-cut">'+(this.idtor==='finalcut'?'THE CUT':'PROJECTED CUT '+pgClean(this.startPos))+'</div>';
	if(this.idtor==='OUT'){
		var outDetail='pga-out-'+pgAttr(this.creft)+'-'+pgAttr(this.ccodcli)+(instanceSuffix||''),outIdentity=pgIdentity(this.Name),outType=pgText(this.startPos||this.CurrHole||'DQ');
		return '<div class="pga-entry pga-entry-out"><button type="button" class="pga-row pga-row-out" aria-controls="'+outDetail+'" aria-expanded="false" data-player="'+pgAttr(this.ccodcli)+'" data-tournament="'+pgAttr(this.creft)+'" disabled>'
		+'<div class="pga-cell pga-my" data-label="My">—</div><div class="pga-cell pga-pos" data-label="Pos">'+pgAttr(outType)+'</div>'
		+'<div class="pga-cell pga-player">'+pgPhoto(this.foto,this.Country)+'<span class="pga-player-copy"><strong>'+pgAttr(outIdentity.name)+'</strong>'+(outIdentity.club?'<em>'+pgAttr(outIdentity.club)+'</em>':'')+'<small>'+pgAttr(pgText(this.Country||'').toUpperCase())+'</small></span></div>'
		+'<div class="pga-cell pga-hole" data-label="Hoyo">—</div><div class="pga-cell pga-today" data-label="Hoy">—</div><div class="pga-cell pga-par" data-label="Score">'+pgAttr(outType)+'</div>'
		+pgRound('',1)+pgRound('',2)+pgRound('',3)+pgRound('',4)+pgRound('',5)+pgRound('',6)
		+'<div class="pga-cell pga-total" data-label="Total">—</div><span class="pga-chevron" aria-hidden="true"></span></button></div>';
	}
	if(!pgIsPlayer(this))return '';
	var detail='pga-card-'+pgAttr(this.creft)+'-'+pgAttr(this.ccodcli)+(instanceSuffix||'');
	var identity=pgIdentity(this.Name);
	pgaPlayerData[detail]={ok:true,tournament:'',player:{name:identity.name,club:identity.club,country:pgText(this.Country||''),photo:pgPhotoUrl(this.foto),totalToPar:pgText(this.scoreToPar||'E')},rounds:[],metrics:pgaEmptyMetrics()};
	for(var roundNumber=1;roundNumber<=6;roundNumber++){var roundValue=pgText(this['d'+roundNumber+'score']);if(roundValue&&roundValue.replace(/\s/g,'')!==''){pgaPlayerData[detail].rounds.push({number:roundNumber,label:'R'+roundNumber,score:roundValue,toPar:''});}}
	return '<div class="pga-entry"><button type="button" class="pga-row" aria-expanded="false" aria-controls="'+detail+'" data-player="'+pgAttr(this.ccodcli)+'" data-tournament="'+pgAttr(this.creft)+'">'
	+'<div class="pga-cell pga-my '+(pgaIsMyPlayer(this.ccodcli)?'is-active':'')+'" data-label="My" data-my-player="'+pgAttr(this.ccodcli)+'" title="MY+LEADERBOARD">'+(pgaIsMyPlayer(this.ccodcli)?'&#9733;':'&#9734;')+'</div><div class="pga-cell pga-pos" data-label="Pos">'+pgClean(this.currPos)+'</div>'
	+'<div class="pga-cell pga-player">'+pgPhoto(this.foto,this.Country)+'<span class="pga-player-copy"><strong>'+pgAttr(identity.name)+'</strong>'+(identity.club?'<em>'+pgAttr(identity.club)+'</em>':'')+'<small>'+pgAttr(pgText(this.Country||'').toUpperCase())+'</small></span></div>'
	+'<div class="pga-cell pga-hole" data-label="Hoyo">'+pgClean(this.CurrHole||'—')+'</div>'
	+'<div class="pga-cell pga-today" data-label="Hoy">'+pgScore(this.todayscore)+'</div>'
	+'<div class="pga-cell pga-par" data-label="Score">'+pgScore(this.scoreToPar)+'</div>'
	+pgRound(this.d1score,1)+pgRound(this.d2score,2)+pgRound(this.d3score,3)+pgRound(this.d4score,4)+pgRound(this.d5score,5)+pgRound(this.d6score,6)
	+'<div class="pga-cell pga-total" data-label="Total">'+pgClean(this.total||'—')+'</div><span class="pga-chevron" aria-hidden="true"></span></button>'
	+'<div class="pga-inline-card" id="'+detail+'" hidden></div></div>';
}
function getPlayerRowMy(){return pgIsPlayer(this)&&pgaIsMyPlayer(this.ccodcli)?this.get_player_row('-my'):'';}
function pgaToggleCard(button,jugador,torneo,requestedRound){
	var panel=document.getElementById(button.getAttribute('aria-controls')),open=button.getAttribute('aria-expanded')==='true';
	if(!panel){return;}
	var active=document.querySelector('.pga-row[aria-expanded="true"]');
	if(active&&active!==button){active.setAttribute('aria-expanded','false');var old=document.getElementById(active.getAttribute('aria-controls'));if(old)old.hidden=true;}
	button.setAttribute('aria-expanded',open?'false':'true');panel.hidden=open;if(open){pgaOpenCard=null;return;}var localData=pgaPlayerData[button.getAttribute('aria-controls')],lastRound=localData&&localData.rounds.length?localData.rounds[localData.rounds.length-1].number:1,initialRound=requestedRound||lastRound;pgaOpenCard={player:String(jugador),tournament:String(torneo),round:initialRound};
	if(!panel.getAttribute('data-loaded')){
		panel.setAttribute('data-player',jugador);panel.setAttribute('data-tournament',torneo);
		if(localData){pgaRenderCard(panel,localData,initialRound);}else{panel.innerHTML='<div class="pga-card-loading">Cargando tarjeta...</div>';}
		panel.setAttribute('data-loaded','1');
		var statsRequest=new XMLHttpRequest();statsRequest.open('GET','/leaderboard-next/stats-data.php?jugador='+encodeURIComponent(jugador)+'&tid='+encodeURIComponent(torneo)+'&rax='+new Date().getTime(),true);statsRequest.onreadystatechange=function(){if(statsRequest.readyState!==4)return;if(statsRequest.status>=200&&statsRequest.status<300){try{var statsData=JSON.parse(statsRequest.responseText);if(statsData&&statsData.ok)pgaRenderStats(panel,statsData.metrics||[],statsData.charts||[]);}catch(error){}}};statsRequest.send(null);
	}
	var card=panel.querySelector('.pga-player-card');if(card&&card.getAttribute('data-requested-round')!==String(initialRound)){var roundButtons=panel.querySelectorAll('[data-hole-round]');for(var rb=0;rb<roundButtons.length;rb++)roundButtons[rb].className=roundButtons[rb].getAttribute('data-hole-round')===String(initialRound)?'is-active':'';pgaLoadHoleRound(card,initialRound,jugador,torneo);}
	window.setTimeout(function(){button.scrollIntoView({behavior:'smooth',block:'nearest'});},80);
}
function pgaEmptyMetrics(){return [{label:'PUTTS',rounds:[],total:null,unit:'golpes',max:45},{label:'FIR',rounds:[],total:null,unit:'%',max:100},{label:'GIR',rounds:[],total:null,unit:'%',max:100},{label:'SAND',rounds:[],total:null,unit:'%',max:100},{label:'UP & DOWN',rounds:[],total:null,unit:'%',max:100},{label:'DRIVING DISTANCE',rounds:[],total:null,unit:'yd',max:350}];}
function pgaCardError(panel){panel.innerHTML='<div class="pga-card-error">No pudimos abrir la tarjeta. Intenta nuevamente.</div>';panel.removeAttribute('data-loaded');}
function pgaStatsMarkup(metrics,roundCount){
	roundCount=Math.max(1,Math.min(6,roundCount||0));var header='<div class="pga-stats-row is-header"><strong>Estadistica</strong>',rows='',charts='',hasData=false;
	for(var h=1;h<=roundCount;h++)header+='<span>R'+h+'</span>';header+='<b>Final</b></div>';
	for(var m=0;m<metrics.length;m++){
		var metric=metrics[m],values=metric.rounds||[],row='<div class="pga-stats-row"><strong>'+pgAttr(metric.label)+'</strong>',chartBars='';
		for(var r=0;r<roundCount;r++){var value=values[r],available=value!==null&&value!==''&&typeof value!=='undefined'&&!isNaN(parseFloat(value));if(available)hasData=true;row+='<span class="'+(available?'':'is-empty')+'">'+(available?pgAttr(value)+(metric.unit==='%'?'%':''):'—')+'</span>';var numeric=available?parseFloat(value):0,height=Math.max(0,Math.min(100,(numeric/(metric.max||100))*100));chartBars+='<div><i style="height:'+height.toFixed(1)+'%"></i><strong>'+(available?pgAttr(value):'—')+'</strong><span>R'+(r+1)+'</span></div>';}
		var totalAvailable=metric.total!==null&&metric.total!==''&&typeof metric.total!=='undefined'&&!isNaN(parseFloat(metric.total));if(totalAvailable)hasData=true;row+='<b class="'+(totalAvailable?'':'is-empty')+'">'+(totalAvailable?pgAttr(metric.total)+(metric.unit==='%'?'%':''):'—')+'</b></div>';rows+=row;
		var totalNumeric=totalAvailable?parseFloat(metric.total):0,totalHeight=Math.max(0,Math.min(100,(totalNumeric/(metric.max||100))*100));chartBars+='<div class="is-total"><i style="height:'+totalHeight.toFixed(1)+'%"></i><strong>'+(totalAvailable?pgAttr(metric.total):'—')+'</strong><span>Final</span></div>';
		charts+='<div class="pga-stat-chart"><header><strong>'+pgAttr(metric.label)+'</strong><span>'+pgAttr(metric.unit||'')+'</span></header><div class="pga-stat-bars" style="--stat-bars:'+(roundCount+1)+'">'+chartBars+'</div></div>';
	}
	return{hasData:hasData,data:'<div class="pga-stats-table" style="--stat-rounds:'+roundCount+'">'+header+rows+'</div>',charts:hasData?charts:'<p class="pga-chart-empty">Las series por ronda apareceran cuando existan estadisticas cargadas.</p>'};
}
function pgaChartDescription(label){var preview=document.querySelector('.pga-preview[data-lang]'),lang=preview&&preview.getAttribute('data-lang')==='en'?'en':'sp',key=pgText(label).toLowerCase(),texts={'resultados':{sp:'Cantidad de Scores por tipo de Score',en:'Amount of scores by type'},'avg por par':{sp:'Promedio de Scoring por Par',en:'Scoring Average by Par'},'avg par':{sp:'Porcentaje de Pares por Par de Hoyo',en:'Par Percentage by hole Par'},'avg bogey':{sp:'Porcentaje de Bogeys por Par de Hoyo',en:'Bogey Percentage by hole Par'}};return texts[key]?texts[key][lang]:'';}
function pgaFeedChartsMarkup(charts){var html='';for(var c=0;c<charts.length;c++){var chart=charts[c],items=chart.items||[],isPercent=chart.unit==='%'&&items.length===1,description=pgaChartDescription(chart.label);if(isPercent){var percent=Math.max(0,Math.min(100,parseFloat(items[0].value)||0));html+='<div class="pga-stat-chart is-percentage"><header><strong>'+pgAttr(chart.label)+'</strong><span>%</span></header><div class="pga-percent-ring" style="--pga-percent:'+percent.toFixed(2)+'"><div><strong>'+pgAttr(items[0].value)+'%</strong><span>'+pgAttr(items[0].label)+'</span></div></div></div>';continue;}var maximum=0;for(var m=0;m<items.length;m++)maximum=Math.max(maximum,Math.abs(parseFloat(items[m].value)||0));var bars='';for(var i=0;i<items.length;i++){var item=items[i],numeric=parseFloat(item.value)||0,height=maximum?Math.max(3,Math.abs(numeric)/maximum*100):0;bars+='<div'+(items.length===1?' class="is-total"':'')+'><i style="height:'+height.toFixed(1)+'%"></i><strong>'+pgAttr(item.value)+(chart.unit==='%'?'%':'')+'</strong><span>'+pgAttr(item.label)+'</span></div>';}html+='<div class="pga-stat-chart"><header><strong>'+pgAttr(chart.label)+'</strong><span>'+pgAttr(chart.unit||'')+'</span></header><div class="pga-stat-bars" style="--stat-bars:'+Math.max(1,items.length)+'">'+bars+'</div>'+(description?'<p class="pga-chart-description">'+pgAttr(description)+'</p>':'')+'</div>';}return html||'<p class="pga-chart-empty">Los graficos apareceran cuando el feed contenga estadisticas.</p>';}
function pgaRenderStats(panel,metrics,charts){var roundCount=panel.querySelectorAll('[data-hole-round]').length||1,markup=pgaStatsMarkup(metrics,roundCount),dataPanel=panel.querySelector('[data-performance]'),chartPanel=panel.querySelector('[data-card-panel="charts"]');if(dataPanel){dataPanel.innerHTML=markup.data;dataPanel.hidden=!markup.hasData;}if(chartPanel)chartPanel.innerHTML=charts&&charts.length?pgaFeedChartsMarkup(charts):markup.charts;}
function pgaRenderCard(panel,data,initialRound){
	if(!data||!data.ok){pgaCardError(panel);return;}
	var roundButtons='';
	for(var r=0;r<data.rounds.length;r++)roundButtons+='<button type="button" class="'+(data.rounds[r].number===initialRound?'is-active':'')+'" data-hole-round="'+data.rounds[r].number+'">'+pgAttr(data.rounds[r].label)+'</button>';
	var stats=pgaStatsMarkup(data.metrics||pgaEmptyMetrics(),data.rounds.length);
	var cardPhoto=data.player.photo?'<img class="pga-card-player-photo" src="'+pgAttr(data.player.photo)+'" alt="'+pgAttr(data.player.name)+'">':'';
	var cardName=pgText(data.player.name).replace(/\s*\([^)]*\)\s*$/,'').trim();
	var cardCountry=pgText(data.player.country||'').toUpperCase(),cardFlag=pgFlagUrl(cardCountry);
	panel.innerHTML='<article class="pga-player-card" data-player-name="'+pgAttr(data.player.name)+'"><section class="pga-hole-section"><div class="pga-card-top"><div class="pga-card-identity">'+cardPhoto+'<div><strong>'+pgAttr(cardName)+'</strong>'+(cardCountry?'<span class="pga-card-country">'+(cardFlag?'<img src="'+pgAttr(cardFlag)+'" alt="">':'')+'<small>'+pgAttr(cardCountry)+'</small></span>':'')+'</div></div><div class="pga-card-controls"><div class="pga-card-primary"><div class="pga-hole-rounds">'+roundButtons+'</div><strong class="pga-card-course" data-card-course></strong></div><div class="pga-playing-handicap"><span>Handicap de juego</span><strong data-card-ph-value>—</strong></div></div></div><div class="pga-hole-detail"><div class="pga-card-loading">Cargando hoyos...</div></div></section><div class="pga-card-tabs" role="tablist"><button type="button" class="is-active" data-card-tab="data">STATS</button><button type="button" data-card-tab="charts">GRAFICOS</button></div><section class="pga-card-panel pga-stats-matrix" data-card-panel="data"><div class="pga-classic-stats"><div class="pga-card-loading">Cargando estadisticas...</div></div><div class="pga-performance" data-performance'+(stats.hasData?'':' hidden')+'>'+stats.data+'</div></section><section class="pga-card-panel pga-card-charts" data-card-panel="charts" hidden>'+stats.charts+'</section></article>';
	var visualDetail=panel.querySelector('.pga-hole-detail'),visualPh=panel.querySelector('[data-card-ph-value]');if(window.MutationObserver&&visualDetail&&visualPh){var phObserver=new MutationObserver(function(){var loadedPh=visualDetail.querySelector('.pga-round-title span b');if(loadedPh)visualPh.textContent=loadedPh.textContent;});phObserver.observe(visualDetail,{childList:true,subtree:true});}
	if(data.rounds.length)pgaLoadHoleRound(panel.querySelector('.pga-player-card'),initialRound,panel.getAttribute('data-player'),panel.getAttribute('data-tournament'));
	pgaLoadClassicStats(panel,panel.getAttribute('data-player'),panel.getAttribute('data-tournament'));
}
function pgaClassicRow(node){var cells=node?node.children:[],out='<div class="pga-classic-row">';for(var i=0;i<cells.length;i++)out+=(i===0?'<strong>':'<span>')+pgAttr(cells[i].textContent.replace(/\s+/g,' ').trim()||'—')+(i===0?'</strong>':'</span>');return out+'</div>';}
function pgaLoadClassicStats(panel,player,tournament){var target=panel.querySelector('.pga-classic-stats');if(!target)return;var request=new XMLHttpRequest();request.open('GET','/plusgolf/scorecardround.php?jugador='+encodeURIComponent(player)+'&tid='+encodeURIComponent(tournament)+'&rd=stats&rax='+new Date().getTime(),true);request.onreadystatechange=function(){if(request.readyState!==4)return;if(request.status>=200&&request.status<300){var doc=new DOMParser().parseFromString(request.responseText,'text/html'),head=doc.querySelector('.scorecard-stats-legacy-head'),table=doc.querySelector('.scorecard-stats-legacy-table'),gross=doc.querySelector('#grossdiv'),net=doc.querySelector('#netdiv');if(!table){target.innerHTML='';return;}var direct=[],children=table.children;for(var d=0;d<children.length;d++)if(/(^|\s)stats-row(\s|$)/.test(children[d].className||''))direct.push(children[d]);var common='';for(var i=0;i<direct.length;i++)common+=pgaClassicRow(direct[i]);var classicValues=direct.length?Math.max(1,direct[0].children.length-1):4,grossRows=gross?gross.querySelectorAll('.stats-row'):[],netRows=net?net.querySelectorAll('.stats-row'):[],grossHtml='',netHtml='';for(var g=0;g<grossRows.length;g++)grossHtml+=pgaClassicRow(grossRows[g]);for(var n=0;n<netRows.length;n++)netHtml+=pgaClassicRow(netRows[n]);target.setAttribute('data-stats-mode','gross');target.innerHTML='<div class="pga-classic-head">'+(head?head.innerHTML:'<p>Mas datos</p>')+'</div><button type="button" class="pga-stats-swap" data-stats-mode="gross">Stats Gross/Net</button><div class="pga-classic-table" style="--classic-values:'+classicValues+'">'+common+'<div data-classic-mode="gross">'+grossHtml+'</div><div data-classic-mode="net" hidden>'+netHtml+'</div></div>';}else target.innerHTML='';};request.onerror=function(){target.innerHTML='';};request.send(null);}
function pgaLoadHoleRound(card,round,player,tournament){
	if(pgaOpenCard&&String(pgaOpenCard.player)===String(player))pgaOpenCard.round=parseInt(round,10)||1;
	var detail=card.querySelector('.pga-hole-detail'),pendingCourse=card.querySelector('[data-card-course]'),pendingPh=card.querySelector('[data-card-ph-value]');card.setAttribute('data-requested-round',String(round));if(pendingCourse)pendingCourse.textContent='';if(pendingPh)pendingPh.textContent='—';detail.innerHTML='<div class="pga-card-loading">Cargando hoyos...</div>';
	var request=new XMLHttpRequest();request.open('GET','/plusgolf/scorecardround.php?jugador='+encodeURIComponent(player)+'&tid='+encodeURIComponent(tournament)+'&rd='+encodeURIComponent(round)+'&rax='+new Date().getTime(),true);
	request.onreadystatechange=function(){if(request.readyState!==4||card.getAttribute('data-requested-round')!==String(round))return;if(request.status>=200&&request.status<300){var parser=new DOMParser(),doc=parser.parseFromString(request.responseText,'text/html'),groups=[doc.querySelector('#cida'),doc.querySelector('#cvuelta')],course=doc.querySelector('.scorecard-round-course h4'),ph=doc.querySelector('.scorecard-round-ph strong'),courseTarget=card.querySelector('[data-card-course]'),phTarget=card.querySelector('[data-card-ph-value]'),modes=['stroke-gross','stroke-net','stable-gross','stable-net'],modeHtml='';if(courseTarget)courseTarget.textContent=course?course.textContent.trim():'';if(phTarget)phTarget.textContent=ph?ph.textContent.trim():'0';for(var modeIndex=0;modeIndex<modes.length;modeIndex++){var halves='';for(var g=0;g<groups.length;g++)if(groups[g])halves+=pgaHoleGroup(groups[g],g===0?'FRONT':'BACK',modes[modeIndex]);modeHtml+='<div class="pga-score-mode" data-score-mode="'+modes[modeIndex]+'" '+(modeIndex===0?'':'hidden')+'>'+halves+'</div>';}detail.innerHTML='<div class="pga-score-switch"><button type="button" class="is-active" data-score-kind="stroke" data-variant="gross">Stroke Gross/Net</button><button type="button" data-score-kind="stable" data-variant="gross">Stableford Gross/Net</button></div><div class="pga-score-legend"><span><i class="gross"></i>Gross</span><span><i class="net"></i>Net</span><span><i class="st-gross"></i>ST Gross</span><span><i class="st-net"></i>ST Net</span></div>'+modeHtml;}else{detail.innerHTML='<p class="pga-hole-empty">No pudimos cargar el hoyo por hoyo.</p>';}};request.onerror=function(){if(card.getAttribute('data-requested-round')===String(round))detail.innerHTML='<p class="pga-hole-empty">No pudimos cargar el hoyo por hoyo.</p>';};request.send(null);
}
function pgaNodeTexts(root,selector){var nodes=root.querySelectorAll(selector),values=[];for(var i=0;i<nodes.length;i++)values.push(nodes[i].textContent.replace(/\s+/g,' ').trim());return values;}
function pgaScoreRow(label,values,total,rowClass,marks){var out='<div class="pga-scorecard-row '+(rowClass||'')+'"><strong>'+label+'</strong>';for(var i=0;i<9;i++){var mark=marks&&marks[i]?marks[i]:'';out+='<span class="'+mark+'">'+pgAttr(values[i]||'—')+'</span>';}return out+'<b>'+pgAttr(total||'—')+'</b></div>';}
function pgaScoreMarks(scores,pars,mode){var marks=[];for(var i=0;i<scores.length;i++){var score=parseInt(scores[i],10),par=parseInt(pars[i],10),value=score-par;if(mode.indexOf('stroke-')!==0||isNaN(score)||isNaN(par)){marks[i]='';continue;}marks[i]=value<=-2?'is-eagle':(value===-1?'is-birdie':(value===1?'is-bogey':(value>=2?'is-double-bogey':'')));}return marks;}
function pgaHoleGroup(root,label,mode){
	var holes=pgaNodeTexts(root,'.cardholes .cardholetit'),pars=pgaNodeTexts(root,'.cardpar .cardholetit'),hcps=pgaNodeTexts(root,'.cardhcp .cardholetit');
	var config={'stroke-gross':['[id$="gross"]','.cardgross','GROSS'],'stroke-net':['[id$="net"]','.cardnet','NET'],'stable-gross':['[id$="sfgross"]','.cardsfgross','ST GROSS'],'stable-net':['[id$="sfnet"]','.cardsfnet','ST NET']}[mode];
	var scoreRoot=root.querySelector(config[0]),scores=scoreRoot?pgaNodeTexts(scoreRoot,config[1]+':first-child .cardhole'):[],relative=scoreRoot?pgaNodeTexts(scoreRoot,config[1]+':nth-child(2) .cardhole'):[],totalNode=scoreRoot&&scoreRoot.querySelector(config[1]+':first-child .cardtot');
	var parTotal=root.querySelector('.cardpar .cardtottit'),headerTotal=root.querySelector('.cardholes .cardtottit');
	var out='<div class="pga-nine"><div class="pga-scorecard-table">';
	out+=pgaScoreRow('Holes',holes,headerTotal?headerTotal.textContent.trim():label,'is-header');
	out+=pgaScoreRow('Par',pars,parTotal?parTotal.textContent.trim():'','is-par-row');
	out+=pgaScoreRow('Hcp',hcps,'','is-hcp-row');
	out+=pgaScoreRow(config[2],scores,totalNode?totalNode.textContent.trim():'','is-score-row '+mode,pgaScoreMarks(scores,pars,mode));
	out+=pgaScoreRow('',relative,'','is-relative-row');
	return out+'</div></div>';
}
document.addEventListener('click',function(event){
	var target=event.target;
	if(target&&target.getAttribute&&target.getAttribute('data-my-player')){event.preventDefault();event.stopPropagation();var myPlayer=target.getAttribute('data-my-player');target.className=target.className.indexOf('is-active')>=0?target.className.replace(/\s*is-active/g,''):target.className+' is-active';target.innerHTML=target.className.indexOf('is-active')>=0?'&#9733;':'&#9734;';if(typeof myLeader==='function')myLeader(myPlayer);return;}
	if(target&&target.getAttribute&&target.getAttribute('data-stats-mode')){var current=target.getAttribute('data-stats-mode'),next=current==='gross'?'net':'gross',container=target.parentNode,groups=container.querySelectorAll('[data-classic-mode]');target.setAttribute('data-stats-mode',next);target.textContent='Stats '+(next==='gross'?'Gross':'Net');container.setAttribute('data-stats-mode',next);for(var cg=0;cg<groups.length;cg++)groups[cg].hidden=groups[cg].getAttribute('data-classic-mode')!==next;return;}
	if(target&&target.getAttribute&&target.getAttribute('data-score-kind')){var controls=target.parentNode,detail=controls.parentNode,kind=target.getAttribute('data-score-kind'),wasActive=/(^|\s)is-active(\s|$)/.test(target.className),variant=target.getAttribute('data-variant')||'gross',buttons=controls.querySelectorAll('button'),modes=detail.querySelectorAll('[data-score-mode]');if(wasActive)variant=variant==='gross'?'net':'gross';target.setAttribute('data-variant',variant);target.textContent=(kind==='stroke'?'Stroke':'Stableford')+' '+(variant==='gross'?'Gross':'Net');for(var sb=0;sb<buttons.length;sb++)buttons[sb].className=buttons[sb]===target?'is-active':'';for(var sm=0;sm<modes.length;sm++)modes[sm].hidden=modes[sm].getAttribute('data-score-mode')!==kind+'-'+variant;return;}
	if(target&&target.getAttribute&&target.getAttribute('data-hole-round')){var card=target.closest?target.closest('.pga-player-card'):null,buttons=target.parentNode.querySelectorAll('button');for(var rb=0;rb<buttons.length;rb++)buttons[rb].className=buttons[rb]===target?'is-active':'';if(!card)return;var holder=card.parentNode;pgaLoadHoleRound(card,target.getAttribute('data-hole-round'),holder.getAttribute('data-player'),holder.getAttribute('data-tournament'));return;}
	if(target&&target.getAttribute&&target.getAttribute('data-card-tab')){var card=target.parentNode.parentNode,tab=target.getAttribute('data-card-tab'),buttons=target.parentNode.querySelectorAll('button'),panels=card.querySelectorAll('[data-card-panel]');for(var b=0;b<buttons.length;b++)buttons[b].className=buttons[b]===target?'is-active':'';for(var p=0;p<panels.length;p++)panels[p].hidden=panels[p].getAttribute('data-card-panel')!==tab;return;}
	while(target&&target!==document&&!/(^|\s)pga-row(\s|$)/.test(target.className||'')){target=target.parentNode;}
	if(!target||target===document){return;}
	event.preventDefault();
	pgaToggleCard(target,target.getAttribute('data-player')||'',target.getAttribute('data-tournament')||'');
});
function concat_scores(scoringtime,scores,status){
	var rounds=[false,false,false,false,false,false];
	for(var i=0;i<scores.length;i++)if(scores[i])for(var r=1;r<=6;r++){var v=pgNum(scores[i]['d'+r+'score']);if(v!==null&&v>0)rounds[r-1]=true;}
	for(var x=1;x<=6;x++)window['pgLbHasR'+x]=rounds[x-1];
	var roundCount=rounds.filter(function(v){return v;}).length;
	var out='<section class="pga-board'+(roundCount===0?' pga-no-rounds':'')+'" style="--rounds:'+roundCount+'"><div class="pga-board-meta"><span>Actualizado '+pgClean(scoringtime||'ahora')+'</span><span>Seleccioná un jugador para ver su tarjeta</span></div>';
	out+='<div class="pga-head"><div>My</div><div>Pos</div><div>Jugador</div><div>Hoyo</div><div>Hoy</div><div>Score</div>';
	for(var h=1;h<=6;h++)if(rounds[h-1])out+='<div>R'+h+'</div>';out+='<div>Total</div><div></div></div>';
	var hasMy=false;for(var my=0;my<scores.length;my++)if(scores[my]&&pgIsPlayer(scores[my])&&pgaIsMyPlayer(scores[my].ccodcli)){hasMy=true;break;}
	if(hasMy){out+='<div class="pga-subhead">MY+LEADERBOARD</div>';for(var mine=0;mine<scores.length;mine++)if(scores[mine])out+=scores[mine].get_player_row_my();out+='<div class="pga-subhead">FULL+LEADERBOARD</div>';}
	var playerRows='';for(var j=0;j<scores.length;j++)if(scores[j])playerRows+=scores[j].get_player_row();
	out+=playerRows||'<div class="pga-empty-board">No hay jugadores publicados en esta categoría.</div>';
	window.setTimeout(pgaRestoreOpenCard,0);
	return out+'</section>';
}
function pgaRestoreOpenCard(){if(!pgaOpenCard)return;var rows=document.querySelectorAll('.pga-row[data-player]'),match=null;for(var i=0;i<rows.length;i++)if(rows[i].getAttribute('data-player')===pgaOpenCard.player&&rows[i].getAttribute('data-tournament')===pgaOpenCard.tournament){match=rows[i];break;}if(!match)return;var savedRound=pgaOpenCard.round||1,panel=document.getElementById(match.getAttribute('aria-controls'));if(match.getAttribute('aria-expanded')==='true'&&panel&&!panel.hidden){var card=panel.querySelector('.pga-player-card');if(card)pgaLoadHoleRound(card,savedRound,pgaOpenCard.player,pgaOpenCard.tournament);return;}pgaToggleCard(match,pgaOpenCard.player,pgaOpenCard.tournament,savedRound);}
