// MedlinePlus Physiotherapy Library Script // Author: Ubaid CLS Integration (function(){ const ALLORIGINS='https://api.allorigins.win/raw?url='; document.getElementById('medlib').innerHTML=`
No saved articles.
'; return;} favEl.innerHTML=''; favs.forEach(f=>{ const p=document.createElement('p'); p.innerHTML=`${f.title} `; favEl.appendChild(p); }); favEl.querySelectorAll('button[data-rm]').forEach(btn=>{ btn.addEventListener('click', ()=>{ const u=btn.getAttribute('data-rm'); const newFavs=JSON.parse(localStorage.getItem('mp_favs_v1')||'[]').filter(x=>x.url!==u); localStorage.setItem('mp_favs_v1',JSON.stringify(newFavs)); loadFavs(); }); }); } loadFavs(); function saveFav(item){ if(!item||!item.url){alert('Cannot save');return;} const favs=JSON.parse(localStorage.getItem('mp_favs_v1')||'[]'); if(favs.some(f=>f.url===item.url)){alert('Already saved');return;} favs.push({title:item.title,url:item.url}); localStorage.setItem('mp_favs_v1',JSON.stringify(favs)); loadFavs(); alert('Saved to Favorites'); } function escapeHtml(s){return String(s||'').replaceAll('&','&').replaceAll('<','<').replaceAll('>','>');} function truncate(s,n){return s.length>n?s.slice(0,n-1)+'…':s;} async function searchMP(q){ lastQuery=q; currentPage=1; resultsEl.innerHTML='Loading...
'; pager.style.display='none'; allItems=[]; try{ const url=ALLORIGINS+'https://wsearch.nlm.nih.gov/ws/query?db=healthTopics&term='+encodeURIComponent(q)+'&retmax=200'; const res=await fetch(url); if(!res.ok) throw new Error('Fetch failed '+res.status); const text=await res.text(); const xml=new DOMParser().parseFromString(text,'application/xml'); const docs=Array.from(xml.getElementsByTagName('document')); allItems=docs.map(d=>{ return { title:d.getElementsByTagName('title')[0]?.textContent||'No Title', url:d.getElementsByTagName('url')[0]?.textContent||'#', content:d.getElementsByTagName('content')[0]?.textContent||'', subject:d.getElementsByTagName('subject')[0]?.textContent||'' } }); applySort(); renderPage(); }catch(err){ console.error(err); resultsEl.innerHTML='Error loading results.
'; } } function applySort(){ const s=document.getElementById('mp-sort').value; if(s==='alpha') allItems.sort((a,b)=>a.title.localeCompare(b.title)); } function renderPage(){ resultsEl.innerHTML=''; if(allItems.length===0){resultsEl.innerHTML='No results.
';pager.style.display='none';return;} const totalPages=Math.ceil(allItems.length/pageSize); if(currentPage<1) currentPage=1; if(currentPage>totalPages) currentPage=totalPages; const start=(currentPage-1)*pageSize; const pageItems=allItems.slice(start,start+pageSize); pageItems.forEach((it,i)=>{ const card=document.createElement('div'); card.className='mp-card'; const id='abs'+(start+i); card.innerHTML=`