1 2<!DOCTYPE html> 3<html lang="en" class="no-js"> 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 8 <!-- Google Fonts: Montserrat & Inter --> 9 <link rel="preconnect" href="https://fonts.googleapis.com"> 10 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 11 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Oswald:wght@500;600;700&display=swap" rel="stylesheet"> 12 13
13<script> 14 document.documentElement.classList.remove('no-js'); 15 document.documentElement.classList.add('scroll-animate'); 16 </script>
16 17 18
18<script type="application/ld+json" id="naseby-business-schema"> 19 {"@context":"https://schema.org","@type":"LodgingBusiness","@id":"https://nasebyapartments.co.nz/#business","name":"Naseby Apartments","url":"https://nasebyapartments.co.nz/","telephone":"+64 3 444 8222","address":{"@type":"PostalAddress","streetAddress":"26 Derwent Street","addressLocality":"Naseby","postalCode":"9354","addressRegion":"Central Otago","addressCountry":"NZ"},"image":"https://nasebyapartments.co.nz/wp-content/uploads/2025/11/legacy_img-66.webp","priceRange":"$$","aggregateRating":{"@type":"AggregateRating","ratingValue":4.4,"bestRating":5,"worstRating":1,"reviewCount":222}} </script>
19 20 21<title>Comfortable accommodation in Naseby | Naseby Apartments</title> 22 23<!-- The SEO Framework by Sybre Waaijer --> 24<meta name="robots" content="max-snippet:-1,max-image-preview:large,max-video-preview:-1" /> 25<link rel="canonical" href="https://nasebyapartments.co.nz/" /> 26<meta name="description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." /> 27<meta property="og:type" content="website" /> 28<meta property="og:locale" content="en_GB" /> 29<meta property="og:site_name" content="Naseby Apartments" /> 30<meta property="og:title" content="Comfortable accommodation in Naseby | Naseby Apartments" /> 31<meta property="og:description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." /> 32<meta property="og:url" content="https://nasebyapartments.co.nz/" /> 33<meta property="og:image" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon.png" /> 34<meta property="og:image:width" content="512" /> 35<meta property="og:image:height" content="512" /> 36<meta property="og:image:alt" content="Naseby Apartments - Favicon" /> 37<meta name="twitter:card" content="summary_large_image" /> 38<meta name="twitter:title" content="Comfortable accommodation in Naseby | Naseby Apartments" /> 39<meta name="twitter:description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." /> 40<meta name="twitter:image" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon.png" /> 41<meta name="twitter:image:alt" content="Naseby Apartments - Favicon" /> 42<!-- / The SEO Framework by Sybre Waaijer | 3.20ms meta | 0.58ms boot --> 43 44<link rel='dns-prefetch' href='//cdn-reach.hostinger.com' /> 45<link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> 46<link rel='dns-prefetch' href='//apps.elfsight.com' /> 47<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 48<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 49<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://nasebyapartments.co.nz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnasebyapartments.co.nz%2F" /> 50<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://nasebyapartments.co.nz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnasebyapartments.co.nz%2F&format=xml" /> 51<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'> 52img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 53/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 54</style> 55 56<style id='wp-emoji-styles-inline-css' type='text/css'> 57 58 img.wp-smiley, img.emoji { 59 display: inline !important; 60 border: none !important; 61 box-shadow: none !important; 62 height: 1em !important; 63 width: 1em !important; 64 margin: 0 0.07em !important; 65 vertical-align: -0.1em !important; 66 background: none !important; 67 padding: 0 !important; 68 } 69/*# sourceURL=wp-emoji-styles-inline-css */ 70</style> 71<link rel='stylesheet' id='wp-block-library-css' href='https://nasebyapartments.co.nz/wp-includes/css/dist/block-library/style.min.css?ver=6.9.9' type='text/css' media='all' /> 72 73<style id='classic-theme-styles-inline-css' type='text/css'> 74/*! This file is auto-generated */ 75.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 76/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 77</style> 78<style id='global-styles-inline-css' type='text/css'> 79:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
790) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
79.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 80/*# sourceURL=global-styles-inline-css */ 81</style> 82 83<link rel='stylesheet' id='contact-form-7-css' href='https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.4' type='text/css' media='all' /> 84<link rel='stylesheet' id='wpcf7-redirect-script-frontend-css' href='https://nasebyapartments.co.nz/wp-content/plugins/wpcf7-redirect/build/assets/frontend-script.css?ver=2c532d7e2be36f6af233' type='text/css' media='all' /> 85<link rel='stylesheet' id='naseby-style-css' href='https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/style.css?ver=1773367812' type='text/css' media='all' /> 86<link rel='stylesheet' id='glightbox-css-css' href='https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/css/glightbox.min.css?ver=6.9.9' type='text/css' media='all' /> 87<link rel='stylesheet' id='swiper-css-css' href='https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css?ver=11.0.0' type='text/css' media='all' /> 88<link rel='stylesheet' id='font-awesome-6-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css?ver=6.5.1' type='text/css' media='all' /> 89<style id='wp-block-heading-inline-css' type='text/css'> 90h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} 91/*# sourceURL=https://nasebyapartments.co.nz/wp-includes/blocks/heading/style.min.css */ 92</style> 93<link rel='stylesheet' id='popup-maker-site-css' href='//nasebyapartments.co.nz/wp-content/uploads/pum/pum-site-styles.css?generated=1765879952&ver=1.25.0' type='text/css' media='all' />
94<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 94
94
95<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
vendor: 1 bytes, line 95
95
96<script type="text/javascript" src="https://apps.elfsight.com/p/platform.js" id="elfsight-platform-js" defer="defer" data-wp-strategy="defer"></script>
96 97 98<!-- Google tag (gtag.js) snippet added by Site Kit --> 99<!-- Google Analytics snippet added by Site Kit -->
vendor: 81 bytes, lines 99-100
99 100<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=
100GT-B7DVP7J9
vendor: 40 bytes, line 100
100" id="google_gtagjs-js" async></script>
101<script type="text/javascript" id="google_gtagjs-js-after"> 102/* <![CDATA[ */ 103window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);} 104gtag("set","linker",{"domains":["nasebyapartments.co.nz"]}); 105gtag("js", new Date()); 106gtag("set", "developer_id.dZTNiMT", true); 107gtag("config", "GT-B7DVP7J9"); 108 window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.throttledEvents = []; window._googlesitekit.gtagEvent = (name, data) => { var key = JSON.stringify( { name, data } ); if ( !! window._googlesitekit.throttledEvents[ key ] ) { return; } window._googlesitekit.throttledEvents[ key ] = true; setTimeout( () => { delete window._googlesitekit.throttledEvents[ key ]; }, 5 ); gtag( "event", name, { ...data, event_source: "site-kit" } ); }; 109//# sourceURL=google_gtagjs-js-after 110/* ]]> */ 111</script>
111 112<link rel="https://api.w.org/" href="https://nasebyapartments.co.nz/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://nasebyapartments.co.nz/wp-json/wp/v2/pages/38" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://nasebyapartments.co.nz/xmlrpc.php?rsd" /> 113<meta name="generator" content="Site Kit by Google 1.187.0" /><meta name="google-site-verification" content="zqLkEH62OnWfYXKiHQW-PFnq0M8EaaqgzeaLu1IUxds"> 114<!-- Google Tag Manager snippet added by Site Kit -->
115<script type="text/javascript"> 116/* <![CDATA[ */
vendor: 421 bytes, lines 116-126
116 117 118 ( function( w, d, s, l, i ) { 119 w[l] = w[l] || []; 120 w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} ); 121 var f = d.getElementsByTagName( s )[0], 122 j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : ''; 123 j.async = true; 124 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 125 f.parentNode.insertBefore( j, f ); 126 } )( window, document, 'script', 'dataLayer', '
126GTM-NJRMGKGJ
vendor: 9 bytes, lines 126-127
126' ); 127
128/* ]]> */ 129</script>
129 130 131<!-- End Google Tag Manager snippet added by Site Kit --> 132<link rel="icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-150x150.png" sizes="32x32" /> 133<link rel="icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" sizes="192x192" /> 134<link rel="apple-touch-icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" /> 135<meta name="msapplication-TileImage" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" /> 136 137</head> 138<body class="home wp-singular page-template-default page page-id-38 wp-theme-naseby-theme"> 139 <!-- Google Tag Manager (noscript) snippet added by Site Kit -->
vendor: 74 bytes, lines 139-141
139 140 <noscript> 141 <iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-NJRMGKGJ
vendor: 88 bytes, lines 141-143
141" height="0" width="0" style="display:none;visibility:hidden"></iframe> 142 </noscript> 143
143<!-- End Google Tag Manager (noscript) snippet added by Site Kit --> 144 145 146<header> 147 <div class="header-inner"> 148 <a href="https://nasebyapartments.co.nz" class="logo-block"> 149 <img 150 src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/NasebyApartments-Logo_white.webp" 151 alt="Naseby Apartments" 152 class="logo-img" 153 decoding="async" 154 fetchpriority="high"> 155 </a> 156 <input type="checkbox" id="nav-toggle" class="nav-toggle"> 157 <label for="nav-toggle" class="nav-toggle-label"> 158 <span></span> 159 </label> 160 <div class="header-right"> 161 <nav> 162 <a href="https://nasebyapartments.co.nz">Home</a> 163 <a href="https://nasebyapartments.co.nz/apartments">Apartments</a> 164 165 <div class="nav-dropdown"> 166 <a href="https://nasebyapartments.co.nz/things-to-do" class="nav-parent nav-parent-desktop"> 167 Things to do 168 <span class="nav-arrow" aria-hidden="true"></span> 169 </a> 170 171 <input type="checkbox" id="nav-ttd-toggle" class="nav-sub-toggle"> 172 <label for="nav-ttd-toggle" class="nav-parent nav-parent-mobile"> 173 Things to do 174 <span class="nav-arrow" aria-hidden="true"></span> 175 </label> 176 177 <div class="nav-dropdown-menu"> 178 <a href="https://nasebyapartments.co.nz/things-to-do">All things to do</a> 179 <a href="https://nasebyapartments.co.nz/things-to-do-outdoor-and-offroad-adventures">Outdoor & off-road adventures</a> 180 <a href="https://nasebyapartments.co.nz/things-to-do-mountain-biking-rail-trail">Mountain biking & Rail Trail</a> 181 <a href="https://nasebyapartments.co.nz/things-to-do-winter-in-naseby">Winter in Naseby</a> 182 <a href="https://nasebyapartments.co.nz/things-to-do-family-holidays">Family holidays</a> 183 <a href="https://nasebyapartments.co.nz/things-to-do-couples-and-quiet-stays">Couples and quiet stays</a> 184 <a href="https://nasebyapartments.co.nz/things-to-do-stargazing-dark-sky">Stargazing & Dark Sky</a> 185 </div> 186 </div> 187 188 <a href="https://nasebyapartments.co.nz/groups-and-events">Groups and events</a> 189 <a href="https://nasebyapartments.co.nz/guest-information">Guest information</a> 190 <a href="https://nasebyapartments.co.nz/gallery">Gallery</a> 191 <a href="https://nasebyapartments.co.nz/contact">Contact</a> 192 </nav> 193 <a href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&JDRN=Y" class="btn-primary">Book now</a> 194 </div> 195 </div> 196</header> 197 198 199<section class="hero"> 200 <div class="hero-inner"> 201 <div class="smart-placeholder hero-type"> 202 <img width="1024" height="765" src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains.webp" class="hero-image" alt="Naseby Apartments with surrounding forest" loading="eager" fetchpriority="high" decoding="async" sizes="(max-width: 900px) calc(100vw - 48px), 470px" srcset="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains.webp 1024w, https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains-300x224.webp 300w, https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains-768x574.webp 768w" /> </div> 203 <div class="hero-text"> 204 <h1>Naseby Apartments - self-contained accommodation in Naseby, Central Otago</h1> 205 <div class="intro-text"><p><strong>Naseby Apartments (formerly Naseby Lodge)</strong> offer self-contained accommodation with a natural sense of space, comfort and serenity on the grounds of the old Naseby School, right in the heart of the historic alpine town of Naseby. Set 2,000 ft above worry level in the Maniototo region, you can settle into your own apartment with quiet forest and the wider Central Otago landscapes all within easy reach.</p></div> 206 <div class="hero-support"><p>Perfect for couples, families and groups looking for a space to unwind, clear night skies and a genuinely relaxed stay.</p></div> 207 208 <div class="hero-cta"> 209 <a href="https://nasebyapartments.co.nz/apartments" class="btn-primary">View apartments</a> 210 <a href="https://nasebyapartments.co.nz/things-to-do" class="btn-secondary">See things to do in Naseby</a> 211 </div> 212 </div> 213 </div> 214</section> 215 216 217<div class="booking-widget-wrapper"> 218 <h2 class="booking-widget-header">Book direct</h2> 219 220 <div id="quickbook-widget-962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz-962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz"
220class="Configure-quickBook-Widget"></div> 221 222 <div class="booking-widget-loading">Loading reservation widgetâ¦</div> 223 224 <div class="booking-widget-timeout-message"> 225 This is taking longer than usual. Use the booking page: 226 </div> 227 228 <a class="booking-widget-fallback-link" href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&JDRN=Y"> 229 Open booking page 230 </a> 231 232 <a class="booking-agent-login-link" href="#popmake-1272"> 233 Agent login 234 </a> 235 </div> 236 237
238<script src="https://bookdirect.prenohq.com/cwplugin/displaywidget/preview/booking-service.min.js?propertyId=962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz&scriptId=962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz" id="propInfo" defer></script>
238 239
240<script> 241(function () { 242 function getTimeoutMs() { 243 var base = 30000; 244 try { 245 var c = navigator.connection || navigator.mozConnection || navigator.webkitConnection; 246 if (!c || !c.effectiveType) return base; 247 var t = String(c.effectiveType).toLowerCase(); 248 if (t === "slow-2g") return 75000; 249 if (t === "2g") return 60000; 250 if (t === "3g") return 45000; 251 if (t === "4g") return 30000; 252 return base; 253 } catch (e) { 254 return base; 255 } 256 } 257 258 function initOne(wrapper) { 259 if (!wrapper || wrapper.dataset.widgetInit === "1") return; 260 261 var widget = wrapper.querySelector(".Configure-quickBook-Widget"); 262 if (!widget) return; 263 264 wrapper.dataset.widgetInit = "1"; 265 266 var FAIL_AFTER_MS = getTimeoutMs(); 267 var HARD_STOP_MS = 180000; 268 269 function isWidgetReady() { 270 if (widget.querySelector(".MbsSearchWidget")) return true; 271 if (widget.querySelector(".App")) return true; 272 if (widget.children && widget.children.length > 0) return true; 273 return false; 274 } 275 276 function insertCustomLink() { 277 if (window.innerWidth <= 768) return; 278 279 var inputRoomDiv = widget.querySelector(".input.inputRoom"); 280 if (!inputRoomDiv) return; 281 282 if (inputRoomDiv.querySelector(".custom-add-apartment-link")) return; 283 284 var link = document.createElement("div"); 285 link.className = "custom-add-apartment-link"; 286 link.innerText = "+ Add apartments"; 287 288 link.addEventListener("click", function () { 289 var originalBtn = widget.querySelector(".input.inputRoom .d-flex.checkinDate > span"); 290 if (originalBtn) originalBtn.click(); 291 }); 292 293 inputRoomDiv.appendChild(link); 294 } 295 296 function updateCustomLinkState() { 297 if (window.innerWidth <= 768) return; 298 299 var originalBtn = widget.querySelector(".input.inputRoom .d-flex.checkinDate > span"); 300 var customLink = widget.querySelector(".custom-add-apartment-link"); 301 302 if (originalBtn && customLink) { 303 var currentText = (originalBtn.innerText || "").trim(); 304 customLink.style.display = (currentText === "+") ? "block" : "none"; 305 } 306 } 307 308 function markAsLoaded() { 309 wrapper.classList.add("booking-widget-loaded"); 310 wrapper.classList.remove("booking-widget-timeout"); 311 insertCustomLink(); 312 updateCustomLinkState(); 313 } 314 315 function markAsTimeout() { 316 wrapper.classList.add("booking-widget-timeout"); 317 } 318 319 if (isWidgetReady()) { 320 markAsLoaded(); 321 return; 322 } 323 324 var startedAt = Date.now(); 325 var timeoutShown = false; 326 327 function scan() { 328 if (isWidgetReady()) { 329 markAsLoaded(); 330 return true; 331 } 332 333 var elapsed = Date.now() - startedAt; 334 if (!timeoutShown && elapsed >= FAIL_AFTER_MS) { 335 timeoutShown = true; 336 markAsTimeout(); 337 } 338 339 return false; 340 } 341 342 var observer = new MutationObserver(function () { 343 if (scan()) { 344 observer.disconnect(); 345 } else { 346 insertCustomLink(); 347 updateCustomLinkState(); 348 } 349 }); 350 351 observer.observe(widget, { childList: true, subtree: true }); 352 353 var poll = setInterval(function () { 354 if (scan()) { 355 clearInterval(poll); 356 observer.disconnect(); 357 return; 358 } 359 360 if ((Date.now() - startedAt) >= HARD_STOP_MS) { 361 clearInterval(poll); 362 observer.disconnect(); 363 } 364 }, 700); 365 366 window.addEventListener("resize", function () { 367 insertCustomLink(); 368 updateCustomLinkState(); 369 }); 370 } 371 372 function initAll() { 373 var list = document.querySelectorAll(".booking-widget-wrapper"); 374 for (var i = 0; i < list.length; i++) initOne(list[i]); 375 } 376 377 if (document.readyState === "loading") { 378 document.addEventListener("DOMContentLoaded", initAll); 379 } else { 380 initAll(); 381 } 382 383 setTimeout(initAll, 0); 384})(); 385</script>
385 386 387 388 389 390 <main> 391 <section id="why-stay"> 392 <h2>Why stay at Naseby Apartments</h2> 393 <p>Naseby is known for its calm atmosphere, star-filled skies and easy access to forest walks, mountain biking and iconic Central Otago scenery. From our apartments you can reach the town, the forest and local attractions within minutes, with biking trails and offroad routes close by for anyone wanting more adventure.</p> 394<p>Our self-contained apartments are designed for longer stays as well as short breaks. You can settle in, cook your own meals, catch up on a series, or simply sit with a book and enjoy the quiet.</p> 395 <h3>Key benefits</h3> 396 <ul> 397<li>Self-contained 1 and 2 bedroom apartments with separate living areas</li> 398<li>Fully equipped kitchens for easy self-catering</li> 399<li>Fast Wi-Fi and smart TVs for evenings in</li> 400<li>Warm, insulated apartments for winter stays and cool summer nights</li> 401<li>Located in New Zealandâs first International Dark Sky Community, perfect for stargazing right from your apartment deck</li> 402<li>On-site parking and level access to most apartments</li> 403<li>Peaceful setting close to forest tracks and town amenities</li> 404<li>Proudly 100% NZ owned and operated</li> 405</ul> 406 <p class="inline-cta">Learn more about our apartment types on the <a href="https://nasebyapartments.co.nz/apartments">Apartments page</a>. You can also browse more photos of the apartments and surroundings in our <a href="https://nasebyapartments.co.nz/gallery">gallery</a>.</p> 407 </section> 408 409 <section id="stay-longer"> 410 <h2>Make the most of your stay</h2> 411 <p>We recommend staying 2-3 nights to truly unwind without rushing. It gives you time to settle in, walk in the forest, try an activity or two, and explore nearby towns like Ranfurly, Alexandra and Clyde. Historic villages such as Ophir are just a short drive away, adding even more to discover.</p> 412 413<p>Staying longer also increases your chances of a clear night for stargazing. Naseby sits within New Zealandâs first International Dark Sky Community, so on a good night you can step outside and see a bright, detailed night sky right from your deck.</p> 414 <p class="inline-cta">Plan a stay that gives you time to unwind, and check availability for your preferred dates on the <a href="https://nasebyapartments.co.nz/apartments">Apartments page</a>. For practical details before you arrive, see our <a href="https://nasebyapartments.co.nz/guest-information">Guest information</a> page.</p> 415 </section> 416 417 <section id="apartments"> 418 <h2>Spacious, easy-going apartments</h2> 419 <div class="activity-block"> 420 <div class="two-column two-column-right"> 421 <div> 422 <p>Whether you are here to ride the trails, curl on ice, explore Central Otago or simply rest, our apartments are set up to make things easy. Arrive, unpack, stock the fridge and treat Naseby as your own quiet base in the hills.</p> <ul> 423<li>Six spacious one-bedroom apartments - ideal for singles and couples</li> 424<li>Two generous two-bedroom apartments - perfect for families and small groups</li> 425<li>All apartments include kitchens, dining space and comfortable lounges</li> 426</ul> 427 <div class="inline-cta"> 428 <a href="https://nasebyapartments.co.nz/apartments" class="btn-primary">View apartment options</a> 429 </div> 430 </div> 431 <div class="image-col image-col-right"> 432 <div class="smart-placeholder side-type"> 433 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Exterior7.webp" alt="Patio - One-Bedroom Garden Apartment" > 434 </div> 435 </div> 436 </div> 437 </div> 438 </section> 439 440 <section id="guest-reviews" class="reviews-block"> 441 <div class="elfsight-app-0b6d73e2-3aaa-4f7b-86d8-31378d54634a"></div> 442 </section> 443 444 <section id="things-to-do"> 445 <h2>Explore Naseby and Central Otago</h2> 446 <p>Naseby makes it easy to explore the outdoors, enjoy forest trails and discover the areaâs gold-mining heritage at your own pace. From quiet paths and high-country scenery to crystal-clear night skies, everything sits within a short walk or drive from your apartment.</p> 447 <div class="tiles-row"> 448 <!-- Tile 1 --> 449 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-outdoor-and-offroad-adventures"> 450 <div class="smart-placeholder tile-type"> 451 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/OutdoorAdventures.webp" alt="4WD tracks in the Maniototo scenery" class="tile-image"> 452 </div> 453 <div class="tile-content"> 454 <div class="tile-title">Outdoor and off-road adventures</div> 455 <p>Forest paths, backcountry roads and easy 4WD routes open the landscape for slow exploring, scenic loops and simple outdoor time.</p> <p class="inline-cta"><span class="fake-link">Learn more about outdoor and off-road adventures</span></p> 456 </div> 457 </a> 458 459 <!-- Tile 2 --> 460 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-mountain-biking-rail-trail"> 461 <div class="smart-placeholder tile-type"> 462 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/RailTrail.webp" alt="Bikers riding the Central Otago Rail Trail" class="tile-image"> 463 </div> 464 <div class="tile-content"> 465 <div class="tile-title">Mountain biking & Rail Trail</div> 466 <p>A blend of shaded forest riding, wide Rail Trail views and peaceful backroads gives you multiple ways to explore on two wheels.</p> <p class="inline-cta"><span class="fake-link">Learn more about mountain biking and rail trail</span></p> 467 </div> 468 </a> 469 470 <!-- Tile 3 --> 471 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-winter-in-naseby"> 472 <div class="smart-placeholder tile-type"> 473 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/WinterInNaseby.webp" alt="Family ice skating at Maniototo Adventure Park" class="tile-image"> 474 </div> 475 <div class="tile-content"> 476 <div class="tile-title">Winter in Naseby</div> 477 <p>Winter in this small alpine town will surprise you with ice skating, the only dedicated curling stadium in the Southern Hemisphere, the famous ice luge and crisp forest walks, followed by quiet, cosy evenings in a warm apartment.</p> <p class="inline-cta"><span class="fake-link">Learn more about winter in Naseby</span></p> 478 </div> 479 </a> 480 481 <!-- Tile 4 --> 482 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-family-holidays"> 483 <div class="smart-placeholder tile-type"> 484 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/FamilyHolidays.webp" alt="Family enjoying the afternoon at the Naseby swimming dem" class="tile-image"> 485 </div> 486 <div class="tile-content"> 487 <div class="tile-title">Family holidays</div> 488 <p>Gentle biking, forest walks, summer swimming and the local Maniototo Adventure Park make Naseby ideal for family-friendly adventures with lots to discover.</p> <p class="inline-cta"><span class="fake-link">Learn more about family holidays</span></p> 489 </div> 490 </a> 491 492 <!-- Tile 5 --> 493 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-couples-and-quiet-stays"> 494 <div class="smart-placeholder tile-type"> 495 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/Couples.webp" alt="Couple walking in Naseby forest" class="tile-image"> 496 </div> 497 <div class="tile-content"> 498 <div class="tile-title">Couples and quiet stays</div> 499 <p>Slow mornings, forest walks, gentle evenings and clear night skies make Naseby a perfect place to unwind in your own way.</p> <p class="inline-cta"><span class="fake-link">Learn more about couples and quiet stays</span></p> 500 </div> 501 </a> 502 503 <!-- Tile 6 --> 504 <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-stargazing-dark-sky"> 505 <div class="smart-placeholder tile-type"> 506 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/NightSky.webp" alt="Stargazing at Naseby during a clear night" class="tile-image"> 507 </div> 508 <div class="tile-content"> 509 <div class="tile-title">Stargazing and Dark Sky</div> 510 <p>Naseby forms part of New Zealandâs first International Dark Sky Community, offering some of the clearest night skies in the country. On a still night you can see the Milky Way in striking detail right from your apartment deck.</p> <p class="inline-cta"><span class="fake-link">Learn more about stargazing and dark sky</span></p> 511 </div> 512 </a> 513 </div> 514 515 <div class="tile tile-spacer"></div> 516 <p class="inline-cta" style="margin-top:16px;">See an overview of all activities on the <a href="https://nasebyapartments.co.nz/things-to-do">Things to do page</a>.</p> 517 </section> 518 519 <section id="groups-events"> 520 <h2>Groups and events</h2> 521 <p>Naseby Apartments can host small groups looking for a quiet place to stay together with plenty of space. We often host team retreats, sports groups, cycling crews, motorbike groups exploring Central Otago and extended family gatherings - giving everyone their own space with the convenience of staying on one site.</p> 522 <p>Our property includes a licensed restaurant for event use, suitable for tailor-made dinners, private functions or group catering. We also have our own conference centre, accommodating up to 50 delegates, making Naseby Apartments a practical option for small meetings, training sessions and focused work retreats.</p> 523 <p>The combination of multiple apartments, shared outdoor areas and dedicated event spaces makes it easy to balance time together with plenty of personal space.</p> <p class="inline-cta"><a href="https://nasebyapartments.co.nz/groups-and-events">Learn more about groups and events</a>.</p> 524 </section> 525 526 <section id="final-cta" class="final-cta"> 527 <h2>Ready to plan your stay in Naseby?</h2> 528 <p>Make Naseby Apartments your quiet base in Central Otago. Whether you are planning an adventure, a quiet break or time with family, our spacious apartments have everything ready for you. Arrive, unpack, and let the relaxation begin. Book direct for our best rates and the most accurate availability.</p> <h2></h2> 529 530 <div class="final-cta-buttons"> 531 <a href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&JDRN=Y" class="btn-primary"> 532 Check availability and rates </a> 533 534 <a href="/contact" class="btn-secondary"> 535 Contact us </a> 536 </div> 537 </section> 538 </main> 539 540
541<script> 542 (function() { 543 document.body.classList.add('loaded'); 544 545 const observerOptions = { 546 root: null, 547 rootMargin: '0px', 548 threshold: 0.1 549 }; 550 551 const observer = new IntersectionObserver((entries, observerInstance) => { 552 entries.forEach(entry => { 553 if (entry.isIntersecting) { 554 entry.target.classList.add('is-visible'); 555 observerInstance.unobserve(entry.target); 556 } 557 }); 558 }, observerOptions); 559 560 const contentElements = document.querySelectorAll('section:not(.hero), .tile, .highlight-box, .gallery-item'); 561 562 contentElements.forEach(el => { 563 observer.observe(el); 564 565 const rect = el.getBoundingClientRect(); 566 if (rect.top < window.innerHeight * 0.9) { 567 el.classList.add('is-visible'); 568 } 569 }); 570 571 const placeholders = document.querySelectorAll('.smart-placeholder'); 572 placeholders.forEach(el => { 573 const img = el.querySelector('img'); 574 if (!img) { 575 el.classList.add('is-empty'); 576 } else { 577 if (img.complete && img.naturalHeight !== 0) { 578 el.classList.add('img-loaded'); 579 } else { 580 img.addEventListener('load', () => el.classList.add('img-loaded')); 581 img.addEventListener('error', () => el.classList.add('is-empty')); 582 } 583 } 584 }); 585 586 const navToggle = document.getElementById('nav-toggle'); 587 if (navToggle) { 588 navToggle.addEventListener('change', function() { 589 if (this.checked) { 590 document.body.classList.add('no-scroll'); 591 } else { 592 document.body.classList.remove('no-scroll'); 593 } 594 }); 595 } 596 597 window.pageObserver = observer; 598 })(); 599</script>
599 600 601 602 <footer class="site-footer"> 603 <div class="footer-mountains" aria-hidden="true"></div> 604 605 <div class="footer-content"> 606 <div class="footer-inner"> 607 608 <div class="footer-partners"> 609 <h4>Our Partners</h4> 610 <div class="partners-grid"> 611 612 <a href="https://offroad.co.nz" target="_blank" rel="noopener" class="partner-item link-active"> 613 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/offroad-logo-high.webp" alt="offroad-logo-high" class="partner-logo-img"> 614 </a> 615 616 617 <a href="https://maniototoadventurepark.co.nz" target="_blank" rel="noopener" class="partner-item link-active"> 618 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Maniototo-Adventure-Park-Logo-Ice.webp" alt="Maniototo Adventure Park" class="partner-logo-img"> 619 </a> 620 621 622 <a href="https://nzcycletrail.com" target="_blank" rel="noopener" class="partner-item link-active"> 623 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2026/03/Great-Rides_Official-Partner_Logo_White-Transparent_web.png" alt="Great-Rides_Official-Partner_Logo_White-Transparent_web" class="partner-logo-img"> 624 </a> 625 626 627 <a href="https://www.centralotagonz.com/" target="_blank" rel="noopener" class="partner-item link-active"> 628 <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/centralotago_logo.webp" alt="centralotago_logo" class="partner-logo-img"> 629 </a> 630 631 </div> 632 </div> 633 634 <hr class="footer-divider"> 635 636 <div class="footer-bottom"> 637 <div class="copyright"> 638 © 2026 Naseby Apartments. All rights reserved. 639 </div> 640 641 <div class="footer-links"> 642 <a href="https://nasebyapartments.co.nz/privacy-policy">Privacy Policy</a> 643 <span aria-hidden="true"> | </span> 644 <a href="#popmake-1272">Agent login</a> 645 </div> 646 647 <div class="footer-socials"> 648 <a href="https://www.facebook.com/people/Naseby-Lodge-2000ft-Restaurant/100054280400261" target="_blank" rel="noopener" class="social-icon facebook" aria-label="Follow us on Facebook"> 649 <i class="fa-brands fa-facebook-f" aria-hidden="true"></i> 650 </a> 651 652 653 </div> 654 </div> 655 656 </div> 657 </div> 658 </footer> 659 660
660<script> 661 (function() { 662 const footer = document.querySelector('.site-footer'); 663 if (footer && window.pageObserver) { 664 window.pageObserver.observe(footer); 665 } 666 667 const footerPlaceholders = document.querySelectorAll('.site-footer .smart-placeholder'); 668 footerPlaceholders.forEach(el => { 669 const img = el.querySelector('img'); 670 if(img && img.complete) el.classList.add('img-loaded'); 671 }); 672 })(); 673 </script>
673 674 675
675<script type="speculationrules"> 676{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/naseby-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 677</script>
677 678<div 679 id="pum-1272" 680 role="dialog" 681 aria-modal="false" 682 class="pum pum-overlay pum-theme-1250 pum-theme-lightbox popmake-overlay click_open" 683 data-popmake="{"id":1272,"slug":"agent-login","theme_id":1250,"cookies":[],"triggers":[{"type":"click_open","settings":{"cookie_name":"","extra_selectors":""}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":"small","responsive_min_width":"0%","responsive_min_width_unit":false,"responsive_max_width":"80%","responsive_max_width_unit":false,"custom_width":"640px","custom_width_unit":false,"custom_height":"380px","custom_height_unit":false,"custom_height_auto":false,"location":"center","position_from_trigger":false,"position_top":"100","position_left":"0","position_bottom":"0","position_right":"0","position_fixed":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","overlay_zindex":false,"zindex":"1999999999"},"close":{"text":"","button_delay":"0","overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> 684 685 <div id="popmake-1272" class="pum-container popmake theme-1250 pum-responsive pum-responsive-small responsive size-small"> 686 687 688 689 690 <div class="pum-content popmake-content" tabindex="0"> 691 692<h3 class="wp-block-heading"></h3> 693 694 695 696<div class="wpcf7 no-js" id="wpcf7-f1260-o1" lang="en-GB" dir="ltr" data-wpcf7-id="1260"> 697<div class="screen-reader-response"><p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div> 698<form action="/#wpcf7-f1260-o1" method="post" class="wpcf7-form init" aria-label="Contact form" novalidate="novalidate" data-status="init"> 699<fieldset class="hidden-fields-container"><input type="hidden" name="_wpcf7" value="1260" /><input type="hidden" name="_wpcf7_version" value="6.1.4" /><input type="hidden" name="_wpcf7_locale" value="en_GB" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f1260-o1" /><input type="hidden" name="_wpcf7_container_post" value="0" /><input type="hidden" name="_wpcf7_posted_data_hash" value="" /> 700</fieldset> 701<div class="agent-login-form contact-form-wrapper"> 702 <h3>Agent login</h3> 703 704 <div class="contact-form"> 705 <div class="contact-form-grid"> 706 707 <div class="contact-form-group full-width"> 708 <span class="wpcf7-form-control-wrap" data-name="agent_code"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" id="agent_code" autocomplete="off" aria-required="true" aria-invalid="false" placeholder="Enter agent code" value="" type="text" name="agent_code" /></span> 709 </div> 710 711 <div class="contact-form-actions"> 712 <input class="wpcf7-form-control wpcf7-submit has-spinner btn-primary" type="submit" value="Continue" /> 713 </div> 714 715 </div> 716 </div> 717</div><input type='hidden' class='wpcf7-pum' value='{"closepopup":false,"closedelay":0,"openpopup":false,"openpopup_id":0}' /><div class="wpcf7-response-output" aria-hidden="true"></div> 718</form> 719</div> 720 721 </div> 722 723 724 <button type="button" class="pum-close popmake-close" aria-label="Close"> 725 x </button> 726 727 </div> 728 729</div>
730<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
vendor: 1 bytes, line 730
730
731<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
vendor: 1 bytes, line 731
731
732<script type="text/javascript" id="wp-i18n-js-after"> 733/* <![CDATA[ */ 734wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 735//# sourceURL=wp-i18n-js-after 736/* ]]> */ 737</script>
vendor: 1 bytes, line 737
737
738<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4" id="swv-js"></script>
vendor: 1 bytes, line 738
738
739<script type="text/javascript" id="contact-form-7-js-translations"> 740/* <![CDATA[ */ 741( function( domain, translations ) { 742 var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; 743 localeData[""].domain = domain; 744 wp.i18n.setLocaleData( localeData, domain ); 745} )( "contact-form-7", {"translation-revision-date":"2024-05-21 11:58:24+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Error:":["Error:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); 746//# sourceURL=contact-form-7-js-translations 747/* ]]> */ 748</script>
vendor: 1 bytes, line 748
748
749<script type="text/javascript" id="contact-form-7-js-before"> 750/* <![CDATA[ */ 751var wpcf7 = { 752 "api": { 753 "root": "https:\/\/nasebyapartments.co.nz\/wp-json\/", 754 "namespace": "contact-form-7\/v1" 755 }, 756 "cached": 1 757}; 758var wpcf7 = { 759 "api": { 760 "root": "https:\/\/nasebyapartments.co.nz\/wp-json\/", 761 "namespace": "contact-form-7\/v1" 762 }, 763 "cached": 1 764}; 765//# sourceURL=contact-form-7-js-before 766/* ]]> */ 767</script>
vendor: 1 bytes, line 767
767
768<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4" id="contact-form-7-js"></script>
vendor: 1 bytes, line 768
768
769<script type="text/javascript" id="wpcf7-redirect-script-js-extra"> 770/* <![CDATA[ */ 771var wpcf7r = {"ajax_url":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php"}; 772//# sourceURL=wpcf7-redirect-script-js-extra 773/* ]]> */ 774</script>
vendor: 1 bytes, line 774
774
775<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/wpcf7-redirect/build/assets/frontend-script.js?ver=2c532d7e2be36f6af233" id="wpcf7-redirect-script-js"></script>
vendor: 1 bytes, line 775
775
776<script type="text/javascript" src="https://cdn-reach.hostinger.com/js/embed.js" id="hostinger-reach-embed-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 776
776
777<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/js/glightbox.min.js?ver=1.0" id="glightbox-js-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 777
777
778<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=11.0.0" id="swiper-js-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 778
778
779<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script>
vendor: 1 bytes, line 779
779
780<script type="text/javascript" id="popup-maker-site-js-extra"> 781/* <![CDATA[ */ 782var pum_vars = {"version":"1.25.0","pm_dir_url":"https://nasebyapartments.co.nz/wp-content/plugins/popup-maker/","ajaxurl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","restapi":"https://nasebyapartments.co.nz/wp-json/pum/v1","rest_nonce":null,"default_theme":"1249","debug_mode":"","disable_tracking":"1","disable_url_params":"","home_url":"/","message_position":"top","core_sub_forms_enabled":"1","popups":[],"cookie_domain":"","paramNames":{"popup_id":"pid","cta":"cta","notrack":"notrack"}}; 783var pum_sub_vars = {"ajaxurl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","message_position":"top"}; 784var pum_popups = {"pum-1272":{"triggers":[{"type":"click_open","settings":{"cookie_name":"","extra_selectors":""}}],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"explain":null,"type_section":null,"theme_id":"1250","size":"small","responsive_min_width":"0%","responsive_max_width":"80%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center","position_top":"100","position_bottom":"0","position_left":"0","position_right":"0","position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":"1999999999","close_button_delay":"0","close_on_form_submission":false,"close_on_form_submission_delay":"0","close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"lightbox","id":1272,"slug":"agent-login"}}; 785//# sourceURL=popup-maker-site-js-extra 786/* ]]> */ 787</script>
vendor: 1 bytes, line 787
787
788<script type="text/javascript" src="//nasebyapartments.co.nz/wp-content/uploads/pum/pum-site-scripts.js?defer&generated=1765880027&ver=1.25.0" id="popup-maker-site-js"></script>
vendor: 1 bytes, line 788
788
789<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-contact-form-7-fac2a8013ba5ba355cd0.js" id="googlesitekit-events-provider-contact-form-7-js" defer></script>
vendor: 1 bytes, line 789
789
790<script type="text/javascript" id="googlesitekit-events-provider-content-events-js-before"> 791/* <![CDATA[ */ 792window._googlesitekit = window._googlesitekit || {}; 793window._googlesitekit.contentEvents = {"postID":38,"isSinglePost":false,"hasVimeoEmbed":false}; 794//# sourceURL=googlesitekit-events-provider-content-events-js-before 795/* ]]> */ 796</script>
vendor: 1 bytes, line 796
796
797<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-content-events-bb83c1a0aedefa5d25d1.js" id="googlesitekit-events-provider-content-events-js" defer></script>
vendor: 1 bytes, line 797
797
798<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-popup-maker-b946f1908d7c0c105eca.js" id="googlesitekit-events-provider-popup-maker-js" defer></script>
vendor: 1 bytes, line 798
798
799<script id="wp-emoji-settings" type="application/json"> 800{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://nasebyapartments.co.nz/wp-includes/js/wp-emoji-release.min.js?ver=6.9.9"}} 801</script>
vendor: 1 bytes, line 801
801
802<script type="module"> 803/* <![CDATA[ */ 804/*! This file is auto-generated */ 805var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 806//# sourceURL=https://nasebyapartments.co.nz/wp-includes/js/wp-emoji-loader.min.js 807/* ]]> */ 808</script>
vendor: 1 bytes, line 808
808
809<script>window.NasebyElfsight={"ajaxUrl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","nonce":"c4e473975b","cached":{"ratingValue":4.4,"reviewCount":222,"updatedAt":1791267816}};</script>
809<script>(function() { 810 var debug = /[?&]schema_debug=1\b/.test(location.search); 811 812 function log() { 813 if (!debug) return; 814 try { console.log.apply(console, arguments); } catch (e) {} 815 } 816 817 function parseFloatSafe(v) { 818 if (v == null) return null; 819 var s = String(v).trim().replace(',', '.'); 820 var n = parseFloat(s); 821 if (Number.isNaN(n)) return null; 822 return n; 823 } 824 825 function parseIntSafe(v) { 826 if (v == null) return null; 827 var s = String(v).replace(/,/g, '').trim(); 828 var n = parseInt(s, 10); 829 if (Number.isNaN(n)) return null; 830 return n; 831 } 832 833 function clampRating5(n) { 834 if (n == null) return null; 835 if (n <= 0 || n > 5) return null; 836 return Math.round(n * 10) / 10; 837 } 838 839 function extractAllReviewsRating(widgetRoot) { 840 var els = widgetRoot.querySelectorAll('a, button, div, span, p, h1, h2, h3, h4, h5, h6'); 841 for (var i = 0; i < els.length; i++) { 842 var t = (els[i].textContent || '').replace(/\s+/g, ' ').trim(); 843 if (!t) continue; 844 if (/^All Reviews\b/i.test(t) || /\bAll Reviews\b/i.test(t)) { 845 var m = t.match(/(\d(?:[.,]\d)?)/); 846 if (m) { 847 var r = clampRating5(parseFloatSafe(m[1])); 848 if (r != null) return r; 849 } 850 } 851 } 852 853 var txt = (widgetRoot.textContent || '').replace(/\s+/g, ' '); 854 var m2 = txt.match(/All Reviews\s*(\d(?:[.,]\d)?)/i); 855 if (m2) { 856 var r2 = clampRating5(parseFloatSafe(m2[1])); 857 if (r2 != null) return r2; 858 } 859 860 return null; 861 } 862 863 function extractParenNumbers(widgetRoot) { 864 var txt = widgetRoot.textContent || ''; 865 var re = /\((\d{1,7})\)/g; 866 var out = []; 867 var m; 868 while ((m = re.exec(txt)) !== null) { 869 var n = parseIntSafe(m[1]); 870 if (n != null) out.push(n); 871 } 872 return out; 873 } 874 875 function extractCountNearRatingParen(widgetRoot, ratingValue) { 876 if (ratingValue == null) return null; 877 var txt = (widgetRoot.textContent || '').replace(/\s+/g, ' '); 878 var rStr = String(ratingValue); 879 var re = new RegExp(rStr.replace('.', '[\\.,]') + '\\s*\\((\\d{1,7})\\)', 'g'); 880 881 var max = null; 882 var m; 883 while ((m = re.exec(txt)) !== null) { 884 var n = parseIntSafe(m[1]); 885 if (n == null) continue; 886 if (max == null || n > max) max = n; 887 } 888 return max; 889 } 890 891 function extractMaxParenCount(widgetRoot) { 892 var nums = extractParenNumbers(widgetRoot); 893 if (!nums.length) return null; 894 var max = nums[0]; 895 for (var i = 1; i < nums.length; i++) if (nums[i] > max) max = nums[i]; 896 return max; 897 } 898 899 function collectAggregateRatings(obj, out) { 900 if (!obj) return; 901 if (Array.isArray(obj)) { 902 for (var i = 0; i < obj.length; i++) collectAggregateRatings(obj[i], out); 903 return; 904 } 905 if (typeof obj !== 'object') return; 906 907 if (obj.aggregateRating && typeof obj.aggregateRating === 'object') { 908 var ar = obj.aggregateRating; 909 var rv = clampRating5(parseFloatSafe(ar.ratingValue)); 910 var rc = parseIntSafe(ar.reviewCount); 911 var rcc = parseIntSafe(ar.ratingCount); 912 var count = rc != null ? rc : (rcc != null ? rcc : null); 913 if (rv != null) out.push({ ratingValue: rv, reviewCount: count }); 914 } 915 916 if (obj['@graph']) collectAggregateRatings(obj['@graph'], out); 917 918 for (var k in obj) { 919 if (!Object.prototype.hasOwnProperty.call(obj, k)) continue; 920 var v = obj[k]; 921 if (v && typeof v === 'object') collectAggregateRatings(v, out); 922 } 923 } 924 925 function bestAggregateRatingFromJsonLd(json) { 926 var list = []; 927 collectAggregateRatings(json, list); 928 if (!list.length) return null; 929 930 var best = null; 931 for (var i = 0; i < list.length; i++) { 932 var item = list[i]; 933 var score = item.reviewCount != null ? item.reviewCount : 0; 934 if (!best || score > (best.reviewCount != null ? best.reviewCount : 0)) best = item; 935 } 936 return best; 937 } 938 939 function updateBusinessSchema(ratingValue, reviewCount) { 940 var schemaScript = document.getElementById('naseby-business-schema'); 941 if (!schemaScript) return false; 942 943 var schema; 944 try { 945 schema = JSON.parse(schemaScript.textContent || '{}'); 946 } catch (e) { 947 return false; 948 } 949 950 var rv = clampRating5(parseFloatSafe(ratingValue)); 951 if (rv == null) return false; 952 953 var rc = reviewCount != null ? parseIntSafe(reviewCount) : null; 954 if (rc != null && rc < 0) rc = null; 955 956 schema.aggregateRating = { 957 '@type': 'AggregateRating', 958 'ratingValue': rv, 959 'bestRating': 5, 960 'worstRating': 1 961 }; 962 963 if (rc != null) schema.aggregateRating.reviewCount = rc; 964 965 schemaScript.textContent = JSON.stringify(schema); 966 return true; 967 } 968 969 function saveToServer(ratingValue, reviewCount) { 970 if (!window.NasebyElfsight || !window.NasebyElfsight.ajaxUrl) return; 971 972 var rv = clampRating5(parseFloatSafe(ratingValue)); 973 if (rv == null) return; 974 975 var rc = reviewCount != null ? parseIntSafe(reviewCount) : null; 976 977 try { 978 var cached = window.NasebyElfsight.cached || {};
979 var crv = cached.ratingValue != null ? clampRating5(parseFloatSafe(cached.ratingValue)) : null; 980 var crc = cached.reviewCount != null ? parseIntSafe(cached.reviewCount) : null; 981 982 if (crv === rv && ((crc == null && rc == null) || crc === rc)) { 983 return; 984 } 985 } catch (e) {} 986 987 try { 988 window.NasebyElfsight.cached = window.NasebyElfsight.cached || {}; 989 window.NasebyElfsight.cached.ratingValue = rv; 990 if (rc != null) window.NasebyElfsight.cached.reviewCount = rc; 991 } catch (e) {} 992 993 var body = new URLSearchParams(); 994 body.set('action', 'naseby_save_aggregate_rating'); 995 body.set('nonce', window.NasebyElfsight.nonce || ''); 996 body.set('ratingValue', String(rv)); 997 if (rc != null) body.set('reviewCount', String(rc)); 998 999 fetch(window.NasebyElfsight.ajaxUrl, { 1000 method: 'POST', 1001 headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, 1002 body: body.toString(), 1003 credentials: 'same-origin' 1004 }).catch(function() {}); 1005 } 1006 1007 function removeJsonLdScripts(widgetRoot) { 1008 var scripts = widgetRoot.querySelectorAll('script[type="application/ld+json"]'); 1009 for (var i = 0; i < scripts.length; i++) { 1010 try { scripts[i].remove(); } catch (e) {} 1011 } 1012 } 1013 1014 function tryExtract(widgetRoot) { 1015 var uiRating = extractAllReviewsRating(widgetRoot); 1016 var parenNums = debug ? extractParenNumbers(widgetRoot) : null; 1017 1018 if (uiRating != null) { 1019 var c1 = extractCountNearRatingParen(widgetRoot, uiRating); 1020 var c2 = c1 != null ? c1 : extractMaxParenCount(widgetRoot); 1021 var method = c1 != null ? 'ui-rating-paren' : 'ui-max-paren'; 1022 1023 return { 1024 ratingValue: uiRating, 1025 reviewCount: c2, 1026 source: method, 1027 parenNumbers: parenNums 1028 }; 1029 } 1030 1031 var scripts = widgetRoot.querySelectorAll('script[type="application/ld+json"]'); 1032 for (var i = 0; i < scripts.length; i++) { 1033 var txt = scripts[i].textContent || ''; 1034 if (!txt) continue; 1035 1036 var json; 1037 try { json = JSON.parse(txt); } catch (e) { continue; } 1038 1039 var ar = bestAggregateRatingFromJsonLd(json); 1040 if (ar && ar.ratingValue != null) { 1041 return { 1042 ratingValue: ar.ratingValue, 1043 reviewCount: ar.reviewCount, 1044 source: 'jsonld', 1045 parenNumbers: parenNums 1046 }; 1047 } 1048 } 1049 1050 return null; 1051 } 1052 1053 function init() { 1054 var widgetHosts = document.querySelectorAll('[class*="elfsight-app-"]'); 1055 if (!widgetHosts || !widgetHosts.length) return; 1056 1057 var best = { ratingValue: null, reviewCount: null, source: null }; 1058 var startedAt = Date.now(); 1059 var maxMs = 15000; 1060 1061 function shouldUpdate(next) { 1062 if (!next || next.ratingValue == null) return false; 1063 1064 var nextCount = next.reviewCount != null ? parseIntSafe(next.reviewCount) : null; 1065 var bestCount = best.reviewCount != null ? parseIntSafe(best.reviewCount) : null; 1066 1067 if (best.ratingValue == null) return true; 1068 1069 if (next.ratingValue !== best.ratingValue) return true; 1070 1071 if (nextCount != null && (bestCount == null || nextCount > bestCount)) return true; 1072 1073 return false; 1074 } 1075 1076 function apply(next) { 1077 var nextCount = next.reviewCount != null ? parseIntSafe(next.reviewCount) : null; 1078 1079 var ok = updateBusinessSchema(next.ratingValue, nextCount); 1080 if (!ok) return false; 1081 1082 saveToServer(next.ratingValue, nextCount); 1083 for (var j = 0; j < widgetHosts.length; j++) { 1084 removeJsonLdScripts(widgetHosts[j]); 1085 } 1086 1087 best = { 1088 ratingValue: next.ratingValue, 1089 reviewCount: nextCount, 1090 source: next.source 1091 }; 1092 1093 window.NasebySchemaDebug = { 1094 ts: new Date().toISOString(), 1095 ratingValue: next.ratingValue, 1096 reviewCount: nextCount, 1097 source: next.source, 1098 parenNumbers: next.parenNumbers || null 1099 }; 1100 1101 log('[NasebySchema] update', window.NasebySchemaDebug); 1102 return true; 1103 } 1104 1105 function scanAll() { 1106 for (var i = 0; i < widgetHosts.length; i++) { 1107 var next = tryExtract(widgetHosts[i]); 1108 if (shouldUpdate(next)) { 1109 apply(next); 1110 } else if (debug && next) { 1111 log('[NasebySchema] seen', next); 1112 } 1113 } 1114 } 1115 1116 scanAll(); 1117 1118 var observer = new MutationObserver(function() { 1119 scanAll(); 1120 if ((Date.now() - startedAt) > maxMs) observer.disconnect(); 1121 });
1122 1123 observer.observe(document.documentElement, { childList: true, subtree: true }); 1124 1125 setTimeout(function() { 1126 scanAll(); 1127 observer.disconnect(); 1128 }, maxMs); 1129 } 1130 1131 if (document.readyState === 'loading') { 1132 document.addEventListener('DOMContentLoaded', init); 1133 } else { 1134 init(); 1135 } 1136})();</script>
1136 1137
1137<script> 1138 function initGLightbox() { 1139 if (typeof GLightbox !== 'undefined') { 1140 GLightbox({ selector: '.glightbox' }); 1141 } 1142 } 1143 if (document.readyState === 'loading') { 1144 document.addEventListener('DOMContentLoaded', initGLightbox); 1145 } else { 1146 initGLightbox(); 1147 } 1148 </script>
1148 1149</body> 1150</html> 1151 1152 1153<!-- Page uncached by LiteSpeed Cache 7.9.1 on 2026-10-07 08:59:18 -->
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.