Answer 4 quick questions. Our AI analyses your symptoms and pinpoints the most likely issues — free, in under 60 seconds.
We'll personalise your diagnosis report and use it on the WhatsApp booking message.
We use the year, make and model to tailor the diagnosis to known issues for your vehicle.
Select all that apply — the more you pick, the sharper the diagnosis.
Tap to select (minimum 1)
Mileage helps us spot wear-related issues. Urgency tells us how quickly you need attention.
${escHtml(issue.desc || '')}
${tags.length ? '' : ''} `; list.appendChild(card); }); /* Animate probability bars after render */ requestAnimationFrame(() => { requestAnimationFrame(() => { document.querySelectorAll('.prob-bar[data-prob]').forEach(el => { el.style.width = el.dataset.prob + '%'; }); }); }); /* Build WhatsApp pre-fill */ const wa = buildWaMessage(issues); document.getElementById('waBookBtn').href = 'https://wa.me/971541699500?text=' + encodeURIComponent(wa); document.getElementById('stepResults').classList.remove('hidden'); document.getElementById('diagCard').scrollIntoView({ behavior: 'smooth', block: 'start' }); } function buildWaMessage(issues) { const topIssues = issues.slice(0, 3).map(i => '• ' + i.title).join('\n'); return `Hi FixHive! I just used the AI Diagnosis tool on your website and got these results. My car: ${state.year} ${state.brand} ${state.model} (~${state.mileage ? state.mileage + ' km' : 'mileage unknown'}) Symptoms: ${state.symptoms.join(', ')} Urgency: ${state.urgency} My name: ${state.name} Top AI-identified issues: ${topIssues} Can you help me book a full diagnostic and get a quote?`; } function escHtml(str) { return String(str).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } /* ── RESTART ── */ function restartTool() { state.name = ''; state.year = ''; state.brand = ''; state.model = ''; state.symptoms = []; state.mileage = ''; state.urgency = ''; document.getElementById('inputName').value = ''; document.getElementById('inputModel').value = ''; document.getElementById('inputMileage').value = ''; document.getElementById('inputBrand').selectedIndex = 0; document.querySelectorAll('.symptom-chip').forEach(c => c.classList.remove('selected')); ['low','medium','high'].forEach(l => { document.getElementById('urg'+l.charAt(0).toUpperCase()+l.slice(1)).className = 'urgency-opt'; }); ['stepResults','stepError','stepLoading','step2','step3','step4'].forEach(id => document.getElementById(id).classList.add('hidden') ); document.getElementById('btn4').disabled = true; document.getElementById('btn3').disabled = true; document.getElementById('btn1').disabled = true; goStep(1); } /* Initial validation state */ document.getElementById('btn1').disabled = true; document.getElementById('btn2').disabled = true;