1/** 2 * Zante Maris Suites â shared header injector 3 * Reads data-page attribute from <body> to mark active nav item. 4 * Usage: <body data-page="about"> etc. 5 * Pages: home, about, suites, food, wellness, gallery, contact 6 */ 7(function () { 8 var pages = ['home', 'about', 'suites', 'food', 'wellness', 'gallery', 'contact']; 9 var links = { 10 home: 'https://zantemarissuites.gr/', 11 about: '/about.html', 12 suites: '/suites.html', 13 food: '/food-drink.html', 14 wellness: '/wellness.html', 15 gallery: '/gallery.html', 16 contact: '/contact.html' 17 }; 18 var labels = { 19 home: 'Home', 20 about: 'About', 21 suites: 'Suites', 22 food: 'Food & Drink', 23 wellness: 'Wellness', 24 gallery: 'Photo Gallery', 25 contact: 'Contact' 26 }; 27 28 function navItem(page, currentPage) { 29 var isCurrent = page === currentPage ? ' class="current"' : ''; 30 var href = links[page]; 31 var key = page === 'home' ? 'nav.home' : page === 'food' ? 'nav.food' : 'nav.' + page; 32 var label = labels[page] || page; 33 return '<li' + isCurrent + '><a href="' + href + '" data-i18n="' + key + '">' + label + '</a></li>'; 34 } 35 36 function detectLang() { 37 if (window.location.pathname.indexOf('/el/') === 0 || window.location.pathname === '/el') { 38 return 'el'; 39 } 40 var stored = localStorage.getItem('zms_lang'); 41 if (stored === 'en' || stored === 'el') return stored; 42 var browser = (navigator.language || '').substring(0, 2).toLowerCase(); 43 return browser === 'el' ? 'el' : 'en'; 44 } 45 46 function langHref(targetLang) { 47 var path = window.location.pathname || '/'; 48 var search = window.location.search || ''; 49 var hash = window.location.hash || ''; 50 var isGreekPath = path.indexOf('/el/') === 0 || path === '/el'; 51 var normalizedPath = path; 52 53 if (isGreekPath) { 54 normalizedPath = path === '/el' ? '/' : path.replace(/^\/el\//, '/'); 55 } 56 57 if (targetLang === 'el') { 58 // Root goes to /el/, inner pages map to /el/<page>. 59 var greekPath = normalizedPath === '/' ? '/el/' : '/el' + normalizedPath; 60 return greekPath + search + hash; 61 } 62 63 return normalizedPath + search + hash; 64 } 65 66 function langItems(currentLang) { 67 var enClass = currentLang === 'en' ? ' class="lang-menu-item current"' : ' class="lang-menu-item"'; 68 var elClass = currentLang === 'el' ? ' class="lang-menu-item current"' : ' class="lang-menu-item"'; 69 var enHref = langHref('en'); 70 var elHref = langHref('el'); 71 return ( 72 '<li' + enClass + '><a href="' + enHref + '" class="lang-link" data-lang="en" data-i18n="nav.lang.en" onclick="localStorage.setItem(\'zms_lang\',\'en\')">EN</a></li>' + 73 '<li' + elClass + '><a href="' + elHref + '" class="lang-link" data-lang="el" data-i18n="nav.lang.el" onclick="localStorage.setItem(\'zms_lang\',\'el\')">GR</a></li>' 74 ); 75 } 76 77 function render() { 78 var currentPage = document.body.getAttribute('data-page') || 'home'; 79 var currentLang = detectLang(); 80 81 var navItems = pages.map(function(p) { return navItem(p, currentPage); }).join(''); 82 var langNavItems = langItems(currentLang); 83 84 var html = 85 '<!-- Mobile Menu -->' + 86 '<aside class="side-navigation-wrapper enter-right" data-no-scrollbar data-animation="push-in">' + 87 '<div class="side-navigation-scroll-pane">' + 88 '<div class="side-navigation-inner">' + 89 '<div class="side-navigation-header">' + 90 '<div class="navigation-hide side-nav-hide">' + 91 '<a href="#"><span class="icon-cancel medium"></span></a>' + 92 '</div>' + 93 '</div>' + 94 '<nav class="side-navigation">' + 95 '<ul>' + 96 navItems + 97 langNavItems + 98 '</ul>' + 99 '</nav>' + 100 '<div class="side-navigation-footer">' + 101 '<p class="copyright no-margin-bottom">© Zante Maris Suites.</p>' + 102 '</div>' + 103 '</div>' + 104 '</div>' + 105 '</aside>' + 106 '<div class="wrapper">' + 107 '<div class="wrapper-inner">' + 108 '<!-- Header -->' + 109 '<header class="header header-absolute header-fixed-on-mobile header-transparent" data-bkg-threshold="1000" data-compact-threshold="1000">' + 110 '<div class="header-inner">' + 111 '<div class="row nav-bar">' + 112 '<div class="column width-12 nav-bar-inner">' + 113 '<div class="logo">' + 114 '<div class="logo-inner">' + 115 '<a href="https://zantemarissuites.gr/"><img src="/images/logo-small.png" alt="Zante Maris Suites Logo" /></a>' + 116 '<a href="https://zantemarissuites.gr/"><img src="/images/logo.png" alt="Zante Maris Suites Logo" /></a>' + 117 '</div>' + 118 '</div>' + 119 '<nav class="navigation nav-block secondary-navigation nav-right">' + 120 '<ul>' + 121 '<li>' + 122 '<div class="v-align-middle">' + 123 '<a href="//zantemarissuites.reserve-online.net" target="_blank" class="button small pull-right no-margin-bottom" data-i18n="nav.book">Book A Suite</a>' + 124 '</div>' + 125 '</li>' + 126 '<li class="aux-navigation hide">' + 127 '<a href="#" class="navigation-show side-nav-show nav-icon"><span class="icon-menu"></span></a>' + 128 '</li>' + 129 '</ul>' + 130 '</nav>' + 131 '<nav class="navigation nav-block primary-navigation nav-right">' + 132 '<ul>' + 133 navItems + 134 langNavItems + 135 '</ul>' + 136 '</nav>' + 137 '</div>' + 138 '</div>' + 139 '</div>' + 140 '</header>'; 141 142 var target = document.getElementById('site-header'); 143 if (target) { 144 target.outerHTML = html; 145 } 146 147 // Apply translations immediately after injection 148 if (window.ZMI18n && ZMI18n.applyTranslations) { 149 ZMI18n.applyTranslations(); 150 } 151 } 152 153 // Render as early as possible so Timber can bind mobile-menu handlers. 154 function boot() { 155 // If placeholder is not in DOM yet, wait briefly and retry. 156 if (!document.getElementById('site-header')) { 157 setTimeout(boot, 10); 158 return; 159 } 160 render(); 161 } 162 163 boot(); 164})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.