/* global React */

// ============================================================
// Operating hours
//   Closed Mondays
//   Tuesday – Sunday   12:00 pm – 10:00 pm
//   Happy Hour         3:00 pm – 6:00 pm (same open days)
// ============================================================

const DAY_NAMES = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const CLOSED_DAY = 1; // Monday

function useHappyHour() {
  const [now, setNow] = React.useState(() => new Date());
  React.useEffect(() => {
    const id = setInterval(() => setNow(new Date()), 60 * 1000);
    return () => clearInterval(id);
  }, []);
  const day = now.getDay(); // 0 = Sun, 6 = Sat
  const hour = now.getHours();
  const isNow = day !== CLOSED_DAY && hour >= 15 && hour < 18;
  return {
    isNow,
    label: isNow ? "Happy hour now" : "Happy hour · 3–6",
    long:  isNow ? "Happy hour — until 6 today" : "Happy hour, Tue–Sun, 3–6pm"
  };
}

// Open / closed status — closed Mondays, otherwise 12pm–10pm.
// Returns { isNow, label } where:
//   isNow      — true if open right now
//   label      — short status for a badge (varies with time of day)
function useOpenStatus() {
  const [now, setNow] = React.useState(() => new Date());
  React.useEffect(() => {
    const id = setInterval(() => setNow(new Date()), 60 * 1000);
    return () => clearInterval(id);
  }, []);
  const day = now.getDay();
  const hour = now.getHours();
  const closeHour = 22;
  const closeLabel = "10 pm";
  const isClosedToday = day === CLOSED_DAY;
  const isNow = !isClosedToday && hour >= 12 && hour < closeHour;

  const nextOpenDayName = (fromDay) => {
    let d = (fromDay + 1) % 7;
    while (d === CLOSED_DAY) d = (d + 1) % 7;
    return DAY_NAMES[d];
  };

  let label;
  if (isNow) {
    label = `Open · until ${closeLabel}`;
  } else if (isClosedToday) {
    label = `Closed today — opens ${nextOpenDayName(day)} at 12 pm`;
  } else if (hour < 12) {
    label = "Opens today at 12 pm";
  } else {
    label = `Opens ${nextOpenDayName(day)} at 12 pm`;
  }

  return { isNow, label, closeLabel };
}

// ============================================================
// Reservations link — Dimi's uses OpenTable.
// ============================================================
const OPENTABLE_URL = "https://www.opentable.com/restref/client/?rid=1530433&domain=com&lang=en-US";

window.useHappyHour = useHappyHour;
window.useOpenStatus = useOpenStatus;
window.OPENTABLE_URL = OPENTABLE_URL;
