Welcome to the 2026 Pink Gala
Enter your name:
// ===== SCRIPT URL ===== const SCRIPT_URL = "https://script.google.com/macros/s/AKfycbxGPMb1n2DyCQfXEfEvFb9OJT0v4JhF4-1oBpH3C2w5J2BC1J-0GFV3JEc7wOzqqIye/exec";
// ===== Guests ===== const guests = { "Cole Jacobs": {bidder: 101, table: 1}, "John Bell": {bidder: 122, table: 4}, "Amanda Scott": {bidder: 135, table: 12}, "Ben Danner": {bidder: 148, table: 22} };
let currentItems = []; let currentGuest = "";
// ===== Login ===== function enterAuction(){ const guestName = document.getElementById("guestNameInput").value.trim(); if(!guests[guestName]) { alert("Guest not found"); return; }
currentGuest = guestName;
document.getElementById("bidderNumber").value = guests[guestName].bidder; document.getElementById("tableNumber").value = guests[guestName].table;
document.getElementById("landingPage").style.display = "none"; document.getElementById("auctionPage").style.display = "block";
showSection('silent'); fetchItems(); startPolling(); }
function showSection(section) { document.getElementById("silentAuction").style.display = 'block'; }
// ===== FETCH ITEMS FROM SHEET ===== async function fetchItems(){ try { const response = await fetch(`${SCRIPT_URL}?action=fetch`); const data = await response.json(); currentItems = data.items; renderItems(); } catch(err) { console.error("Fetch error:", err); } }
// ===== RENDER ITEMS ===== function renderItems(){ const auctionDiv = document.getElementById("auctionItems"); auctionDiv.innerHTML = "";
currentItems.forEach(item => { const div = document.createElement("div"); div.className = "bid-item";
div.innerHTML = `
${item.itemTitle} (ID: ${item.itemId})
Current Bid: $${item.currentBid || 0} by
${item.currentBidder || "-"}
`;
auctionDiv.appendChild(div); }); }
// ===== PLACE BID ===== async function placeBid(itemId){
const bidValue = parseFloat(document.getElementById(`input-${itemId}`).value); if(!bidValue){ alert("Enter a valid bid."); return; }
const bidder = document.getElementById("bidderNumber").value; const tableNo = document.getElementById("tableNumber").value;
try {
const response = await fetch(`${SCRIPT_URL}?action=submit&itemId=${itemId}&bidAmount=${bidValue}&bidder=${bidder}&guestName=${encodeURIComponent(currentGuest)}&tableNumber=${tableNo}`);
const result = await response.json();
const statusDiv = document.getElementById(`status-${itemId}`);
if(result.status === "accepted"){ statusDiv.innerHTML = "✅ You are currently winning!"; fetchItems(); } else if(result.status === "rejected"){ statusDiv.innerHTML = `❌ Outbid! Current bid is $${result.currentBid}`; fetchItems(); } else if(result.status === "closed"){ statusDiv.innerHTML = "⛔ Auction closed."; }
} catch(err) { console.error("Submit error:", err); } }
// ===== POLLING ===== function startPolling(){ setInterval(fetchItems, 3000); // 3 seconds }
