(function () {
// ===== 공통 유틸 =====
var price = 164994000;
function rnd(min,max){ return +(Math.random()*(max-min)+min).toFixed(3); }
// ---- ② 호가/현재가 ----
function makeBook(base){
var levels=15, step=30000, bids=[], asks=[];
for(var i=levels;i>0;i--){ bids.push([base - i*step, rnd(0.001,1.25)]); }
for(var j=1;j<=levels;j++){ asks.push([base + j*step, rnd(0.001,1.25)]); }
return {bids:bids, asks:asks};
}
var trades=[];
function pushTrade(p,side){
trades.unshift({p:p,q:rnd(0.001,0.85),t:Date.now(),side:side});
trades=trades.slice(0,40);
}
function renderOrderSide(sel, rows, type){
var el=document.querySelector(sel); if(!el) return;
el.innerHTML=rows.slice(0,15).map(function(r){
return '
'+Number(r[0]).toLocaleString()+
''+r[1]+'
';
}).join('');
}
function renderTrades(list){
var el=document.getElementById('trades'); if(!el) return;
el.innerHTML=list.slice(0,30).map(function(tr){
return ''+Number(tr.p).toLocaleString()+
''+tr.q+''+new Date(tr.t).toLocaleTimeString()+'
';
}).join('');
}
function renderLast(p){
var el=document.getElementById('lastprice'); if(el) el.textContent=Number(p).toLocaleString();
}
// ---- ⑤ 코인 리스트(모의) ----
var coins = [
{sym:'BTC', name:'Bitcoin'}, {sym:'ETH', name:'Ethereum'}, {sym:'YOY', name:'YooY Land'},
{sym:'SOL', name:'Solana'}, {sym:'XRP', name:'XRP'}, {sym:'DOGE', name:'Dogecoin'}
].map(function(c){ c.price=Math.round(price*(0.01+Math.random())); c.chg=0; return c; });
function updateCoins(){
coins.forEach(function(c){
var d=(Math.random()-0.5)*0.03; // ±3%
c.chg = +(d*100).toFixed(2);
c.price = Math.max(1, Math.round(c.price*(1+d)));
});
}
function renderCoinList(){
var box=document.querySelector('#coinlist .coinlist-body'); if(!box) return;
var q=(document.getElementById('coin-search')||{}).value||'';
var rows=coins.filter(function(c){
return (c.sym+c.name).toLowerCase().indexOf((q||'').toLowerCase())>-1;
}).map(function(c){
var cls = c.chg>=0?'up':'down';
return ''+c.sym+''+
''+c.price.toLocaleString()+''+
''+(c.chg>0?'+':'')+c.chg+'%
';
}).join('');
box.innerHTML = rows;
}
// ---- 데모 시작 ----
function start(){
// 검색 이벤트
var input=document.getElementById('coin-search');
if(input) input.addEventListener('input', renderCoinList);
setInterval(function(){
var drift=(Math.random()-0.5)*90000;
price=Math.max(1, Math.round(price+drift));
pushTrade(price, drift>=0?'buy':'sell');
var book=makeBook(price);
renderLast(price);
renderOrderSide('.bids', book.bids, 'bid');
renderOrderSide('.asks', book.asks, 'ask');
renderTrades(trades);
updateCoins();
renderCoinList();
}, 1000);
// 주문 버튼 데모
var buy=document.getElementById('buyBtn'), sell=document.getElementById('sellBtn');
if(buy) buy.onclick=function(){ alert('데모 매수요청\n가격:'+document.getElementById('price').value+'\n수량:'+document.getElementById('amount').value); };
if(sell) sell.onclick=function(){ alert('데모 매도요청\n가격:'+document.getElementById('price').value+'\n수량:'+document.getElementById('amount').value); };
}
(document.readyState==='loading') ? document.addEventListener('DOMContentLoaded', start) : start();
})();