const WS_PHOTOS = {
  exterior: [
    {
      src: "/images/exterior/59-william-street-listowel-exterior-red-facade-low-angle.webp",
      alt: "Red heritage facade of 59 William Street in Listowel",
    },
    {
      src: "/images/exterior/59-william-street-listowel-exterior-william-street-facade-sidewalk.webp",
      alt: "59 William Street townhouse facade from William Street in Listowel",
    },
    {
      src: "/images/exterior/59-william-street-listowel-exterior-d-carroll-signage-vertical.webp",
      alt: "D Carroll heritage signage on the exterior of 59 William Street",
    },
    {
      src: "/images/exterior/59-william-street-listowel-exterior-green-front-door-detail.webp",
      alt: "Green front door detail at 59 William Street Listowel",
    },
    {
      src: "/images/exterior/59-william-street-listowel-exterior-number-59-sign-detail.webp",
      alt: "Number 59 sign detail on the Listowel townhouse facade",
    },
  ],
  bedroom1Orange: makePhotoSet("bedroom-1-orange", "bedroom-1-orange-room", 5, "Bedroom 1 Orange Room"),
  bedroom2Red: makePhotoSet("bedroom-2-red", "bedroom-2-red-room", 5, "Bedroom 2 Red Room").filter((_, index) => index !== 1),
  bedroom3Green: makePhotoSet("bedroom-3-green", "bedroom-3-green-room", 2, "Bedroom 3 Green Room"),
  bedroom4Twin: makePhotoSet("bedroom-4-twin", "bedroom-4-twin-room", 9, "Bedroom 4 Twin Room").filter((_, index) => index !== 1),
  livingRoom1: makePhotoSet("living-room-2", "living-room-2", 3, "Living Room 1"),
  livingRoom2: makePhotoSet("living-room", "living-room", 5, "Living Room 2"),
  kitchen: makePhotoSet("kitchen", "kitchen", 18, "Kitchen"),
  bathroomGroundFloor: makePhotoSet("bathroom-ground-floor", "bathroom-ground-floor", 6, "Ground floor bathroom"),
  bathroomFirstFloor: makePhotoSet("bathroom-first-floor", "bathroom-first-floor", 4, "First floor bathroom"),
  bathroomThirdFloor: makePhotoSet("bathroom-third-floor", "bathroom-third-floor", 2, "Third floor bathroom"),
  diningRoom: makePhotoSet("dining-room", "dining-room", 16, "Dining Room"),
  secondFloor: makePhotoSet("second-floor", "second-floor", 7, "Second Floor Details"),
};

function makePhotoSet(folder, seoName, count, altBase) {
  return Array.from({ length: count }, (_, index) => {
    const number = String(index + 1).padStart(2, "0");
    return {
      src: `/images/rooms/${folder}/59-william-street-listowel-${seoName}-${number}.jpg`,
      alt: `${altBase} at 59 William Street, Listowel`,
    };
  });
}

function src(set, index = 0) {
  return WS_PHOTOS[set][index].src;
}

function photoSet(set, featuredIndex = 0) {
  const photos = WS_PHOTOS[set] || [];
  const featured = photos[featuredIndex] || photos[0];
  if (!featured) return [];
  return [featured, ...photos.filter((photo) => photo.src !== featured.src)];
}

function galleryItems(set, cat, featuredIndex = 0) {
  return photoSet(set, featuredIndex).map((photo) => ({ ...photo, cat, tall: false }));
}

const WS_GALLERY_ITEMS = [
  ...photoSet("exterior").map((photo) => ({ ...photo, cat: "Exterior", tall: true })),
  ...galleryItems("livingRoom1", "Living Room 1"),
  ...galleryItems("livingRoom2", "Living Room 2"),
  ...galleryItems("diningRoom", "Dining Room", 1),
  ...galleryItems("kitchen", "Kitchen", 11),
  ...galleryItems("bedroom1Orange", "Bedroom 1 · Orange Room", 4),
  ...galleryItems("bedroom2Red", "Bedroom 2 · Red Room"),
  ...galleryItems("bedroom3Green", "Bedroom 3 · Green Room"),
  ...galleryItems("bedroom4Twin", "Bedroom 4 · Twin Room", 3),
  ...galleryItems("bathroomGroundFloor", "Ground Floor Bathroom", 5),
  ...galleryItems("bathroomFirstFloor", "First Floor Bathroom"),
  ...galleryItems("bathroomThirdFloor", "Third Floor Bathroom"),
  ...galleryItems("secondFloor", "Second Floor Details"),
];

window.WS_PHOTOS = WS_PHOTOS;
window.WS_GALLERY_ITEMS = WS_GALLERY_ITEMS;
window.WS_PHOTO_SRC = src;
window.WS_PHOTO_SET = photoSet;
