🇬🇧English
🇯🇵日本語
🇪🇸Español

The Hustle-Free
Way to Buy & Sell
Cars in Japan.

JPN · CARS
Watch. Offer. Deal.
SCROLL TO BROWSE
LATEST LISTINGS
LIVE STREAM EVENTS
Loading events…
Nissan GT-R Premium
2020 · NISSAN · R35

DESCRIPTION

DELIVERY
List Your Car
JAPAN'S PREMIER MARKETPLACE
MEDIA TYPE
🎬VIDEO
📷PHOTOS
BOTH
TAP TO UPLOAD Video up to 500MB · Photos up to 20 files
CAR DETAILS
LOCATION & PRICE
VEHICLE INSPECTION 輯検
Shaken included in price
DELIVERY
Delivery available
Delivery included in price
DESCRIPTION
Interior
🔔
New Message
Tap to open
My Dashboard
🚗
No listings yet
TAP UPLOAD TO LIST YOUR FIRST CAR
💬
No offers yet
OFFERS WILL APPEAR HERE
📩
No messages yet
ACCEPTED OFFERS START A CHAT
🎬
TAP TO SELECT VIDEO
MP4 · MOV · WebM · MAX 500MB
Admin Panel
USERS
LISTINGS
OFFERS
👥
Loading users…
🚗
Loading listings…
🤝
No active deals
ACCEPTED OFFERS APPEAR HERE
📩
No messages
COORDINATOR CALLS APPEAR HERE
CONTACT LIST
No contacts yet
AI OUTREACH AGENT
CAR TO PROMOTE
SEND TO
OUTREACH HISTORY
No outreach sent yet
LIVE STREAM EVENTS
Loading…
Chat
🤝
CALL COORDINATOR Request admin assistance
MY LANG TRANSLATE TO
ASKING PRICE ·
'; // Open in new tab for printing/saving as PDF var win = window.open('', '_blank'); if (win) { win.document.write(receiptHtml); win.document.close(); win.print(); } // Save to Firestore if (window.FB && window.FB.db) { window.FB.updateDoc( window.FB.doc(window.FB.db, 'deals', _activeDeal._fid), { salePrice: price, commissionRate: tier.rate, commissionAmount: commission, receiptGeneratedAt: Date.now() } ).catch(function(){}); } showToast('📄 Receipt opened — save as PDF'); } function sendCommissionNotification() { if (!_activeDeal || !window.FB || !window.FB.db) return; var price = _activeDeal._salePrice || 0; var commission = _activeDeal._commission || 0; // Save notification to owner's notifications in Firestore window.FB.addDoc( window.FB.collection(window.FB.db, 'notifications'), { toUid: _activeDeal.ownerUid || '', toEmail: _activeDeal.ownerEmail || '', type: 'commission_due', title: '💰 Commission Due — JPN CARS', body: 'Your car "' + (_activeDeal.carTitle || '') + '" has been sold for ¥' + price.toLocaleString() + '. Commission due: ¥' + commission.toLocaleString() + '. Please transfer to admin within 7 days.', dealId: _activeDeal._fid, createdAt: Date.now(), read: false } ).then(function() { showToast('🔔 Notification sent to owner'); }).catch(function() { showToast('⚠️ Could not send notification'); }); } // ── Hook into switchAdminTab to load deals ── var _dealsLoaded = false; var _existingSwitchAdminTab = window.switchAdminTab; window.switchAdminTab = function(tab) { if (_existingSwitchAdminTab) _existingSwitchAdminTab(tab); if (tab === 'deals' && !_dealsLoaded) { _dealsLoaded = true; adminLoadDeals(); } }; // ── Auto-create deal when offer is accepted ── var _origAcceptOffer = window.acceptOffer; window.acceptOffer = function(offerId) { if (_origAcceptOffer) _origAcceptOffer.apply(this, arguments); // After offer accepted, create a deal document setTimeout(function() { createDealFromOffer(offerId); }, 1000); }; function createDealFromOffer(offerId) { if (!window.FB || !window.FB.db) return; window.FB.getDoc(window.FB.doc(window.FB.db, 'offers', offerId)) .then(function(doc) { if (!doc.exists()) return; var offer = doc.data(); if (offer.dealCreated) return; // prevent duplicates return window.FB.addDoc(window.FB.collection(window.FB.db, 'deals'), { offerId: offerId, carTitle: offer.carTitle || offer.car || '', buyerName: offer.buyerName || '', buyerEmail: offer.buyerEmail || '', buyerUid: offer.buyerUid || '', ownerName: offer.sellerName || '', ownerEmail: offer.sellerEmail || '', ownerUid: offer.sellerUid || '', offerAmount: offer.amount || offer.offerAmount || 0, status: 'offer_accepted', createdAt: Date.now() }).then(function() { // Mark offer as having a deal window.FB.updateDoc(window.FB.doc(window.FB.db, 'offers', offerId), { dealCreated: true }); }); }).catch(function(err) { console.warn('[Deal]', err); }); } // ═══════════════════════════════════════════ // COLD OUTREACH AGENT // ═══════════════════════════════════════════ var _outreachContacts = []; var _outreachTarget = 'all'; var _outreachHistory = []; // ── Load contacts from Firestore ── function loadOutreachContacts() { if (!window.FB || !window.FB.db) { setTimeout(loadOutreachContacts, 1000); return; } try { window.FB.getDocs( window.FB.query( window.FB.collection(window.FB.db, 'outreachContacts'), window.FB.orderBy('createdAt', 'desc') ) ).then(function(snap) { _outreachContacts = []; snap.forEach(function(doc) { var d = doc.data(); d._fid = doc.id; _outreachContacts.push(d); }); renderOutreachContacts(); }); } catch(e) {} } function addOutreachContact() { var name = (document.getElementById('outreachContactName') || {}).value || ''; var email = (document.getElementById('outreachContactEmail') || {}).value || ''; var phone = (document.getElementById('outreachContactPhone') || {}).value || ''; var type = (document.getElementById('outreachContactType') || {}).value || 'dealer'; var country = (document.getElementById('outreachContactCountry') || {}).value || 'OTHER'; if (!name.trim() || !email.trim()) { showToast('⚠️ Name and email required'); return; } if (!window.FB || !window.FB.db) return; window.FB.addDoc(window.FB.collection(window.FB.db, 'outreachContacts'), { name: name.trim(), email: email.trim(), phone: phone.trim(), type: type, country: country, createdAt: Date.now() }).then(function() { showToast('✅ Contact added'); document.getElementById('outreachContactName').value = ''; document.getElementById('outreachContactEmail').value = ''; document.getElementById('outreachContactPhone').value = ''; loadOutreachContacts(); }); } function renderOutreachContacts() { var el = document.getElementById('outreachContactList'); if (!el) return; if (!_outreachContacts.length) { el.innerHTML = '
No contacts yet
'; return; } el.innerHTML = ''; _outreachContacts.forEach(function(c) { var card = document.createElement('div'); card.style.cssText = 'background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.07);border-radius:10px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;'; var info = document.createElement('div'); var nameEl = document.createElement('div'); nameEl.style.cssText = 'font-family:Rajdhani,sans-serif;font-size:13px;font-weight:700;color:#E8E0C8;'; nameEl.textContent = c.name; var metaEl = document.createElement('div'); metaEl.style.cssText = 'font-family:monospace;font-size:10px;color:#4A5E52;'; metaEl.textContent = c.email + ' · ' + c.country + ' · ' + (c.type === 'dealer' ? '🏢 Dealer' : '👤 Private'); info.appendChild(nameEl); info.appendChild(metaEl); var delBtn = document.createElement('button'); delBtn.textContent = '✕'; delBtn.style.cssText = 'background:none;border:none;color:#4A5E52;font-size:16px;cursor:pointer;padding:4px 8px;'; delBtn.onclick = (function(fid) { return function() { deleteOutreachContact(fid); }; })(c._fid); card.appendChild(info); card.appendChild(delBtn); el.appendChild(card); }); // Also populate car select populateOutreachCarSelect(); } function deleteOutreachContact(fid) { if (!window.FB || !window.FB.db) return; window.FB.deleteDoc(window.FB.doc(window.FB.db, 'outreachContacts', fid)) .then(function() { loadOutreachContacts(); showToast('Contact removed'); }); } function setOutreachTarget(target) { _outreachTarget = target; ['All','Dealers','Private'].forEach(function(t) { var btn = document.getElementById('outreachTarget' + t); if (btn) { var isActive = (target === 'all' && t === 'All') || (target === 'dealer' && t === 'Dealers') || (target === 'private' && t === 'Private'); btn.style.borderColor = isActive ? 'rgba(201,168,76,0.5)' : 'rgba(255,255,255,0.1)'; btn.style.background = isActive ? 'rgba(201,168,76,0.12)' : 'transparent'; btn.style.color = isActive ? '#C9A84C' : '#4A5E52'; } }); } function populateOutreachCarSelect() { var sel = document.getElementById('outreachCarSelect'); if (!sel) return; sel.innerHTML = ''; // Use GRID_CARS if available var cars = window.GRID_CARS || window.CARS || []; cars.forEach(function(car, i) { var opt = document.createElement('option'); opt.value = i; opt.textContent = (car.title || car.make || 'Car ' + (i+1)) + (car.price ? ' — ¥' + Number(car.price).toLocaleString() : ''); sel.appendChild(opt); }); } // ── AI Outreach Generator ── function generateOutreach() { var carIdx = (document.getElementById('outreachCarSelect') || {}).value; if (carIdx === '' || carIdx === null || carIdx === undefined) { showToast('⚠️ Select a car first'); return; } var cars = window.GRID_CARS || window.CARS || []; var car = cars[parseInt(carIdx)]; if (!car) { showToast('⚠️ Car not found'); return; } // Filter contacts by target var targets = _outreachContacts.filter(function(c) { if (_outreachTarget === 'all') return true; return c.type === _outreachTarget; }); if (!targets.length) { showToast('⚠️ No contacts in selected group'); return; } var loadingEl = document.getElementById('outreachLoading'); var outputEl = document.getElementById('outreachOutput'); if (loadingEl) loadingEl.style.display = 'block'; if (outputEl) outputEl.style.display = 'none'; var carDetails = [ car.title || '', car.year ? 'Year: ' + car.year : '', car.mileage ? 'Mileage: ' + car.mileage : '', car.price ? 'Price: ¥' + Number(car.price).toLocaleString() : '', car.desc || '' ].filter(Boolean).join(', '); var targetLabel = _outreachTarget === 'dealer' ? 'Car dealers and importers' : _outreachTarget === 'private' ? 'Private buyers' : 'International buyers and dealers'; var prompt = [ 'You are a professional car export sales agent for JPN CARS, a Japanese used car marketplace (jpncars.online).', '', 'Write TWO things:', '', '1. A professional cold outreach EMAIL to international car buyers/dealers about this car:', 'Car: ' + carDetails, 'Target: ' + targetLabel, '', 'The email should:', '- Have a compelling subject line (prefix with SUBJECT:)', '- Be professional but warm', '- Highlight the cars key features', '- Mention live video walk-arounds are available', '- Include a clear call to action to visit jpncars.online or reply', '- Be concise (under 150 words)', '', '2. A SHORT WhatsApp message template (under 50 words) about the same car.', 'Prefix it with WHATSAPP:', '', 'Keep both professional and focused on selling the car.' ].join('\n'); fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'claude-sonnet-4-20250514', max_tokens: 1000, messages: [{ role: 'user', content: prompt }] }) }) .then(function(r) { return r.json(); }) .then(function(data) { if (loadingEl) loadingEl.style.display = 'none'; var text = (data.content && data.content[0] && data.content[0].text) || ''; // Split into email and whatsapp var emailPart = ''; var waPart = ''; var waIdx = text.indexOf('WHATSAPP:'); if (waIdx > -1) { emailPart = text.substring(0, waIdx).replace('1.', '').trim(); waPart = text.substring(waIdx + 9).trim(); } else { emailPart = text; } var emailEl = document.getElementById('outreachEmailDraft'); var waEl = document.getElementById('outreachWhatsAppDraft'); if (emailEl) emailEl.textContent = emailPart; if (waEl) waEl.textContent = waPart; if (outputEl) outputEl.style.display = 'block'; // Save to history saveOutreachHistory(car, emailPart, waPart, targets.length); }) .catch(function(err) { if (loadingEl) loadingEl.style.display = 'none'; showToast('⚠️ AI generation failed'); console.error('[Outreach]', err); }); } function copyOutreachEmail() { var el = document.getElementById('outreachEmailDraft'); if (!el) return; navigator.clipboard.writeText(el.textContent).then(function() { showToast('📋 Email copied'); }); } function copyOutreachWhatsApp() { var el = document.getElementById('outreachWhatsAppDraft'); if (!el) return; navigator.clipboard.writeText(el.textContent).then(function() { showToast('📋 WhatsApp message copied'); }); } function saveOutreachHistory(car, email, wa, recipientCount) { if (!window.FB || !window.FB.db) return; window.FB.addDoc(window.FB.collection(window.FB.db, 'outreachHistory'), { carTitle: car.title || 'Unknown', emailDraft: email, whatsappDraft: wa, recipientCount: recipientCount, target: _outreachTarget, createdAt: Date.now() }).then(function() { loadOutreachHistory(); }); } function loadOutreachHistory() { if (!window.FB || !window.FB.db) return; var el = document.getElementById('outreachHistory'); if (!el) return; try { window.FB.getDocs( window.FB.query( window.FB.collection(window.FB.db, 'outreachHistory'), window.FB.orderBy('createdAt', 'desc'), window.FB.limit(10) ) ).then(function(snap) { if (snap.empty) { el.innerHTML = '
No outreach sent yet
'; return; } el.innerHTML = ''; snap.forEach(function(doc) { var h = doc.data(); var card = document.createElement('div'); card.style.cssText = 'background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.06);border-radius:10px;padding:10px 12px;'; var dateStr = h.createdAt ? new Date(h.createdAt).toLocaleDateString('en-US', {month:'short', day:'numeric'}) : ''; card.innerHTML = '
' + (h.carTitle || '—') + '
' + '
' + dateStr + ' · ' + (h.recipientCount || 0) + ' contacts · ' + (h.target || 'all') + '
'; el.appendChild(card); }); }); } catch(e) {} } // ── Hook into switchAdminTab ── var _outreachLoaded = false; var _prevSwitchAdminTabOutreach = window.switchAdminTab; window.switchAdminTab = function(tab) { if (_prevSwitchAdminTabOutreach) _prevSwitchAdminTabOutreach(tab); if (tab === 'outreach' && !_outreachLoaded) { _outreachLoaded = true; loadOutreachContacts(); loadOutreachHistory(); setTimeout(populateOutreachCarSelect, 1000); } }; // ═══════════════════════════════════════════ // LIVE STREAM OVERLAYS // 1. Cinematic Intro // 2. Lower Third // 3. Price Tag // 4. Viewer Reactions // ═══════════════════════════════════════════ var _lowerThirdVisible = false; var _priceTagVisible = false; var _priceStatus = 'available'; // 'available' or 'sold' // ── 1. CINEMATIC INTRO ────────────────────────────────── function playCinematicIntro(carTitle) { var intro = document.getElementById('cinematicIntro'); var logo = document.getElementById('cinematicLogo'); var line = document.getElementById('cinematicLine'); var title = document.getElementById('cinematicCarTitle'); var live = document.getElementById('cinematicLive'); if (!intro) return; // Set car title if (title) title.textContent = (carTitle || '').toUpperCase(); // Show overlay intro.style.display = 'flex'; // Animate in requestAnimationFrame(function() { setTimeout(function() { if (logo) { logo.style.opacity = '1'; logo.style.transform = 'scale(1)'; } if (line) { line.style.width = '120px'; } if (title) { title.style.opacity = '1'; title.style.transform = 'translateY(0)'; } if (live) { live.style.opacity = '1'; } }, 100); }); // Fade out after 3.5s setTimeout(function() { intro.style.transition = 'opacity 0.8s ease'; intro.style.opacity = '0'; setTimeout(function() { intro.style.display = 'none'; intro.style.opacity = '1'; intro.style.transition = ''; // Reset for next time if (logo) { logo.style.opacity = '0'; logo.style.transform = 'scale(0.8)'; } if (line) { line.style.width = '0px'; } if (title) { title.style.opacity = '0'; title.style.transform = 'translateY(20px)'; } if (live) { live.style.opacity = '0'; } // Show controls after intro showLiveOverlayControls(); }, 800); }, 3500); } function showLiveOverlayControls() { var ctrl = document.getElementById('liveOverlayControls'); if (ctrl) { ctrl.style.display = 'flex'; } } // ── 2. LOWER THIRD ────────────────────────────────────── function showLowerThird(carTitle, year, mileage, price) { var el = document.getElementById('lowerThird'); if (!el) return; // Populate var t = document.getElementById('lowerThirdTitle'); var y = document.getElementById('lowerThirdYear'); var m = document.getElementById('lowerThirdMileage'); var p = document.getElementById('lowerThirdPrice'); if (t) t.textContent = carTitle || ''; if (y) y.textContent = year ? year + '' : ''; if (m) m.textContent = mileage ? mileage + ' km' : ''; if (p) p.textContent = price ? '¥' + Number(price).toLocaleString() : ''; el.style.transform = 'translateY(0)'; el.style.opacity = '1'; _lowerThirdVisible = true; var btn = document.getElementById('btnLowerThird'); if (btn) btn.style.borderColor = 'rgba(201,168,76,0.8)'; } function hideLowerThird() { var el = document.getElementById('lowerThird'); if (el) { el.style.transform = 'translateY(120px)'; el.style.opacity = '0'; } _lowerThirdVisible = false; var btn = document.getElementById('btnLowerThird'); if (btn) btn.style.borderColor = 'rgba(201,168,76,0.3)'; } function toggleLowerThird() { if (_lowerThirdVisible) { hideLowerThird(); } else { // Pull data from linked owner + selected car var car = _liveLinkedCar || {}; showLowerThird(car.title || _liveBcastTitle || 'JPN CARS', car.year, car.mileage, car.price); } } // ── 3. PRICE TAG ──────────────────────────────────────── function showPriceTag(price) { var el = document.getElementById('priceTagOverlay'); var amt = document.getElementById('priceTagAmount'); if (!el) return; if (amt) amt.textContent = price ? '¥' + Number(price).toLocaleString() : '—'; el.style.transform = 'translate(0,-50%)'; _priceTagVisible = true; var btn = document.getElementById('btnPriceTag'); if (btn) btn.style.borderColor = 'rgba(201,168,76,0.8)'; } function hidePriceTag() { var el = document.getElementById('priceTagOverlay'); if (el) el.style.transform = 'translate(110%,-50%)'; _priceTagVisible = false; var btn = document.getElementById('btnPriceTag'); if (btn) btn.style.borderColor = 'rgba(201,168,76,0.3)'; } function togglePriceTag() { if (_priceTagVisible) { hidePriceTag(); } else { var car = _liveLinkedCar || {}; showPriceTag(car.price || 0); } } function togglePriceStatus() { _priceStatus = _priceStatus === 'available' ? 'sold' : 'available'; var statusEl = document.getElementById('priceTagStatus'); var btn = document.getElementById('btnPriceStatus'); if (_priceStatus === 'sold') { if (statusEl) { statusEl.textContent = 'SOLD'; statusEl.style.color = '#f87171'; } if (btn) { btn.textContent = 'SOLD'; btn.style.borderColor = 'rgba(176,48,48,0.5)'; btn.style.color = '#f87171'; } } else { if (statusEl) { statusEl.textContent = 'AVAILABLE'; statusEl.style.color = '#4ade80'; } if (btn) { btn.textContent = 'AVL'; btn.style.borderColor = 'rgba(26,110,60,0.5)'; btn.style.color = '#4ade80'; } } } // ── 4. VIEWER REACTIONS ───────────────────────────────── var REACTION_EMOJIS = ['🔥','❤️','💰','🚗','⭐','😍','💎','👏']; function triggerReaction(emoji) { var container = document.getElementById('reactionContainer'); if (!container) return; var e = emoji || REACTION_EMOJIS[Math.floor(Math.random() * REACTION_EMOJIS.length)]; var el = document.createElement('div'); el.textContent = e; el.style.cssText = [ 'position:absolute', 'bottom:0', 'left:' + (Math.random() * 20 + 10) + 'px', 'font-size:28px', 'opacity:1', 'transition:bottom 2.5s ease-out,opacity 2s ease 0.5s', 'pointer-events:none', ].join(';'); container.appendChild(el); requestAnimationFrame(function() { setTimeout(function() { el.style.bottom = '280px'; el.style.opacity = '0'; }, 50); }); setTimeout(function() { if (el.parentNode) el.parentNode.removeChild(el); }, 3000); } // Auto-fire reactions from viewers via Firestore function startViewerReactions(streamId) { if (!window.FB || !window.FB.db || !streamId) return; try { window.FB.onSnapshot( window.FB.query( window.FB.collection(window.FB.db, 'liveReactions', streamId, 'reactions'), window.FB.orderBy('ts', 'desc'), window.FB.limit(1) ), function(snap) { snap.docChanges().forEach(function(change) { if (change.type === 'added') { triggerReaction(change.doc.data().emoji); } }); } ); } catch(e) {} } // ── Wire into onStreamConnected ────────────────────────── var _liveLinkedCar = null; var _origOnConnectedOverlays = window.onStreamConnected; window.onStreamConnected = function(title) { if (_origOnConnectedOverlays) _origOnConnectedOverlays.apply(this, arguments); // Pull car data from dropdown if available var carSel = document.getElementById('outreachCarSelect'); var cars = window.GRID_CARS || window.CARS || []; if (carSel && carSel.value !== '') { _liveLinkedCar = cars[parseInt(carSel.value)] || null; } // Play cinematic intro first playCinematicIntro(title); // After intro, auto show lower third and price tag setTimeout(function() { var car = _liveLinkedCar || {}; showLowerThird(title, car.year, car.mileage, car.price); if (car.price) showPriceTag(car.price); startViewerReactions(window.CU ? window.CU.uid : null); }, 4500); }; // ── Hide overlays on stream end ────────────────────────── var _origStopLiveOverlays = window.stopLive; window.stopLive = function() { hideLowerThird(); hidePriceTag(); var ctrl = document.getElementById('liveOverlayControls'); if (ctrl) ctrl.style.display = 'none'; _liveLinkedCar = null; if (_origStopLiveOverlays) _origStopLiveOverlays.apply(this, arguments); }; // ── STREAM MODE TOGGLE ─────────────────────────────────── var _streamMode = 'free'; // 'linked' or 'free' — default free so you can stream immediately function setStreamMode(mode) { _streamMode = mode; var linkedBtn = document.getElementById('streamModeLinked'); var freeBtn = document.getElementById('streamModeFree'); var ownerWrap = document.getElementById('ownerDropdownWrap'); if (mode === 'linked') { if (linkedBtn) { linkedBtn.style.borderColor = 'rgba(201,168,76,0.5)'; linkedBtn.style.background = 'rgba(201,168,76,0.12)'; linkedBtn.style.color = '#C9A84C'; } if (freeBtn) { freeBtn.style.borderColor = 'rgba(255,255,255,0.1)'; freeBtn.style.background = 'transparent'; freeBtn.style.color = '#4A5E52'; } if (ownerWrap) ownerWrap.style.display = 'block'; populateLiveOwnerDropdown(); } else { if (freeBtn) { freeBtn.style.borderColor = 'rgba(74,144,217,0.5)'; freeBtn.style.background = 'rgba(74,144,217,0.12)'; freeBtn.style.color = '#64B5F6'; } if (linkedBtn) { linkedBtn.style.borderColor = 'rgba(255,255,255,0.1)'; linkedBtn.style.background = 'transparent'; linkedBtn.style.color = '#4A5E52'; } if (ownerWrap) ownerWrap.style.display = 'none'; _liveLinkedOwner = null; } } // Set default mode when live screen opens — call after admin check var _origOpenLiveDrawerMode = openLiveDrawer; openLiveDrawer = function() { _origOpenLiveDrawerMode.apply(this, arguments); setTimeout(function() { setStreamMode('free'); }, 200); };