let jsonData=[],filteredData=[];const SHEET_ID="1EAOsiZkw5oWWUpAyXz-04aQWdSMR9f_c3Jup69LeiuA",API_KEY="AIzaSyDsqxZhhN2llBnbX13DldQ0ChLD1VZLs5s",SHEET_NAMES=["Translated"],COLLEGES_EN=["College of Medicine","College of Engineering","College of Management","College of Computing Intelligence"],COLLEGE_ALL_EN="Available to all four Colleges",PROGRAMS_EN=["Undergraduate students","Master's students","PhD students"];async function fetchSheetData(e){let t=`https://sheets.googleapis.com/v4/spreadsheets/1EAOsiZkw5oWWUpAyXz-04aQWdSMR9f_c3Jup69LeiuA/values/${e}?key=AIzaSyDsqxZhhN2llBnbX13DldQ0ChLD1VZLs5s`;try{let l=await fetch(t),a=await l.json();if(!a.values||a.values.length<=1)return console.warn(`Worksheet ${e} has no data. Skipping.`),[];return a.values.slice(1).map((t,l)=>{let a=extractPlainText(t[6]),n=extractPlainText(t[7]),r=extractPlainText(t[2]),s=extractPlainText(t[8]);return{id:`${e}-${l}`,rowIndex:l,nation:extractPlainText(t[1]),91èÏÈÉúName:formatCell(t[2],t[3]),91èÏÈÉúNameText:r,website:t[3]||"",eligibleColleges:a,collegeTags:parseCollegesEN(a),eligibleAcademicLevel:n,programTags:parseProgramsEN(n),department:formatCell(t[8]),departmentText:s,moreInfo:"",sheetName:e}})}catch(n){return console.error("Failed to fetch data from Google Sheets:",n),[]}}async function fetchAllSheets(){let e=document.getElementById("loading-message");e&&(e.style.display="block"),jsonData=[],filteredData=[];try{for(let t of SHEET_NAMES){let l=await fetchSheetData(t);l.length>0&&(jsonData=jsonData.concat(l))}filteredData=[...jsonData],displayResults(),populateFilters(jsonData)}finally{e&&(e.style.display="none")}}function extractPlainText(e){return e?e.toString().replace(/<\/?[^>]+(>|$)/g,""):""}function parseCollegesEN(e){let t=extractPlainText(e||"").trim();if(!t)return[];let l=t.replace(/(.*?)|\(.*?\)/g,"").toLowerCase().trim();if(l.includes("available to all four colleges"))return[...COLLEGES_EN];let a=COLLEGES_EN.filter(e=>l.includes(e.toLowerCase()));return[...new Set(a)]}function parseProgramsEN(e){let t=extractPlainText(e||"").trim();if(!t)return[];let l=t.replace(/(.*?)|\(.*?\)/g,"").replace(/[’‘]/g,"'").trim(),a=l.split(/[,;/|]+|\band\b/gi).map(e=>e.trim().toLowerCase()).filter(Boolean),n=[];return a.forEach(e=>{if(e.includes("undergraduate")||e.includes("bachelor")){n.push("Undergraduate students");return}if(e.includes("graduate program")||e.includes("graduate programs")||e.includes("graduate studies")||"graduate student"===e||"graduate students"===e){n.push("Master's students","PhD students");return}if(e.includes("master's")||e.includes("masters")||e.includes("master")){n.push("Master's students");return}(e.includes("phd")||e.includes("ph.d")||e.includes("doctoral")||e.includes("doctorate"))&&n.push("PhD students")}),[...new Set(n)]}function formatCell(e,t=null){if(!e)return"";let l=e.toString().replace(/\n/g,"
"),a=t&&t.startsWith("http")?t:"";return a?`${l}`:`${l}`}function populateFilters(e){let t=document.getElementById("country-filter"),l=document.getElementById("college-filter"),a=document.getElementById("type-filter");populateFilterOptions(t,[...new Set(e.map(e=>extractPlainText(e.nation)))].filter(Boolean).sort((e,t)=>e.localeCompare(t))),populateFilterOptions(l,COLLEGES_EN),populateFilterOptions(a,PROGRAMS_EN)}function populateFilterOptions(e,t){e.innerHTML='',t.forEach(t=>{let l=document.createElement("option");l.value=t,l.textContent=t,e.appendChild(l)})}function search(){let e=document.getElementById("search-input").value.trim().toLowerCase(),t=document.getElementById("country-filter").value,l=document.getElementById("college-filter").value,a=document.getElementById("type-filter").value;filteredData=jsonData.filter(n=>{let r=[n.nation,n.91èÏÈÉúNameText,n.eligibleColleges,n.eligibleAcademicLevel,n.departmentText].join(" ").toLowerCase();return(""===e||r.includes(e))&&(""===t||n.nation===t)&&(""===l||(n.collegeTags||[]).includes(l))&&(""===a||(n.programTags||[]).includes(a))}),displayResults()}function displayResults(){let e=document.getElementById("table-body"),t=document.getElementById("total-count");e.innerHTML="",filteredData.forEach(t=>{let l=t.sheetName,a=document.createElement("tr");a.innerHTML=`