Widget:Teste
Ir para navegação
Ir para pesquisar
' +
'' + sym + '' +
'' + highlight(h.texto, tokens) + '' +
'
<style>
/* {literal} */
#fq-widget * { box-sizing: border-box; margin: 0; padding: 0; }
#fq-widget {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #ffffff;
color: #202122;
max-width: 780px;
margin: 1rem 0;
font-size: 0.9375rem;
line-height: 1.6;
}
.fq-header { margin-bottom: 1.25rem; display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.fq-header-main { flex: 1; min-width: 12rem; }
.fq-title { font-size: 1.25rem; font-weight: 600; color: #202122; margin-bottom: 0.2rem; }
.fq-sub { font-size: 0.875rem; color: #54595d; }
.fq-lang-wrap { flex-shrink: 0; }
#fq-lang-select {
font-size: 0.8125rem; padding: 0.35rem 0.5rem; border: 1px solid #a2a9b1; border-radius: 2px;
background: #f8f9fa; color: #202122; cursor: pointer; max-width: 100%;
}
#fq-lang-select:focus { outline: none; border-color: #36c; box-shadow: 0 0 0 2px rgba(51,102,204,0.15); }
.fq-weekly {
display: flex; align-items: center; gap: 0.5rem;
margin-bottom: 1.25rem; cursor: pointer; user-select: none; width: fit-content;
}
.fq-checkbox {
display: flex; align-items: center; justify-content: center;
width: 1.125rem; height: 1.125rem; border-radius: 3px;
border: 1px solid #a2a9b1; flex-shrink: 0;
background: #f8f9fa; transition: all 0.15s;
}
.fq-checkbox.on { background: #36c; border-color: #36c; }
.fq-checkbox svg { display: none; }
.fq-checkbox.on svg { display: block; }
.fq-weekly-label { font-size: 0.875rem; color: #54595d; transition: color 0.15s; }
.fq-weekly-label.on { color: #36c; font-weight: 500; }
.fq-weekly:hover .fq-checkbox:not(.on) { border-color: #36c; }
.fq-weekly:hover .fq-weekly-label:not(.on) { color: #36c; }
.fq-search-wrap { position: relative; margin-bottom: 0.75rem; }
.fq-search-icon {
position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%);
color: #72777d; pointer-events: none; line-height: 0;
}
#fq-input {
width: 100%; background: #fff; border: 1px solid #a2a9b1;
border-radius: 2px; padding: 0.45rem 2.5rem;
font-size: 0.9375rem; color: #202122; outline: none;
transition: border-color 0.15s, box-shadow 0.15s;
}
#fq-input::placeholder { color: #72777d; }
#fq-input:focus { border-color: #36c; box-shadow: 0 0 0 2px rgba(51,102,204,0.15); }
#fq-clear {
position: absolute; right: 0.75rem; top: 50%; transform: translateY(-50%);
background: none; border: none; color: #72777d; cursor: pointer;
line-height: 0; padding: 0; transition: color 0.15s;
}
#fq-clear:hover { color: #202122; }
#fq-clear.hidden { display: none; }
#fq-stats { font-size: 0.8125rem; color: #54595d; margin-bottom: 0.75rem; }
#fq-stats .vd { color: #14866d; font-weight: 500; }
#fq-stats .fa { color: #c0392b; font-weight: 500; }
#fq-stats .sep { color: #a2a9b1; margin: 0 0.3rem; }
#fq-stats.hidden { display: none; }
.fq-msg { font-size: 0.875rem; color: #72777d; text-align: center; padding: 3rem 0; }
.fq-msg.hidden { display: none; }
#fq-results { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; }
#fq-results.hidden { display: none; }
.fq-item {
display: flex; align-items: flex-start; gap: 0.625rem;
border: 1px solid; border-radius: 2px;
padding: 0.625rem 0.875rem; font-size: 0.9rem; line-height: 1.55;
}
.fq-item.vd { background: #f0fdf4; border-color: #14866d; color: #14433a; }
.fq-item.fa { background: #fff0f0; border-color: #c0392b; color: #5a1010; }
.fq-badge {
flex-shrink: 0; margin-top: 0.1rem;
width: 1.125rem; height: 1.125rem; border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-weight: 700; font-size: 0.7rem; color: #fff;
}
.fq-badge.vd { background: #14866d; }
.fq-badge.fa { background: #c0392b; }
mark { background: #fef08a; color: #713f12; border-radius: 1px; padding: 0 1px; }
/* {/literal} */
</style>
Foxy Quiz
<label for="fq-lang-select" class="fq-visually-hidden" id="fq-lang-label" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;">Language</label>
<select id="fq-lang-select" aria-labelledby="fq-lang-label">
<option value="pt">Português</option>
<option value="en">English</option>
<option value="es">Español</option>
<option value="pl">Polski</option>
</select>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"
fill="none" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
<polyline points="20 6 9 17 4 12"/>
</svg>
<input id="fq-input" type="text" /> <button id="fq-clear" class="hidden" type="button" aria-label=""> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path d="M18 6 6 18M6 6l12 12"/> </svg> </button>
<script>
/* {literal} */
var FQ_LANG_KEY = 'foxy-quiz-lang';
var FQ_STRINGS = {
pt: {
langLabel: 'Idioma',
sub: 'Pesquise uma afirmação para ver se ela é verdadeira ou falsa.',
weeklyOff: 'Já recebi a recompensa do Foxy Quiz nesta semana!',
weeklyDone: 'Foxy Quiz concluído em ',
placeholder: 'Digite palavras-chave para pesquisar...',
clearAria: 'Limpar',
tip: 'Digite ao menos 2 caracteres para pesquisar.',
nores: 'Nenhuma afirmação encontrada.',
locale: 'pt-BR'
},
en: {
langLabel: 'Language',
sub: 'Search for a statement to see if it is true or false.',
weeklyOff: 'I already claimed my Foxy Quiz reward this week!',
weeklyDone: 'Foxy Quiz completed on ',
placeholder: 'Type keywords to search...',
clearAria: 'Clear',
tip: 'Enter at least 2 characters to search.',
nores: 'No matching statements found.',
locale: 'en-US'
},
es: {
langLabel: 'Idioma',
sub: 'Busca una afirmación para ver si es verdadera o falsa.',
weeklyOff: '¡Ya reclamé la recompensa del Foxy Quiz esta semana!',
weeklyDone: 'Foxy Quiz completado el ',
placeholder: 'Escribe palabras clave para buscar...',
clearAria: 'Borrar',
tip: 'Introduce al menos 2 caracteres para buscar.',
nores: 'No se encontraron afirmaciones.',
locale: 'es'
},
pl: {
langLabel: 'Język',
sub: 'Wyszukaj stwierdzenie, aby sprawdzić, czy jest prawdziwe, czy fałszywe.',
weeklyOff: 'Odebrałem już nagrodę Foxy Quiz w tym tygodniu!',
weeklyDone: 'Foxy Quiz ukończono ',
placeholder: 'Wpisz słowa kluczowe, aby wyszukać...',
clearAria: 'Wyczyść',
tip: 'Wpisz co najmniej 2 znaki, aby wyszukać.',
nores: 'Nie znaleziono stwierdzeń.',
locale: 'pl-PL'
}
};
function fqStatsHtml(n, t, f, lang) {
if (lang === 'en') {
return n + ' result' + (n !== 1 ? 's' : ) +
' · ' +
'' + t + ' true' +
' · ' +
'' + f + ' false';
}
if (lang === 'es') {
return n + ' resultado' + (n !== 1 ? 's' : ) +
' · ' +
'' + t + ' verdadero' + (t !== 1 ? 's' : ) + '' +
' · ' +
'' + f + ' falso' + (f !== 1 ? 's' : ) + '';
}
if (lang === 'pl') {
return n + ' wynik' + (n === 1 ? : (n < 5 ? 'i' : 'ów')) +
' · ' +
'' + t + ' prawdziw' + (t === 1 ? 'e' : (t < 5 ? 'e' : 'ych')) + '' +
' · ' +
'' + f + ' fałszyw' + (f === 1 ? 'e' : (f < 5 ? 'e' : 'ych')) + '';
}
return n + ' resultado' + (n !== 1 ? 's' : ) +
' · ' +
'' + t + ' verdadeiro' + (t !== 1 ? 's' : ) + '' +
' · ' +
'' + f + ' falso' + (f !== 1 ? 's' : ) + '';
}
var QUIZ_CORE = [
{ c: true, en: 'Eiichiro Oda is the creator of One Piece.', pt: 'Eiichiro Oda é o criador de One Piece.', es: 'Eiichiro Oda es el creador de One Piece.', pl: 'Eiichiro Oda jest twórcą One Piece.' },
{ c: true, en: 'Zeus is an One Piece character.', pt: 'Zeus é um personagem de One Piece.', es: 'Zeus es un personaje de One Piece.', pl: 'Zeus jest postacią z One Piece.' },
{ c: true, en: 'Neptune is an One Piece character.', pt: 'Neptune é um personagem de One Piece.', es: 'Neptuno es un personaje de One Piece.', pl: 'Neptun jest postacią z One Piece.' },
{ c: true, en: 'If the World Government had known that Crocodile was the head of Baroque Works, his bounty would be at least doubled to 162,000,000 berry.', pt: 'Se o Governo Mundial soubesse que Crocodile era o chefe da Baroque Works, sua recompensa pelo menos dobraria para 162.000.000 de berries.', es: 'Si el Gobierno Mundial hubiera sabido que Crocodile era el jefe de Baroque Works, su recompensa se habría duplicado al menos a 162.000.000 de berries.', pl: 'Gdyby Światowy Rząd wiedział, że Crocodile był szefem Baroque Works, jego nagroda wzrosłaby co najmniej dwukrotnie do 162 000 000 berry.' },
{ c: true, en: "Crocodile's dream was to become the Pirate King.", pt: 'O sonho de Crocodile era se tornar o Rei dos Piratas.', es: 'El sueño de Crocodile era convertirse en el Rey de los Piratas.', pl: 'Marzeniem Crocodile\'a zostało Królem Piratów.' },
{ c: true, en: 'Hancock is the first female character in the series capable of using all three forms of Haki.', pt: 'Hancock é a primeira personagem feminina da série capaz de usar as três formas de Haki.', es: 'Hancock es la primera personaje femenina de la serie capaz de usar las tres formas de Haki.', pl: 'Hancock jest pierwszą kobiecą postacią w serii zdolną do użycia wszystkich trzech form Haki.' },
{ c: true, en: 'Boa Hancock character has several references to Greek mythology.', pt: 'A personagem Boa Hancock tem várias referências à mitologia grega.', es: 'El personaje Boa Hancock tiene varias referencias a la mitología griega.', pl: 'Postać Boa Hancock zawiera kilka odniesień do greckiej mitologii.' },
{ c: true, en: 'If One Piece was set in the real world, then Luffy would be from Brazil.', pt: 'Se One Piece se passasse no mundo real, Luffy seria do Brasil.', es: 'Si One Piece se ambientara en el mundo real, Luffy sería de Brasil.', pl: 'Gdyby One Piece rozgrywało się w prawdziwym świecie, Luffy pochodziłby z Brazylii.' },
{ c: true, en: 'Buggy is the first villain to appear in the series who is a Devil Fruit user. He is the also first Devil Fruit user whom Luffy has fought.', pt: 'Buggy é o primeiro vilão da série que é usuário de Akuma no Mi. Também é o primeiro usuário de Akuma no Mi com quem Luffy lutou.', es: 'Buggy es el primer villano de la serie que es usuario de Fruta del Diablo. También es el primer usuario de Fruta del Diablo contra el que lucha Luffy.', pl: 'Buggy jest pierwszym antagonistą w serii użytkownikiem Diabelskiego Owocu. To także pierwszy taki przeciwnik, z którym walczy Luffy.' },
{ c: true, en: "Monkey D. Luffy's mother was not revealed yet.", pt: 'A mãe de Monkey D. Luffy ainda não foi revelada.', es: 'La madre de Monkey D. Luffy aún no ha sido revelada.', pl: 'Matka Monkey D. Luffy\'ego nie została jeszcze ujawniona.' },
{ c: true, en: "Portgas D. Ace is Gold Roger's son.", pt: 'Portgas D. Ace é filho de Gold Roger.', es: 'Portgas D. Ace es hijo de Gold Roger.', pl: 'Portgas D. Ace jest synem Gold Rogera.' },
{ c: true, en: "Portgas D. Ace is Rouge's son.", pt: 'Portgas D. Ace é filho de Rouge.', es: 'Portgas D. Ace es hijo de Rouge.', pl: 'Portgas D. Ace jest synem Rouge.' },
{ c: true, en: "Gum-Gum Fruit is the official name of Luffy's Devil Fruit in English.", pt: 'Fruta Gum-Gum é o nome oficial da Akuma no Mi do Luffy em inglês.', es: 'Gum-Gum Fruit es el nombre oficial de la Fruta del Diablo de Luffy en inglés.', pl: 'Gum-Gum Fruit to oficjalna angielska nazwa Diabelskiego Owocu Luffy\'ego.' },
{ c: true, en: 'Wapol is the first king shown in the series.', pt: 'Wapol é o primeiro rei mostrado na série.', es: 'Wapol es el primer rey que aparece en la serie.', pl: 'Wapol jest pierwszym królem pokazanym w serii.' },
{ c: true, en: 'Arlong is the only known individual to have been released from Impel Down.', pt: 'Arlong é o único indivíduo conhecido a ter sido solto de Impel Down.', es: 'Arlong es el único individuo conocido que ha sido liberado de Impel Down.', pl: 'Arlong jest jedyną znaną osobą, która została zwolniona z Impel Down.' },
{ c: true, en: 'Mr. 2 has the same voice actor as Franky and Jango.', pt: 'Mr. 2 tem o mesmo dublador que Franky e Jango.', es: 'Mr. 2 tiene el mismo actor de voz que Franky y Jango.', pl: 'Mr. 2 ma tego samego aktora głosowego co Franky i Jango.' },
{ c: true, en: 'Akainu has the same voice actor as Krieg.', pt: 'Akainu tem o mesmo dublador que Krieg.', es: 'Akainu tiene el mismo actor de voz que Krieg.', pl: 'Akainu ma tego samego aktora głosowego co Krieg.' },
{ c: true, en: 'Sanji in his childhood has the same voice actress as Chopper.', pt: 'Sanji na infância tem a mesma dubladora que Chopper.', es: 'Sanji de niño tiene la misma actriz de voz que Chopper.', pl: 'Sanji w dzieciństwie ma tę samą aktorkę głosową co Chopper.' },
{ c: true, en: 'Chopper has his voice actress changed in some episodes.', pt: 'A dubladora de Chopper foi trocada em alguns episódios.', es: 'La actriz de voz de Chopper cambió en algunos episodios.', pl: 'Aktorka głosowa Choppera została zmieniona w niektórych odcinkach.' },
{ c: true, en: 'Nico Robin was also known as Miss All Sunday.', pt: 'Nico Robin também era conhecida como Miss All Sunday.', es: 'Nico Robin también era conocida como Miss All Sunday.', pl: 'Nico Robin znana była też jako Miss All Sunday.' },
{ c: true, en: "Nico Robin's mother hair is white.", pt: 'O cabelo da mãe de Nico Robin é branco.', es: 'El pelo de la madre de Nico Robin es blanco.', pl: 'Włosy matki Nico Robin są białe.' },
{ c: true, en: "Yubashiri (One of Zoro's sword) rusted.", pt: 'Yubashiri (uma das espadas de Zoro) enferrujou.', es: 'Yubashiri (una de las espadas de Zoro) se oxidó.', pl: 'Yubashiri (jeden z mieczy Zoro) zardzewiał.' },
{ c: false, en: 'Masashi Kishimoto is the creator of One Piece.', pt: 'Masashi Kishimoto é o criador de One Piece.', es: 'Masashi Kishimoto es el creador de One Piece.', pl: 'Masashi Kishimoto jest twórcą One Piece.' },
{ c: false, en: 'Akira Toriyama is the creator of One Piece.', pt: 'Akira Toriyama é o criador de One Piece.', es: 'Akira Toriyama es el creador de One Piece.', pl: 'Akira Toriyama jest twórcą One Piece.' },
{ c: false, en: 'Frost is an One Piece character.', pt: 'Frost é um personagem de One Piece.', es: 'Frost es un personaje de One Piece.', pl: 'Frost jest postacią z One Piece.' },
{ c: false, en: 'The bounty of a Pirate reflects his strength.', pt: 'A recompensa de um pirata reflete sua força.', es: 'La recompensa de un pirata refleja su fuerza.', pl: 'Nagroda za pirata odzwierciedla jego siłę.' },
{ c: false, en: 'Franky was the first cyborg to appear in the series.', pt: 'Franky foi o primeiro ciborgue a aparecer na série.', es: 'Franky fue el primer cyborg en aparecer en la serie.', pl: 'Franky był pierwszym cyborgiem w serii.' },
{ c: false, en: "Teach's favorite food is apple pie.", pt: 'A comida favorita de Teach é torta de maçã.', es: 'La comida favorita de Teach es pastel de manzana.', pl: 'Ulubionym jedzeniem Teach\'a jest szarlotka.' },
{ c: false, en: "Monkey D. Garp is Luffy's real father.", pt: 'Monkey D. Garp é o pai biológico de Luffy.', es: 'Monkey D. Garp es el padre biológico de Luffy.', pl: 'Monkey D. Garp jest biologicznym ojcem Luffy\'ego.' },
{ c: false, en: "Pandaman is in Trafalgar Law's Crew.", pt: 'Pandaman está na tripulação de Trafalgar Law.', es: 'Pandaman está en la tripulación de Trafalgar Law.', pl: 'Pandaman jest w załodze Trafalgara Law.' },
{ c: false, en: 'Bepo is not a Mink.', pt: 'Bepo não é um Mink.', es: 'Bepo no es un Mink.', pl: 'Bepo nie jest Minkiem.' },
{ c: false, en: 'Gin has the same voice actor as Kuro.', pt: 'Gin tem o mesmo dublador que Kuro.', es: 'Gin tiene el mismo actor de voz que Kuro.', pl: 'Gin ma tego samego aktora głosowego co Kuro.' },
{ c: false, en: 'Perona has the same voice actress as Koala.', pt: 'Perona tem a mesma dubladora que Koala.', es: 'Perona tiene la misma actriz de voz que Koala.', pl: 'Perona ma tę samą aktorkę głosową co Koala.' },
{ c: false, en: 'Boa Hancock has the same voice actress as Reiju.', pt: 'Boa Hancock tem a mesma dubladora que Reiju.', es: 'Boa Hancock tiene la misma actriz de voz que Reiju.', pl: 'Boa Hancock ma tę samą aktorkę głosową co Reiju.' },
{ c: false, en: 'Dracule Mihawk had only one voice actor in the entire anime.', pt: 'Dracule Mihawk teve apenas um dublador em todo o anime.', es: 'Dracule Mihawk solo tuvo un actor de voz en todo el anime.', pl: 'Dracule Mihawk miał tylko jednego aktora głosowego w całym anime.' },
{ c: false, en: 'Luffy got his scar from a tiger in Foosha Village.', pt: 'Luffy ganhou sua cicatriz de um tigre na Vila Foosha.', es: 'Luffy se hizo la cicatriz por un tigre en la aldea Foosha.', pl: 'Luffy dostał bliznę od tygrysa we wsi Foosha.' },
{ c: false, en: "Sandai Kitetsu (One of Zoro's sword) rusted.", pt: 'Sandai Kitetsu (uma das espadas de Zoro) enferrujou.', es: 'Sandai Kitetsu (una de las espadas de Zoro) se oxidó.', pl: 'Sandai Kitetsu (jeden z mieczy Zoro) zardzewiał.' },
{ c: false, en: 'Ryuma had the shadow of a Legendary Wano samurai.', pt: 'Ryuma tinha a sombra de um samurai lendário de Wano.', es: 'Ryuma tenía la sombra de un samurái legendario de Wano.', pl: 'Ryuma miał cień legendarnego samuraja z Wano.' },
{ c: false, en: "Bartolomeo's Barrier broke only one time during the anime.", pt: 'A barreira de Bartolomeo quebrou apenas uma vez no anime.', es: 'La barrera de Bartolomeo solo se rompió una vez en el anime.', pl: 'Bariera Bartolomeo pękła tylko raz w anime.' },
{ c: false, en: 'Bartolomeo has the Nikyu Nikyu no Mi devil fruit.', pt: 'Bartolomeo possui a Akuma no Mi Nikyu Nikyu no Mi.', es: 'Bartolomeo tiene la Fruta del Diablo Nikyu Nikyu no Mi.', pl: 'Bartolomeo ma Diabelski Owoc Nikyu Nikyu no Mi.' }
];
var FQ_KEY = 'foxy-quiz-weekly';
var FQ_LANG = 'pt';
var QUIZ_DATA = [];
var IDX = [];
function norm(s) {
return s.normalize('NFD').replace(/[\u0300-\u036f]/g, ).toLowerCase();
}
function weekKey() {
var now = new Date();
var diff = (now.getDay() - 5 + 7) % 7;
var fri = new Date(now);
fri.setDate(now.getDate() - diff);
return fri.toISOString().slice(0, 10);
}
function esc(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
}
function highlight(texto, tokens) {
var n = norm(texto);
var ranges = [], i, t, idx, pos;
for (i = 0; i < tokens.length; i++) {
t = tokens[i]; idx = 0;
while ((pos = n.indexOf(t, idx)) !== -1) {
ranges.push([pos, pos + t.length]);
idx = pos + 1;
}
}
if (!ranges.length) return esc(texto);
ranges.sort(function(a, b) { return a[0] - b[0]; });
var merged = [], r, last;
for (i = 0; i < ranges.length; i++) {
r = ranges[i]; last = merged[merged.length - 1];
if (last && r[0] <= last[1]) { if (r[1] > last[1]) last[1] = r[1]; }
else { merged.push([r[0], r[1]]); }
}
var out = , cur = 0, seg;
for (i = 0; i < merged.length; i++) {
seg = merged[i];
out += esc(texto.slice(cur, seg[0]));
out += '' + esc(texto.slice(seg[0], seg[1])) + '';
cur = seg[1];
}
return out + esc(texto.slice(cur));
}
function rebuildIndex() {
var lang = FQ_LANG;
var ii, row, t;
QUIZ_DATA = [];
for (ii = 0; ii < QUIZ_CORE.length; ii++) {
row = QUIZ_CORE[ii];
t = row[lang] || row.en;
QUIZ_DATA.push({ correto: row.c, texto: t });
}
IDX = [];
for (ii = 0; ii < QUIZ_DATA.length; ii++) {
IDX.push({ e: QUIZ_DATA[ii], n: norm(QUIZ_DATA[ii].texto) });
}
}
function applyUi() {
var ui = FQ_STRINGS[FQ_LANG] || FQ_STRINGS.en;
document.getElementById('fq-sub').textContent = ui.sub;
document.getElementById('fq-lang-label').textContent = ui.langLabel;
elInput.placeholder = ui.placeholder;
elClear.setAttribute('aria-label', ui.clearAria);
elTip.textContent = ui.tip;
elNores.textContent = ui.nores;
var on = elChk.classList.contains('on');
if (!on) elLbl.textContent = ui.weeklyOff;
elLang.value = FQ_LANG;
}
var elWidget = document.getElementById('fq-widget');
var elWeekly = document.getElementById('fq-weekly');
var elChk = document.getElementById('fq-chk');
var elLbl = document.getElementById('fq-lbl');
var elInput = document.getElementById('fq-input');
var elClear = document.getElementById('fq-clear');
var elStats = document.getElementById('fq-stats');
var elTip = document.getElementById('fq-tip');
var elNores = document.getElementById('fq-nores');
var elResults = document.getElementById('fq-results');
var elLang = document.getElementById('fq-lang-select');
function resolveInitialLang() {
var d = elWidget.getAttribute('data-fq-lang');
if (d && FQ_STRINGS[d]) return d;
try {
var s = localStorage.getItem(FQ_LANG_KEY);
if (s && FQ_STRINGS[s]) return s;
} catch (e) {}
var nav = (navigator.language || navigator.userLanguage || 'en').slice(0, 2).toLowerCase();
if (nav === 'pt') return 'pt';
if (nav === 'es') return 'es';
if (nav === 'pl') return 'pl';
return 'en';
}
FQ_LANG = resolveInitialLang();
rebuildIndex();
applyUi();
elLang.addEventListener('change', function() {
FQ_LANG = elLang.value;
try { localStorage.setItem(FQ_LANG_KEY, FQ_LANG); } catch (e) {}
rebuildIndex();
applyUi();
elInput.dispatchEvent(new Event('input'));
});
elWeekly.addEventListener('click', function() {
var ui = FQ_STRINGS[FQ_LANG] || FQ_STRINGS.en;
var loc = ui.locale;
var on = elChk.classList.contains('on');
if (on) {
elChk.classList.remove('on');
elLbl.classList.remove('on');
elLbl.textContent = ui.weeklyOff;
try { localStorage.removeItem(FQ_KEY); } catch(e) {}
} else {
var d = new Date();
var ds = d.toLocaleDateString(loc) + ' (' + d.toLocaleDateString(loc, { weekday: 'long' }) + ')';
elChk.classList.add('on');
elLbl.classList.add('on');
elLbl.textContent = ui.weeklyDone + ds;
try { localStorage.setItem(FQ_KEY, JSON.stringify({ weekKey: weekKey(), date: ui.weeklyDone + ds })); } catch(e) {}
}
});
elClear.addEventListener('click', function() {
elInput.value = ;
elInput.dispatchEvent(new Event('input'));
elInput.focus();
});
elInput.addEventListener('input', function() {
var raw = elInput.value;
var trimmed = raw.trim();
if (raw.length > 0) {
elClear.classList.remove('hidden');
} else {
elClear.classList.add('hidden');
}
if (trimmed.length < 2) {
elStats.classList.add('hidden');
elTip.classList.remove('hidden');
elNores.classList.add('hidden');
elResults.classList.add('hidden');
elResults.innerHTML = ;
return;
}
var parts = trimmed.split(/\s+/);
var tokens = [];
for (var i = 0; i < parts.length; i++) {
if (parts[i]) tokens.push(norm(parts[i]));
}
var hits = [], item, j, ok;
for (var k = 0; k < IDX.length; k++) {
item = IDX[k]; ok = true;
for (j = 0; j < tokens.length; j++) {
if (item.n.indexOf(tokens[j]) === -1) { ok = false; break; }
}
if (ok) hits.push(item.e);
}
elTip.classList.add('hidden');
if (hits.length === 0) {
elStats.classList.add('hidden');
elResults.classList.add('hidden');
elResults.innerHTML = ;
elNores.classList.remove('hidden');
return;
}
var tc = 0, fc = 0;
for (var x = 0; x < hits.length; x++) {
if (hits[x].correto) tc++; else fc++;
}
elStats.innerHTML = fqStatsHtml(hits.length, tc, fc, FQ_LANG);
elStats.classList.remove('hidden');
var html = , h, cls, sym;
for (var y = 0; y < hits.length; y++) {
h = hits[y];
cls = h.correto ? 'vd' : 'fa';
sym = h.correto ? '✓' : '✗';
html += '
'; } elResults.innerHTML = html; elResults.classList.remove('hidden'); elNores.classList.add('hidden'); }); (function() { try { var raw = localStorage.getItem(FQ_KEY); if (!raw) return; var obj = JSON.parse(raw); if (obj.weekKey !== weekKey()) return; elChk.classList.add('on'); elLbl.classList.add('on'); elLbl.textContent = obj.date; } catch(e) {} })(); /* {/literal} */ </script>