
Bills Prod
Click a link below to learn more
Thank You!
Please check your email for confirmation of appointment.
🍽️ What Should I Eat?
Spin the wheel and discover your next meal!
🎬 Movie Search v2
🔍 Searching...
'; detailsDiv.innerHTML = ""; try { const res = await fetch(`${API_BASE}/search/?apiKey=${API_KEY}&search_field=name&search_value=${encodeURIComponent(query)}&types=movie,tv`); const data = await res.json(); let results = data.title_results || []; results = results.slice(0, RESULTS_PER_PAGE); if(results.length === 0){ resultsDiv.innerHTML = '😔 No results found. Try a different search term.
'; return; } resultsDiv.innerHTML = ""; results.forEach(item => { const div = document.createElement("div"); div.className = "result-item"; const img = document.createElement("img"); img.src = item.image_url || "https://via.placeholder.com/60x90?text=No+Image"; img.alt = item.title || item.name; const textDiv = document.createElement("div"); textDiv.className = "result-text"; const titleDiv = document.createElement("div"); titleDiv.className = "result-title"; titleDiv.textContent = item.title || item.name; const yearDiv = document.createElement("div"); yearDiv.className = "result-year"; yearDiv.textContent = item.year ? `Released: ${item.year}` : "Release year unknown"; textDiv.appendChild(titleDiv); textDiv.appendChild(yearDiv); div.appendChild(img); div.appendChild(textDiv); div.addEventListener("click", () => loadDetails(item.id, countryFilter.value)); resultsDiv.appendChild(div); }); } catch(err){ resultsDiv.innerHTML = `❌ Error: ${err.message}
`; } } async function loadDetails(titleId, country){ resultsDiv.innerHTML = ""; detailsDiv.innerHTML = '📖 Loading details...
'; try{ const res = await fetch(`${API_BASE}/title/${titleId}/details/?apiKey=${API_KEY}&append_to_response=sources`); const data = await res.json(); let sources = data.sources || []; if(country) sources = sources.filter(s => s.region === country); const sourcesByType = {}; sources.forEach(s => { const type = s.type || 'other'; if(!sourcesByType[type]) sourcesByType[type] = new Set(); sourcesByType[type].add(s.name); }); let sourcesHtml = ''; if(Object.keys(sourcesByType).length > 0){ sourcesHtml = '🎭 Available On:
'; const typeLabels = {free:'🆓 Free', sub:'📺 Subscription', rent:'💰 Rent', buy:'🛒 Buy', other:'📱 Other'}; Object.keys(sourcesByType).forEach(type=>{ const label = typeLabels[type] || `📱 ${type}`; sourcesHtml += `${label}
${Array.from(sourcesByType[type]).map(name=>`${name}`).join('')}
🎭 Available On:
😞 No streaming sources available for the selected country.
${data.title || "Title Details"}
🎬 Watch on FMovies ${data.poster || data.backdrop ? `📖 Plot:
${data.plot_overview || "Plot information not available."}
❌ Error loading details: ${err.message}
`; } } function backToResults(){ detailsDiv.innerHTML = ""; doSearch(); searchBox.focus(); } window.addEventListener('load', ()=>{ searchBox.focus(); });