/* domucgiare - Tim kiem nhanh toan trang v2 (11/10/2026) - uu tien ten bai/san pham, sau do mo ta/noi dung; Enter = xem day du - Go vao o "Tim kiem": hien ngay ket qua BAI VIET / HUONG DAN, DICH VU & SAN PHAM, DANH MUC (khong dau van tim duoc) - Moi ket qua co nut "Chep link" de gui nhanh cho khach qua Zalo - Du lieu: /img/files/tv-domucgiare-timkiem-index-v1.txt (+ tu bo sung bai moi tu sitemap.xml) - Muon cap nhat danh sach tieu de: tao lai file index (ten moi) va doi INDEX ben duoi. */ (function(){ var INDEX="/img/files/tv-domucgiare-timkiem-index-v1.txt"; var inputs=document.querySelectorAll('input[name="data[Filter][product_name]"]');if(!inputs.length)return; var css=".tvs-box{position:absolute;z-index:100000;background:#fff;border:1px solid #d5dde8;border-radius:12px;box-shadow:0 18px 44px rgba(16,34,66,.22);font-family:Arial,Helvetica,sans-serif;max-height:72vh;overflow:auto;text-align:left;display:none}" +".tvs-box.on{display:block}" +".tvs-g{padding:8px 0 4px}.tvs-g + .tvs-g{border-top:1px solid #eef1f5}" +".tvs-gh{font-size:11.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#5c6b80;padding:4px 14px 6px;display:flex;justify-content:space-between}" +".tvs-it{display:flex;align-items:center;gap:10px;padding:7px 14px;cursor:pointer;text-decoration:none!important;color:#14284b!important}" +".tvs-it:hover,.tvs-it.act{background:#f1f4f9}" +".tvs-th{flex:0 0 46px;width:46px;height:34px;border-radius:6px;background:#eef2f8 center/cover no-repeat}" +".tvs-tx{flex:1;min-width:0;line-height:1.35}" +".tvs-tx b{display:block;font-size:13.5px;font-weight:700;color:#14284b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}" +".tvs-tx small{display:block;font-size:12px;color:#5c6b80;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}" +".tvs-tx mark{background:#fff3b0;color:inherit;padding:0}" +".tvs-cp{flex:0 0 auto;border:1px solid #d5dde8;background:#fff;color:#14284b;border-radius:7px;font-size:12px;font-weight:700;padding:5px 9px;cursor:pointer;white-space:nowrap}" +".tvs-cp:hover{border-color:#0068ff;color:#0068ff}.tvs-cp.ok{background:#e7f5ec;border-color:#9fd5b2;color:#1b7f3b}" +".tvs-more{display:block;width:100%;border:0;background:none;color:#1f4178;font-size:12.5px;font-weight:700;padding:6px 14px 8px;text-align:left;cursor:pointer}" +".tvs-ft{border-top:1px solid #eef1f5;padding:10px 14px;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;font-size:12.5px;color:#5c6b80;background:#fafbfc;border-radius:0 0 12px 12px}" +".tvs-ft button{border:0;background:#d62828;color:#fff;font-weight:700;border-radius:8px;padding:7px 12px;cursor:pointer;font-size:12.5px}" +".tvs-empty{padding:16px 14px;font-size:13.5px;color:#3b4a5c}" +"@media (max-width:767px){.tvs-cp{display:none}.tvs-th{flex-basis:40px;width:40px;height:30px}}"; var st=document.createElement("style");st.id="tvs-css";st.textContent=css;document.head.appendChild(st); function mk(t,c,x){var e=document.createElement(t);if(c)e.className=c;if(x)e.textContent=x;return e;} function norm(s){return (s||"").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/đ/g,"d").replace(/[^a-z0-9]+/g," ").trim();} function clean(t){return (t||"").replace(/\s*[|–-]\s*(Thần Vũ|Máy In Mực In Thần Vũ|0965\.305\.158).*$/i,"").trim();} var DATA=null,loading=null; function kind(it){var u=it.u;if(it.p)return 1;if(/^(Tin tức|Tư vấn|Kiến thức)/i.test(it.c||"")||/^\/(tin-tuc|tu-van|kien-thuc)/.test(u))return 0;if(/\.html$/.test(u))return 0;return 2;} function prep(arr){arr.forEach(function(it){it.T=clean(it.t||it.h)||it.h||it.u;it.n=norm(it.T+" "+(it.h||""));it.m=norm((it.d||"")+" "+it.u.replace(/[\/_.-]+/g," ")+" "+(it.c||""));it.k=kind(it);});return arr;} function load(){if(DATA)return Promise.resolve(DATA);if(loading)return loading; loading=fetch(INDEX).then(function(r){return r.json();}).then(function(arr){DATA=prep(arr); return fetch("/sitemap.xml").then(function(r){return r.text();}).then(function(x){var have={};DATA.forEach(function(it){have[it.u]=1;});var m=x.match(/https:\/\/mayinlongbien\.vn\/[^\s"<]+/g)||[];var add=[];m.forEach(function(full){var u=full.replace("https://mayinlongbien.vn","").replace(/&/g,"&");if(u&&u!=="/"&&!have[u]){have[u]=1;var s=u.split("/").pop().replace(/\.html$/,"").replace(/-/g," ");add.push({u:u,t:s.charAt(0).toUpperCase()+s.slice(1),h:"",p:0,c:"",i:"",d:""});}});DATA=DATA.concat(prep(add));return DATA;}).catch(function(){return DATA;}); }).catch(function(){DATA=[];return DATA;});return loading;} function search(q){var qn=norm(q);if(qn.length < 2)return null;var toks=qn.split(" ").filter(function(t){return t;});var res=[]; function has(hay,t){var H=" "+hay+" ";if(t.length < 3)return H.indexOf(" "+t+" ") > -1?2:0;if(H.indexOf(" "+t+" ") > -1)return 2;return H.indexOf(" "+t) > -1?1:0;} function pass(relax){DATA.forEach(function(it){var s=0,inT=0,miss=0;for(var i=0;i!==toks.length;i++){var t=toks[i];var a=has(it.n,t);if(a){s+=3+a;inT++;}else if(has(it.m,t)){s+=1;}else{miss++;if(!relax||miss > Math.floor(toks.length/2))return;}} if(inT===toks.length)s+=8;var Hn=" "+it.n+" ";if(toks.length > 1&&Hn.indexOf(" "+qn) > -1)s+=10;if(Hn.indexOf(" "+qn+" ")===0||it.n.indexOf(qn)===0)s+=4; if(it.k===0&&/cach|huong dan|loi|nguyen nhan|meo|kinh nghiem|khi nao|tai sao|vi sao|bang ma/.test(qn))s+=3;res.push({it:it,s:s});});}pass(false);if(!res.length&&toks.length > 1)pass(true); res.sort(function(a,b){return b.s-a.s||a.it.T.length-b.it.T.length;});return res;} function hl(text,q){var b=mk("b");var toks=norm(q).split(" ").filter(function(x){return x.length > 1;});var tn=norm(text).length===text.length?text:null; if(!toks.length){b.textContent=text;return b;}var low=text.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/đ/g,"d");if(low.length!==text.length){b.textContent=text;return b;} var marks=[];toks.forEach(function(t){var p=low.indexOf(t);while(p > -1){marks.push([p,p+t.length]);p=low.indexOf(t,p+t.length);}});marks.sort(function(a,c){return a[0]-c[0];});var pos=0; marks.forEach(function(m){if(m[0] < pos)return;b.appendChild(document.createTextNode(text.slice(pos,m[0])));b.appendChild(mk("mark",null,text.slice(m[0],m[1])));pos=m[1];});b.appendChild(document.createTextNode(text.slice(pos)));return b;} function copy(url,btn){var full="https://mayinlongbien.vn"+url;var done=function(){btn.textContent="Đã chép ✓";btn.classList.add("ok");setTimeout(function(){btn.textContent="Chép link";btn.classList.remove("ok");},1600);}; if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(full).then(done,function(){prompt("Link:",full);});}else{prompt("Link:",full);}} [].forEach.call(inputs,function(inp){ var form=inp.form;var box=mk("div","tvs-box");document.body.appendChild(box);var act=-1,items=[],timer=null,limit={0:6,1:5,2:4}; inp.setAttribute("autocomplete","off");inp.setAttribute("placeholder","Tìm bài hướng dẫn, dịch vụ, máy, linh kiện…"); function pos(){var r=inp.getBoundingClientRect();var w=Math.min(Math.max(r.width,560),window.innerWidth-16);var left=Math.min(r.left+window.scrollX,window.scrollX+window.innerWidth-w-8);box.style.left=Math.max(8,left)+"px";box.style.top=(r.bottom+window.scrollY+6)+"px";box.style.width=w+"px";} function hide(){box.classList.remove("on");act=-1;} function render(q){var res=search(q);box.textContent="";items=[];act=-1;if(!res){hide();return;}pos(); if(!res.length){box.appendChild(mk("div","tvs-empty","Không tìm thấy kết quả phù hợp cho “"+q+"”. Thử từ khóa ngắn hơn, ví dụ: “kẹt giấy”, “Epson L805”, “đổ mực”."));} var G=[[0,"Bài viết & hướng dẫn"],[1,"Dịch vụ & sản phẩm"],[2,"Danh mục & trang"]]; G.forEach(function(g){var list=res.filter(function(r){return r.it.k===g[0];});if(!list.length)return;var wrap=mk("div","tvs-g");var gh=mk("div","tvs-gh");gh.appendChild(mk("span",null,g[1]));gh.appendChild(mk("span",null,list.length+" kết quả"));wrap.appendChild(gh); var lim=limit[g[0]];list.slice(0,lim).forEach(function(r){wrap.appendChild(row(r.it,q));}); if(list.length > lim){var mb=mk("button","tvs-more","Xem thêm "+(list.length-lim)+" kết quả ▾");mb.type="button";mb.addEventListener("mousedown",function(e){e.preventDefault();limit[g[0]]+=10;render(q);});wrap.appendChild(mb);} box.appendChild(wrap);}); var ft=mk("div","tvs-ft");ft.appendChild(mk("span",null,"Mẹo: gõ không dấu cũng tìm được. ↑↓ để chọn, Enter để mở."));var all=mk("button",null,"Tìm sản phẩm “"+q+"” →");all.type="button";all.addEventListener("mousedown",function(e){e.preventDefault();hide();form&&form.submit();});ft.appendChild(all);box.appendChild(ft); box.classList.add("on");} function row(it,q){var a=mk("a","tvs-it");a.href=it.u;var th=mk("span","tvs-th");if(it.i)th.style.backgroundImage="url('"+it.i.replace(/'/g,"%27")+"')";a.appendChild(th);var tx=mk("span","tvs-tx");tx.appendChild(hl(it.T,q));tx.appendChild(mk("small",null,(it.c||it.u)));a.appendChild(tx); var cp=mk("button","tvs-cp","Chép link");cp.type="button";cp.title="Chép đường link để gửi khách";cp.addEventListener("mousedown",function(e){e.preventDefault();e.stopPropagation();copy(it.u,cp);});cp.addEventListener("click",function(e){e.preventDefault();e.stopPropagation();});a.appendChild(cp);items.push(a);return a;} inp.addEventListener("focus",function(){load().then(function(){if(inp.value.trim())render(inp.value.trim());});}); inp.addEventListener("input",function(){clearTimeout(timer);var q=inp.value.trim();timer=setTimeout(function(){load().then(function(){render(q);});},160);}); inp.addEventListener("keydown",function(e){if(!box.classList.contains("on"))return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();if(items[act])items[act].classList.remove("act");act=e.key==="ArrowDown"?Math.min(items.length-1,act+1):Math.max(0,act-1);if(items[act]){items[act].classList.add("act");items[act].scrollIntoView({block:"nearest"});}} else if(e.key==="Enter"){e.preventDefault();if(items[act]){location.href=items[act].href;}else{limit={0:30,1:30,2:20};render(inp.value.trim());}}else if(e.key==="Escape"){hide();}}); inp.addEventListener("blur",function(){setTimeout(hide,180);});if(form)form.addEventListener("submit",function(e){var q=inp.value.trim();if(q.length > 1){e.preventDefault();load().then(function(){limit={0:30,1:30,2:20};render(q);inp.focus();});}}); window.addEventListener("resize",function(){if(box.classList.contains("on"))pos();}); }); })();