",r.setAttribute("aria-label","Next page"),r.addEventListener("click",()=>{p=Math.min(t,p+1),L(),N()}),u.appendChild(r)}}function X(e){let t=["Panels","Podcasts","Photo Ops","Autographs"].map(d);return e.sort((a,n)=>{let i=w(a?.start_time)?new Date(a.start_time):null,r=w(n?.start_time)?new Date(n.start_time):null;if(i&&r&&i.getTime()!==r.getTime())return i-r;if(i&&!r)return-1;if(!i&&r)return 1;function o(y){let h=(y?.schedule_categories||[]).map(v=>d(v?.name)).map(v=>t.indexOf(v)).filter(v=>v!==-1);return h.length?Math.min(...h):t.length}let l=o(a),m=o(n);if(l!==m)return l-m;let g=a?.title?.toLowerCase()||"",E=n?.title?.toLowerCase()||"";return g.localeCompare(E)})}function ee(){let e=P.filter(t=>{if(f.date!=="all"&&O(t)!==f.date)return!1;let a=(t?.schedule_categories||[]).map(n=>d(n?.name));return!(f.affinity!=="all"&&!a.includes(f.affinity)||f.appearance!=="all"&&!a.includes(f.appearance)||f.venue!=="all"&&I(t)!==f.venue)});return X(e)}function L(){if(!$)return;let e=ee(),t=Math.max(1,Math.ceil(e.length/M));if(p>t&&(p=t),e.length===0){c.classList.remove("skeleton-active"),c.innerHTML='No results found. Try adjusting your filter settings.
',u.innerHTML="",c.style.minHeight="",c.style.paddingBottom="";return}let a=(p-1)*M,n=e.slice(a,a+M);c.classList.remove("skeleton-active"),K(n),Q(e.length)}function z(e,t){let a=new Map;return e.forEach(n=>{let i=d(n);i&&!a.has(i)&&a.set(i,n)}),t.map(d).filter(n=>a.has(n)).map(n=>a.get(n))}function te(){let e=new Set,t=new Set;P.forEach(o=>{let l=F(o?.venue_location?.name?.trim()||"");l&&t.add(l),(o?.schedule_categories||[]).forEach(m=>{let g=m?.name?.trim();g&&e.add(g)})});let a=["College Football","Men's Soccer","MLB","NBA","NFL","NHL","WNBA","WWE"],n=["Panels","Podcasts","Live Programming","Free Photo Ops","Paid Photo Op","Paid Autograph","Paid Photo Ops","Paid Autographs","In Her Spotlight","Topps Stage","Topps","Fanatics Games"],i=z(e,a),r=z(e,n);if(H(S,"category-checkbox-filter","category-radio",i,"category-radio"),H(A,"global-category-filter","schedule-category-radio",r,"schedule-category-radio"),T){let o=["Photo Op Zone","Autograph Zone","Home Team Village Meet & Greet"],l=["River Pavilion"],m=new Map;t.forEach(s=>{m.set(d(s),s)});let g=new Set(o.map(d)),E=new Set(l.map(d)),y=o.map(d).filter(s=>m.has(s)).map(s=>m.get(s));Array.from(t).filter(s=>{let h=d(s);return!g.has(h)&&!E.has(h)}).sort((s,h)=>s.localeCompare(h)).forEach(s=>y.push(s)),l.map(d).filter(s=>m.has(s)).forEach(s=>y.push(m.get(s))),H(T,"venue-filter","venue-radio",y,"venue-radio")}}function k(e,t,a){e&&e.addEventListener("change",n=>{let i=n.target.closest(t);!i||!e.contains(i)||(f[a]=d(i.value)||"all",p=1,J(e,t),L())})}async function ae(){Z(),c.classList.add("skeleton-active"),V(!0);let e=new AbortController,t=window.setTimeout(()=>e.abort(),2e4);try{let a=await fetch(R,{cache:"no-store",signal:e.signal});if(!a.ok)throw new Error(`Schedule API returned ${a.status} ${a.statusText}`);let n=await a.json();P=Array.isArray(n?.schedules)?n.schedules:[],te(),$=!0,V(!1),L()}catch(a){console.error("Schedule fetch error:",a),$=!1,c.classList.remove("skeleton-active"),c.innerHTML='Schedule is currently unavailable. Please try again later.
',u.innerHTML=""}finally{window.clearTimeout(t)}}x(S,"Filter by Team Affinity"),x(A,"Filter by Appearance"),x(T,"Filter by Venue"),Y(),k(_,".date-radio","date"),k(S,".category-radio","affinity"),k(A,".schedule-category-radio","appearance"),k(T,".venue-radio","venue"),ae()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",B,{once:!0}):B()})();})();