/* domucgiare - Form lien he v3 (11/10/2026) - them o Dia chi/khu vuc (bat buoc) tren trang Lien he - sua: form chi co o so dien thoai (trang chu) bam Gui duoc - Form trang Lien he (/lienhe.html) truoc day KHONG luu duoc (trang tai lai, giu nguyen chu). Nay gui qua /lienhe/request_support (luu duoc vao Quan tri > Lien he). - Form popup "Yeu cau tu van" (request_support) truoc day bi treo ~30s roi bao loi 500 (do gui email SMTP loi) du da luu. Nay gui ngam, hien cam on ngay. - Hien thong bao cam on, xoa noi dung da nhap, them goi y nhap (placeholder), kiem tra so dien thoai. */ (function(){ var css=".tvok{border:1px solid #cfe9d7;background:#f1faf4;border-radius:12px;padding:18px 18px 16px;text-align:left;font-family:Arial,Helvetica,sans-serif}" +".tvok strong{display:block;font-size:17px;color:#1b7f3b;margin-bottom:6px}" +".tvok strong::before{font-family:FontAwesome;content:'\\f058';margin-right:8px}" +".tvok p{margin:0 0 12px;color:#1f2a3a;font-size:14px;line-height:1.55}" +".tvok .tvok-a{display:flex;flex-wrap:wrap;gap:8px}" +".tvok .tvok-a a,.tvok .tvok-a button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;border-radius:9px;font-weight:700;font-size:13.5px;text-decoration:none!important;cursor:pointer;border:0}" +".tvok .tvok-call{background:#d62828;color:#fff!important}.tvok .tvok-zalo{background:#0068ff;color:#fff!important}.tvok .tvok-again{background:#fff;border:1px solid #cfd8e3!important;color:#14284b}" +".tverr{color:#d62828;font-size:13px;margin-top:4px;display:block}.tvhint{display:block;color:#5c6b80;font-size:12px;margin-top:4px}"+".tvok.tvok-sm{padding:10px 12px;margin:6px 8px}.tvok.tvok-sm strong{font-size:14px;margin-bottom:2px}.tvok.tvok-sm p{font-size:12.5px;margin:0 0 8px}.tvok.tvok-sm .tvok-again{min-height:32px;font-size:12.5px}"; var st=document.createElement("style");st.id="tvform-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 digits(s){return (s||"").replace(/\D/g,"");} function ph(f,name,text){var e=f.querySelector('[name="data[Contact]['+name+']"]');if(e&&!e.getAttribute("placeholder"))e.setAttribute("placeholder",text);return e;} function send(body){return new Promise(function(res){var done=false;function fin(){if(!done){done=true;res();}} try{fetch("/lienhe/request_support",{method:"POST",body:body,credentials:"same-origin"}).then(fin,fin);}catch(e){fin();} setTimeout(fin,2500);});} function wire(f,isMain){ if(!f||f.getAttribute("data-tvform"))return;f.setAttribute("data-tvform","1"); ph(f,"name","Ví dụ: Nguyễn Văn A"); var nmx=f.querySelector('[name="data[Contact][name]"]');var phone=ph(f,"phone",nmx?"Số điện thoại để kỹ thuật viên gọi lại":"Nhập số điện thoại của bạn"); ph(f,"email","Email (không bắt buộc)"); ph(f,"subject","Bạn cần hỗ trợ gì? (VD: sửa máy in)"); ph(f,"position","Khu vực của bạn (VD: Long Biên)"); ph(f,"message","Máy gì, lỗi gì, ở khu vực nào… VD: Máy in Canon 2900 kẹt giấy, nhà ở Long Biên"); if(isMain&&!f.querySelector('[name="data[Contact][address]"]')&&phone){var grp=phone.closest(".form-group");if(grp){var ng=grp.cloneNode(false);var lb=mk("label",null,"Địa chỉ / khu vực ");lb.setAttribute("for","tvAddr");var star=mk("span","im","*");lb.appendChild(star);var ai=mk("input","form-control");ai.type="text";ai.id="tvAddr";ai.name="data[Contact][address]";ai.required=true;ai.maxLength=200;ai.setAttribute("autocomplete","street-address");ai.setAttribute("placeholder","Số nhà, phố, phường/quận – VD: Ngõ 172 Phú Diễn, Bắc Từ Liêm");ai.setAttribute("list","tvAddrList");var dl=document.createElement("datalist");dl.id="tvAddrList";["Long Biên","Bắc Từ Liêm","Nam Từ Liêm","Thanh Xuân","Cầu Giấy","Đống Đa","Ba Đình","Hoàn Kiếm","Hai Bà Trưng","Hoàng Mai","Tây Hồ","Hà Đông","Gia Lâm","Đông Anh","Thanh Trì","Hoài Đức"].forEach(function(q){var o=document.createElement("option");o.value=q+", Hà Nội";dl.appendChild(o);});var hint=mk("small","tvhint","Giúp Thần Vũ cử kỹ thuật viên ở cơ sở gần bạn nhất.");ng.appendChild(lb);ng.appendChild(ai);ng.appendChild(dl);ng.appendChild(hint);grp.parentNode.insertBefore(ng,grp.nextSibling);}}var em=f.querySelector('[name="data[Contact][email]"]');if(em)em.removeAttribute("required"); if(phone){phone.setAttribute("inputmode","tel");phone.setAttribute("autocomplete","tel");} var nm=f.querySelector('[name="data[Contact][name]"]');if(nm)nm.setAttribute("autocomplete","name"); f.addEventListener("submit",function(ev){ ev.preventDefault(); var old=f.querySelector(".tverr");if(old)old.parentNode.removeChild(old); var name=nm?nm.value.trim():"";var d=digits(phone?phone.value:""); if(nm&&!name){nm.focus();return;} var adr=f.querySelector('[name="data[Contact][address]"]');if(isMain&&adr&&adr.required&&adr.value.trim().length < 3){var er2=mk("span","tverr","Vui lòng nhập địa chỉ hoặc quận/huyện để kỹ thuật viên gần nhất liên hệ.");adr.parentNode.appendChild(er2);adr.focus();return;}if(d.length < 9||d.length > 12){var er=mk("span","tverr","Vui lòng nhập đúng số điện thoại (9–11 số).");if(phone){phone.parentNode.appendChild(er);phone.focus();}return;} var body=new URLSearchParams(); [].forEach.call(f.elements,function(el){if(el.name&&el.type!=="submit"&&el.type!=="button")body.set(el.name,el.value);}); body.set("_method","POST"); if(!body.get("data[Contact][subject]"))var ad0=body.get("data[Contact][address]");body.set("data[Contact][subject]",(isMain?"Liên hệ từ trang Liên hệ"+(ad0?" ["+ad0+"]":"")+" – ":(nm?"Yêu cầu tư vấn – ":"Khách để lại SĐT gọi lại – "))+(name||d));if(!nm)body.set("data[Contact][name]","Khách để lại SĐT"); var btn=f.querySelector('[type="submit"]');var bt=btn?(btn.value||btn.textContent):""; if(btn){btn.disabled=true;if(btn.tagName==="INPUT")btn.value="Đang gửi…";else btn.textContent="Đang gửi…";} send(body).then(function(){ var small=!nm;var box=mk("div","tvok"+(small?" tvok-sm":"")); box.appendChild(mk("strong",null,"Cảm ơn "+(name||"bạn")+"!")); box.appendChild(mk("p",null,small?("Thần Vũ sẽ gọi lại số "+(phone?phone.value.trim():"")+" sớm nhất trong giờ làm việc."):"Thần Vũ đã nhận yêu cầu của bạn. Kỹ thuật viên sẽ gọi lại số "+(phone?phone.value.trim():"")+" sớm nhất trong giờ làm việc (8:00 – 18:00, Thứ 2 – Thứ 7). Cần gấp, vui lòng gọi hotline hoặc nhắn Zalo.")); var a=mk("div","tvok-a");var c1=mk("a","tvok-call","Gọi 0965.305.158");c1.href="tel:0965305158";var c2=mk("a","tvok-zalo","Zalo 0983.504.555");c2.href="https://zalo.me/0983504555";var c3=mk("button","tvok-again","Gửi yêu cầu khác");c3.type="button"; if(small){c3.textContent="Gửi số khác";a.appendChild(c3);}else{a.appendChild(c1);a.appendChild(c2);a.appendChild(c3);}box.appendChild(a); f.reset();if(btn){btn.disabled=false;if(btn.tagName==="INPUT")btn.value=bt;else btn.textContent=bt;} f.style.display="none";f.parentNode.insertBefore(box,f.nextSibling); c3.addEventListener("click",function(){box.parentNode.removeChild(box);f.style.display="";if(nm)nm.focus();}); }); }); } wire(document.querySelector('form[action="/lienhe.html"]'),true); var ms=document.querySelectorAll('form[action*="request_support"]');for(var i=0;i!==ms.length;i++)wire(ms[i],false); })();