(function(){
  const KEY='hotel-pineta-lang';
  const DEFAULT='it';
  const SUPPORTED=['it','en','ru','uk','fr','de'];
  function norm(lang){ const raw=String(lang||'').trim().toLowerCase().split('-')[0]; return raw==='ua'?'uk':(SUPPORTED.includes(raw)?raw:DEFAULT); }
  function detect(){ try{ const saved=localStorage.getItem(KEY); if(saved) return norm(saved); }catch(_e){} return norm(navigator.language||DEFAULT); }
  let current=detect();
  const pages=window.HotelPinetaI18N||{};
  const pageKey=document.body.dataset.i18nPage||'';
  const ROOM_NAMES={
    it:{"1А":"№ 1A — camera doppia con vista giardino","1A":"№ 1A — camera doppia con vista giardino","2А":"№ 2A — camera doppia con vista mare","2A":"№ 2A — camera doppia con vista mare","3А":"№ 3A — camera tripla con vista mare","3A":"№ 3A — camera tripla con vista mare","1":"№ 1 — camera tripla con vista mare","2":"№ 2 — camera doppia con vista mare","3":"№ 3 — camera tripla con vista mare","4":"№ 4 — piccola camera doppia con vista giardino","5":"№ 5 — camera doppia con vista giardino","6":"№ 6 — camera doppia con vista mare","7":"№ 7 — camera doppia con vista mare","8":"№ 8 — camera doppia con vista mare","9":"№ 9 — camera doppia con vista mare","10":"№ 10 — camera tripla con vista mare","11":"№ 11 — piccola camera doppia con vista giardino"},
    en:{"1А":"№ 1A — double room with garden view","1A":"№ 1A — double room with garden view","2А":"№ 2A — double room with sea view","2A":"№ 2A — double room with sea view","3А":"№ 3A — triple room with sea view","3A":"№ 3A — triple room with sea view","1":"№ 1 — triple room with sea view","2":"№ 2 — double room with sea view","3":"№ 3 — triple room with sea view","4":"№ 4 — small double room with garden view","5":"№ 5 — double room with garden view","6":"№ 6 — double room with sea view","7":"№ 7 — double room with sea view","8":"№ 8 — double room with sea view","9":"№ 9 — double room with sea view","10":"№ 10 — triple room with sea view","11":"№ 11 — small double room with garden view"},
    ru:{"1А":"№ 1А — двухместный номер с видом на сад","1A":"№ 1А — двухместный номер с видом на сад","2А":"№ 2А — двухместный номер с видом на море","2A":"№ 2А — двухместный номер с видом на море","3А":"№ 3А — трехместный номер с видом на море","3A":"№ 3А — трехместный номер с видом на море","1":"№ 1 — трехместный номер с видом на море","2":"№ 2 — двухместный номер с видом на море","3":"№ 3 — трехместный номер с видом на море","4":"№ 4 — небольшой двухместный номер с видом на сад","5":"№ 5 — двухместный номер с видом на сад","6":"№ 6 — двухместный номер с видом на море","7":"№ 7 — двухместный номер с видом на море","8":"№ 8 — двухместный номер с видом на море","9":"№ 9 — двухместный номер с видом на море","10":"№ 10 — трехместный номер с видом на море","11":"№ 11 — небольшой двухместный номер с видом на сад"},
    uk:{"1А":"№ 1А — двомісний номер з видом на сад","1A":"№ 1А — двомісний номер з видом на сад","2А":"№ 2А — двомісний номер з видом на море","2A":"№ 2А — двомісний номер з видом на море","3А":"№ 3А — тримісний номер з видом на море","3A":"№ 3А — тримісний номер з видом на море","1":"№ 1 — тримісний номер з видом на море","2":"№ 2 — двомісний номер з видом на море","3":"№ 3 — тримісний номер з видом на море","4":"№ 4 — невеликий двомісний номер з видом на сад","5":"№ 5 — двомісний номер з видом на сад","6":"№ 6 — двомісний номер з видом на море","7":"№ 7 — двомісний номер з видом на море","8":"№ 8 — двомісний номер з видом на море","9":"№ 9 — двомісний номер з видом на море","10":"№ 10 — тримісний номер з видом на море","11":"№ 11 — невеликий двомісний номер з видом на сад"},
    fr:{"1А":"№ 1A — chambre double avec vue sur le jardin","1A":"№ 1A — chambre double avec vue sur le jardin","2А":"№ 2A — chambre double avec vue sur la mer","2A":"№ 2A — chambre double avec vue sur la mer","3А":"№ 3A — chambre triple avec vue sur la mer","3A":"№ 3A — chambre triple avec vue sur la mer","1":"№ 1 — chambre triple avec vue sur la mer","2":"№ 2 — chambre double avec vue sur la mer","3":"№ 3 — chambre triple avec vue sur la mer","4":"№ 4 — petite chambre double avec vue sur le jardin","5":"№ 5 — chambre double avec vue sur le jardin","6":"№ 6 — chambre double avec vue sur la mer","7":"№ 7 — chambre double avec vue sur la mer","8":"№ 8 — chambre double avec vue sur la mer","9":"№ 9 — chambre double avec vue sur la mer","10":"№ 10 — chambre triple avec vue sur la mer","11":"№ 11 — petite chambre double avec vue sur le jardin"},
    de:{"1А":"№ 1A — Doppelzimmer mit Gartenblick","1A":"№ 1A — Doppelzimmer mit Gartenblick","2А":"№ 2A — Doppelzimmer mit Meerblick","2A":"№ 2A — Doppelzimmer mit Meerblick","3А":"№ 3A — Dreibettzimmer mit Meerblick","3A":"№ 3A — Dreibettzimmer mit Meerblick","1":"№ 1 — Dreibettzimmer mit Meerblick","2":"№ 2 — Doppelzimmer mit Meerblick","3":"№ 3 — Dreibettzimmer mit Meerblick","4":"№ 4 — kleines Doppelzimmer mit Gartenblick","5":"№ 5 — Doppelzimmer mit Gartenblick","6":"№ 6 — Doppelzimmer mit Meerblick","7":"№ 7 — Doppelzimmer mit Meerblick","8":"№ 8 — Doppelzimmer mit Meerblick","9":"№ 9 — Doppelzimmer mit Meerblick","10":"№ 10 — Dreibettzimmer mit Meerblick","11":"№ 11 — kleines Doppelzimmer mit Gartenblick"}
  };
  function roomTitle(code){ const raw=String(code||''); const alt=raw.replace('A','А'); return (ROOM_NAMES[current] && (ROOM_NAMES[current][raw] || ROOM_NAMES[current][alt])) || ''; }
  function data(){ return Object.assign({}, (pages.common&&pages.common[current])||{}, (pages[pageKey]&&pages[pageKey][current])||{}); }
  function t(key, vars){ let value=data()[key] ?? ((pages.common&&pages.common[DEFAULT]&&pages.common[DEFAULT][key]) || (pages[pageKey]&&pages[pageKey][DEFAULT]&&pages[pageKey][DEFAULT][key]) || key); if(vars){ Object.keys(vars).forEach(k => value = String(value).replace(new RegExp('\\{'+k+'\\}','g'), String(vars[k]))); } return value; }
  function setButtons(){ document.querySelectorAll('.lang-btn').forEach(btn=>{ const active=btn.dataset.lang===current; btn.classList.toggle('active', active); btn.setAttribute('aria-pressed', active?'true':'false'); }); }
  function applyNodes(){
    document.documentElement.lang=current;
    document.querySelectorAll('[data-i18n]').forEach(el=>{ el.textContent=t(el.dataset.i18n); });
    document.querySelectorAll('[data-i18n-html]').forEach(el=>{ el.innerHTML=t(el.dataset.i18nHtml); });
    document.querySelectorAll('[data-i18n-placeholder]').forEach(el=>{ el.setAttribute('placeholder', t(el.dataset.i18nPlaceholder)); });
    document.querySelectorAll('[data-i18n-title]').forEach(el=>{ el.setAttribute('title', t(el.dataset.i18nTitle)); });
    document.querySelectorAll('.js-room-view').forEach(el=>{ el.textContent=t(el.dataset.view==='sea' ? 'viewSea' : 'viewGarden'); });
    document.querySelectorAll('.js-room-adults').forEach(el=>{ el.textContent=t('adultsTemplate', {value: el.dataset.value || ''}); });
    document.querySelectorAll('.js-room-children').forEach(el=>{ el.textContent=t('childrenTemplate', {value: (el.dataset.value==='1'||el.dataset.value==='true') ? t('yes') : t('no')}); });
    document.querySelectorAll('.js-booking-bool').forEach(el=>{ const map={children:'childrenField', breakfast:'breakfastField'}; const key=map[el.dataset.kind] || el.dataset.kind; el.textContent=t(key, {value:(el.dataset.value==='1'||el.dataset.value==='true') ? t('yes') : t('no')}); });
    document.querySelectorAll('.js-booking-variant').forEach(el=>{ el.textContent=(el.dataset.value==='discount') ? t('variantDiscount') : t('variantRegular'); });
    document.querySelectorAll('.js-status').forEach(el=>{ const key='status_'+(el.dataset.status||''); const val=data()[key]; if(val) el.textContent=val; });
    document.querySelectorAll('.js-booking-room').forEach(el=>{ const val=roomTitle(el.dataset.roomCode); if(val) el.textContent=val; });
    const title=data().metaTitle; if(title) document.title=title;
    const meta=data().metaDescription; const metaTag=document.querySelector('meta[name="description"]'); if(meta && metaTag) metaTag.setAttribute('content', meta);
  }
  function apply(){ setButtons(); applyNodes(); }
  document.addEventListener('click', function(e){ const btn=e.target.closest('.lang-btn'); if(!btn) return; current=norm(btn.dataset.lang); try{ localStorage.setItem(KEY,current);}catch(_e){} apply(); });
  apply();
})();
