k8电影经典网,靠比在线观看,啦啦啦视频观看免费高清直播 最新 · 太爷爷摔倒1岁多宝宝连滚带爬去扶
5903210万 }
applyTheme();
setSaved(getSaved() || 'auto');
var btn = document.getElementById('themeToggle');
if (btn) btn.addEventListener('click', function() {
var s = getSaved();
var next = (s === 'auto' || !s) ? 'light' : (s === 'light' ? 'dark' : 'auto');
setSaved(next);
applyTheme();
});
setInterval(function() {
if (getSaved() === 'auto') applyTheme();
}, 60000);
})();
(function() {
var el = document.getElementById('syncTime');
if (!el) return;
function pad(n) { return (n < 10 ? '0' : '') + n; }
function showNow() {
var d = new Date();
el.textContent = d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()) + ' ' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds());
el.setAttribute('datetime', d.toISOString());
}
showNow();
setInterval(showNow, 1000);
})();
(function() {
var panel = document.getElementById('aiAssistantPanel');
var btn = document.getElementById('aiAssistantBtn');
var closeBtn = document.getElementById('aiPanelClose');
var tabBtns = document.querySelectorAll('.ai-panel-tabs button');
var tabChat = document.getElementById('aiTabChat');
var tabSearch = document.getElementById('aiTabSearch');
var chatMessages = document.getElementById('chatMessages');
var chatInput = document.getElementById('chatInput');
var chatSend = document.getElementById('chatSend');
var searchInput = document.getElementById('searchNewsInput');
var searchBtn = document.getElementById('searchNewsBtn');
var searchResults = document.getElementById('searchResults');
var chatHistory = [];
var aiChatUrl = 'ai_chat.php';
var newsSearchApiUrl = '/news_search.php';
if (newsSearchApiUrl === '/news_search.php' && (window.location.pathname || '').indexOf('/') > 0) {
var pathDir = (window.location.pathname || '').replace(/\/[^\/]*$/, '/');
newsSearchApiUrl = pathDir.replace(/\/$/, '') + '/news_search.php';
}
function openPanel() { if (panel) panel.classList.add('is-open'); }
function closePanel() { if (panel) panel.classList.remove('is-open'); }
if (btn) btn.addEventListener('click', openPanel);
if (closeBtn) closeBtn.addEventListener('click', closePanel);
if (tabBtns.length) {
tabBtns.forEach(function(b) {
b.addEventListener('click', function() {
tabBtns.forEach(function(x) { x.classList.remove('active'); });
b.classList.add('active');
if (b.getAttribute('data-tab') === 'chat') { if (tabChat) tabChat.classList.add('active'); if (tabSearch) tabSearch.classList.remove('active'); }
else { if (tabSearch) tabSearch.classList.add('active'); if (tabChat) tabChat.classList.remove('active'); }
});
});
}
function addChatMsg(role, text) {
if (!chatMessages) return;
var div = document.createElement('div');
div.className = 'msg ' + role;
var bubble = document.createElement('div');
bubble.className = 'bubble';
bubble.textContent = text;
div.appendChild(bubble);
chatMessages.appendChild(div);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
function sendChat() {
var text = (chatInput && chatInput.value) ? chatInput.value.trim() : '';
if (!text) return;
if (chatInput) chatInput.value = '';
addChatMsg('user', text);
chatHistory.push({ role: 'user', content: text });
var sendBtn = chatSend;
if (sendBtn) { sendBtn.disabled = true; sendBtn.textContent = '…'; }
fetch(aiChatUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message: text, history: chatHistory.slice(-10) })
}).then(function(r) { return r.json(); }).then(function(data) {
var reply = (data && data.reply) ? data.reply : (data && data.error ? data.error : '无法获取回复');
addChatMsg('assistant', reply);
chatHistory.push({ role: 'assistant', content: reply });
}).catch(function() { addChatMsg('assistant', '网络错误,请稍后再试。'); }).finally(function() {
if (sendBtn) { sendBtn.disabled = false; sendBtn.textContent = '发送'; }
});
}
if (chatSend) chatSend.addEventListener('click', sendChat);
if (chatInput) chatInput.addEventListener('keydown', function(e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendChat(); } });
function runSearch() {
var inp = document.getElementById('searchNewsInput');
var kw = (inp && inp.value !== undefined) ? String(inp.value).trim() : '';
if (!searchResults) return;
searchResults.innerHTML = '';
if (!kw) { searchResults.innerHTML = '请输入关键词后点击搜索
'; return; }
searchResults.innerHTML = '正在用 AI 查找相关新闻…
';
var searchUrl = newsSearchApiUrl + '?q=' + encodeURIComponent(kw);
fetch(searchUrl).then(function(r) { return r.json().then(function(data) { return { ok: r.ok, data: data }; }); }).then(function(res) {
var data = res.data || {};
var list = (data.list && Array.isArray(data.list)) ? data.list : [];
searchResults.innerHTML = '';
if (list.length === 0) { searchResults.innerHTML = '' + (data.error || '未找到相关新闻') + '
'; return; }
list.forEach(function(item) {
var a = document.createElement('a');
a.href = item.url || '#'; a.textContent = item.title || '';
if (item.url) { a.target = '_blank'; a.rel = 'noopener'; }
searchResults.appendChild(a);
});
}).catch(function() { searchResults.innerHTML = '网络异常,请检查连接后重试
'; });
}
if (searchBtn) searchBtn.addEventListener('click', runSearch);
if (searchInput) searchInput.addEventListener('keydown', function(e) { if (e.key === 'Enter') { e.preventDefault(); runSearch(); } });
})();
(function() {
function scrollToTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function scrollToBottom() {
window.scrollTo({ top: document.documentElement.scrollHeight, behavior: 'smooth' });
}
var topBtn = document.getElementById('scrollTopBtn');
var bottomBtn = document.getElementById('scrollBottomBtn');
if (topBtn) topBtn.addEventListener('click', scrollToTop);
if (bottomBtn) bottomBtn.addEventListener('click', scrollToBottom);
})();