1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml" class="st-theme pg-pages-home_page " lang="en"> 3<head> 4 5 6 <link rel="preconnect" href="https://bam.nr-data.net/" > 7 <link rel="preconnect" href="https://js-agent.newrelic.com/" > 8 <link rel="preconnect" href="https://fonts.gstatic.com/" > 9 <link rel="preconnect" href="https://fonts.googleapis.com/" > 10 <link rel="preconnect" href="https://ssl.google-analytics.com/" > 11 <link rel="preconnect" href="https://prd-pbgo-public-uploads.s3.amazonaws.com/" > 12 <link rel="preconnect" href="https://prd-assets1.fastly.propertybase.com/" > 13 <link rel="preconnect" href="https://prd-assets2.fastly.propertybase.com/" > 14 <link rel="preconnect" href="https://prd-assets3.fastly.propertybase.com/" > 15 <link rel="preconnect" href="https://prd-assets4.fastly.propertybase.com/" > 16 17 18 <meta charset="utf-8"> 19 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 20 <meta name="viewport" content="width=device-width, initial-scale=1"> 21 <title>Cotton Realty</title> 22 <meta name="Description" content="Cotton Realty" /> 23 <meta name="format-detection" content="telephone=no"> 24 <meta name="theme-color" content="#222222"> 25 26 27 28 29 30 <link rel="canonical" href="https://www.cotton-realty.com/" /> 31 32 33 34 <meta property="og:title" content="Cotton Realty" /> 35 <meta property="og:type" content="website" /> 36 <meta property="og:url" content="https://www.cotton-realty.com/" /> 37 <meta property="og:site_name" content="Cotton Realty" /> 38 <meta property="og:description" content="" /> 39 40 <meta name="twitter:card" content="summary" /> 41 <meta name="twitter:site" content="" /> 42 <meta name="twitter:title" content="Cotton Realty" /> 43 <meta name="twitter:description" content="Cotton Realty" /> 44 45 <meta property="og:image" content="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_header_logo/48675/e9d282b1742c2a4f329bef3be583ba16.png?width=800&optimize=medium&auto=webp" /> 46 <meta name="twitter:image" content="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_header_logo/48675/e9d282b1742c2a4f329bef3be583ba16.png?width=800&optimize=medium&auto=webp" /> 47 48 49 50 51 <link rel="stylesheet" href="https://prd-assets1.fastly.propertybase.com/company_frontend_49682_d400ad4a26dc88599645dbad084327b0_1790809918.css?as=style&rel=preload" /> 52 <link rel="stylesheet" href="https://prd-assets1.fastly.propertybase.com/company_frontend_49682_d400ad4a26dc88599645dbad084327b0_1790809918.css" data-wb-theme-css="true" /> 53 <link rel="preload" href="https://prd-assets2.fastly.propertybase.com/assets/frontend/homepage-274edf616347ec84711152001aecd9ec3cda8a961056ce1458dfef23df900736.js" as="script"> 54 55 56 57 58 59 60
60<script> 61 window.pbCookieConsentConfig = {"endpoint":"/cookie_consent","consentVersion":"2026-06-29","policyVersion":"2026-06-29","required":true,"globalPrivacyControl":false,"categories":["necessary","functional_integrations","preferences","analytics","advertising","personalization","third_party_integrations","chat_support"],"acceptedCategories":{},"consentId":null,"companyName":"Cotton Realty","modalCopy":"We use cookies and similar technologies to keep this site working, support core map functionality, remember preferences, measure performance, and support advertising, personalization, chat, and optional third-party services. You can opt out of optional cookies or manage your choices at any time.","privacyPolicyUrl":"/privacy-policy"}; 62 window.dataLayer = window.dataLayer || []; 63 function gtag(){dataLayer.push(arguments);} 64 gtag('consent', 'default', { 65 ad_storage: 'denied', 66 analytics_storage: 'denied', 67 ad_user_data: 'denied', 68 ad_personalization: 'denied' 69 }); 70 gtag('consent', 'update', { analytics_storage: 'granted' }); 71 gtag('consent', 'update', { ad_storage: 'granted', ad_user_data: 'granted' }); 72 gtag('consent', 'update', { ad_personalization: 'granted' }); 73 </script>
73 74 75 76 77
77<script>var parentGTM = false;</script>
vendor: 66 bytes, lines 77-78
77 78 <script async src="https://www.googletagmanager.com/gtag/js?id=
78G-NXERNZ8CCS
vendor: 16 bytes, lines 78-79
78"></script> 79
79<script async src="https://www.googletagmanager.com/gtag/js?id="></script>
79 80
80<script type="text/javascript"> 81
vendor: 139 bytes, lines 81-84
81window.dataLayer = window.dataLayer || []; 82 function gtag(){dataLayer.push(arguments);} 83 gtag('js', new Date()); 84 gtag('config', '
84G-NXERNZ8CCS
vendor: 11 bytes, lines 84-86
84'); 85 86
86gtag('config', ''); 87 </script>
87 88 89 90 91 92 93 <meta name="csrf-param" content="authenticity_token" /> 94<meta name="csrf-token" content="C-but2JrJ7qE4J_59phB0APs6CYq48FML_fkS75sT7zO9yKEzhcRvAwhi8duv_zmC4eUE76_CRPBcB0nGUgvkw" /> 95 96 97 <style> 98 .arrow_trend_down svg path, .arrow_trend_down svg polygon, .arrow_trend_down svg square { 99 fill: #dd1d1d !important; 100 } 101 102 .arrow_trend_up svg path, .arrow_trend_up svg polygon, .arrow_trend_up svg square { 103 fill: #46953a !important; 104 } 105 106 .trend_na svg path, .trend_na svg polygon, .trend_na svg square { 107 fill: #818181 !important; 108 } 109</style> 110 111 112 113 <style> 114 @font-face { 115 font-family: 'Glyphicons Halflings'; 116 src: url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.eot'); 117 src: url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.eot') format('embedded-opentype'), url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.woff') format('woff'), url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/fonts/glyphicons-halflings-regular.svg') format('svg'); 118 } 119 </style> 120<!--/* 121 <style> 122 .hero-background-wrapper { 123 position: relative; 124 } 125 .hero-background-wrapper:before{ 126 content: ''; 127 background-image: url(''); 128 background-size: cover; 129 background-position: center; 130 background-attachment: ; 131 position: absolute; 132 left: 0; 133 right: 0; 134 top: 0; 135 bottom: 0; 136 margin: auto; 137 width: 100%; 138 height: 100%; 139 opacity: ; 140 z-index: -2; 141 } 142 .hero-background-wrapper:after{ 143 content: ''; 144 background-color: ; 145 background-size: cover; 146 background-position: center; 147 position: absolute; 148 opacity: ; 149 left: 0; 150 right: 0; 151 top: 0; 152 bottom: 0; 153 margin: auto; 154 width: 100%; 155 height: 100%; 156 z-index: -1; 157 } 158</style> 159*/--> 160</head> 161 162 <body class="h-transparent qs-luxury theme-luxury hero home-page btn-sharp header-luxury_transparent st-wb3"> 163 164 165 <header data-sticky="true" > 166 167<nav class="c-navbar c-navbar--luxury_transparent full-width"> 168 169 <div class="c-navbar__content-1"> 170 <div class="c-navbar__address-info"> 171 </div> 172 173 </div> 174 175 <button class="navbar-toggler js-navbar-toggle" aria-label="Navbar Toggle"> 176 <span class="navbar-toggler-icon"> 177 <span></span> 178 <span></span> 179 <span></span> 180 </span> 181 </button> 182 183 <div class="c-navbar__inner_content"> 184 <div class="navbar-brand"> 185 <a title="Navigate to Cotton Realty homepage" aria-label="Link to Cotton Realty homepage" class="non-link" href="/"><img alt="Link to Cotton Realty homepage" title="Navigate to Cotton Realty homepage" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_header_logo/48675/e9d282b1742c2a4f329bef3be583ba16.png?width=700&optimize=medium&auto=webp 700w" sizes="700px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_header_logo/48675/e9d282b1742c2a4f329bef3be583ba16.png?width=700&optimize=medium&auto=webp" /></a> 186 187 </div> 188 189 <div class="navbar-collapse collapse"> 190 <div class="c-navbar__content-2"> 191 <span><a data-type="Company" href="mailto:[email protected]">[email protected]</a></span> 192 <span><a class="non-link" data-type="Office" href="tel:5103850409">5103850409</a></span> 193 194 <div class="c-navbar__login-menu navbar-text"><li class="nav-item first_item"><a class="nav-link" href="/users/new">Sign Up</a></li> <li class="nav-item last_item"><a class="nav-link" href="/login">Login</a></li></div> 195 </div> 196 197 <div class="d-flex justify-content-end"> 198 <div class="navbar-nav justify-content-end"><li class="nav-item first_item"><a class="nav-link" href="/about">About</a></li> <li class="nav-item "><a class="nav-link" target="" href="https://sites.google.com/cotton-realty.com/real-estate-360/home">Events</a></li> <li class="nav-item "><a class="nav-link" href="/agents">Meet the Team</a></li> <li class="nav-item "><a class="nav-link" href="/contact">Contact</a></li> <li class="nav-item parent"><a class="nav-link dropdown-toggle" data-toggle="hover-dropdown" aria-expanded="false" aria-haspopup="true" href="/buying-a-home">Buyers</a><div class="dropdown-menu"><a class="dropdown-item" href="/areas">Communities</a>
198 <a class="dropdown-item" href="/mortgage_calculator">Mortgage Calculator</a></div></li> <li class="nav-item parent"><a class="nav-link dropdown-toggle" data-toggle="hover-dropdown" aria-expanded="false" aria-haspopup="true" href="/selling-your-home">Sellers</a><div class="dropdown-menu"><a class="dropdown-item" href="/properties/sale_prices">Home Valuation</a> <a class="dropdown-item" href="/market-insights/regions">Market Data Reports</a></div></li> <li class="nav-item last_item parent"><a class="nav-link dropdown-toggle" data-toggle="hover-dropdown" aria-expanded="false" aria-haspopup="true" href="/searches/new">Search</a><div class="dropdown-menu"><a class="dropdown-item" href="/featured">Our Listings</a> <a class="dropdown-item" href="/searches/new">All Listings</a> <a class="dropdown-item" href="/new-real-estate-listings">New Listings</a> <a class="dropdown-item" href="/open-houses">Upcoming Open Houses</a></div></li></div> 199 </div> 200 201 <div class="c-navbar__content-2 c-navbar__content-2--mobile"> 202 <div class="c-navbar__login-menu navbar-text"><li class="nav-item first_item"><a class="nav-link" href="/users/new">Sign Up</a></li> <li class="nav-item last_item"><a class="nav-link" href="/login">Login</a></li></div> 203 </div> 204 205 <div class="c-navbar__content-1 c-navbar__content-1--mobile"> 206 207 <a> Cotton Realty</a> <br/> 208 209 <div><a class="non-link" data-type="Office" href="tel:5103850409">5103850409</a></div> 210 <div><a data-type="Company" href="mailto:[email protected]">[email protected]</a></div> 211 </div> 212 </div> 213 </div> 214</nav> 215 216 217 218 219 <div class="c-loader js-loader-global " id="" style="display:none" role="status" aria-live="polite"> 220 <div class="c-loader__loader"> 221 <div></div> 222 <div></div> 223 <div></div> 224 <div></div> 225 </div> 226 </div> 227 228 229 230 </header> 231 232 233 234 <div class="st-hero-slider__wrapper"> 235 236 <div class="st-carousel-container" 237 style="" 238 data-mobile-visible="true" 239 data-desktop-visible="true"> 240 <div class="st-hero-slider__slide no-slide" data-mobile="true" data-desktop="true"> 241 <video loop muted playsinline src="https://prd-pbgo-public-uploads.s3.amazonaws.com/assets/uploads/theme_photo/video/332143/1b451f67a2de97bf3301342297cbe020.mp4" aria-label="Hero image" poster="" width="100%" style="" class="st-hero-image" autoplay controlsList="nodownload noremoteplayback nofullscreen"></video> 242 243 </div> 244 </div> 245 246 247 248 <!-- quicksearch option 1 --> 249<div id="qs-simple-wrapper" class="homepage-quicksearch-container theme-luxury bottom-third "> 250 251 <div class="home-elements-container"> 252 253 <div class="home-quick-search"> 254 255 <div class="qs-simple-forms" data-qs-container> 256 <div class="qs-form" data-qs-form="mls"> 257 <form class="new_search" id="homepage_desktop_sales_search" title="Perform a property search using the form." aria-label="search listed properties" role="search" data-nl-search-enabled="false" data-qs-search-form="true" data-mls-action="/searches" data-ygl-action="/rental_searches" action="/searches" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="DyctwbVeJHXr8BGvrt2YqbNgZRf25RNAVqlbC8S4z2R1m824tmJG_PVPyTDjkJK7AS4lWleWhS0m_UGcogUyaw" autocomplete="off" /> 258 <input type="hidden" name="rental_search[towns]" id="homepage_rental_search_towns_desktop" value="" autocomplete="off" /> 259 <input type="hidden" name="rental_search[super_locations]" id="homepage_rental_search_super_locations_desktop" value="" autocomplete="off" /> 260 261 262 <div class="row-min-padding"> 263 <div class="supersearch-container left-column search-field-margin d-flex align-items-center theme-luxury" id=""> 264 <input class="" id="homepage_search_super_locations_desktop" placeholder="Search By Address, City, Zip, or MLS #" aria-label="Search By Address, City, Zip, or MLS #" type="text" value="" name="search[super_locations]" /> 265 266 267 <button class="qs-button style-simple"> 268 <a href="javascript:$('#homepage_desktop_sales_search').submit();" class="btn btn-default btn-primary btn-sm" aria-label="Search for Properties"> 269 <svg class="magnifying-icon" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="28px" width="28px" x="0px" y="0px" viewBox="6 118.6 556.4 556.4" enable-background="new 6 118.6 556.4 556.4" xml:space="preserve"> 270 <path d="M543.7,565.5l-61.1-61.1c-0.8-0.8-1.7-1.6-2.6-2.2c22.4-37.9,35.2-82,35.2-129c0-140.4-114.2-254.5-254.5-254.5 271 C120.2,118.6,6,232.8,6,373.1c0,140.4,114.2,254.5,254.5,254.5c47.1,0,91.2-12.9,129-35.2c0.7,0.9,1.4,1.8,2.2,2.6l61.1,61.1 272 c12.1,12.1,28.2,18.8,45.4,18.8c17.1,0,33.3-6.7,45.4-18.8C568.7,631.2,568.7,590.5,543.7,565.5z M82.4,373.1 273 c0-98.2,79.9-178.1,178.1-178.1c98.2,0,178.1,79.9,178.1,178.1s-79.9,178.1-178.1,178.1S82.4,471.3,82.4,373.1z"></path> 274 </svg> 275 <svg class="qs-search-spinner" viewBox="0 0 50 50" aria-hidden="true" focusable="false"> 276 <circle class="path" cx="25" cy="25" r="20" fill="none" stroke-width="5"></circle> 277</svg> 278 279 </a> 280 </span> 281 282 </div> 283 <div class="small advanced-link text-left clear-both mt-2"> 284 <a data-qs-advanced-link="true" data-mls-url="/searches/new" data-ygl-url="/rental_searches" href="/searches/new">Advanced Search</a> 285 </div> 286 </div> 287</form> </div> 288 289 </div> 290 </div> 291 </div> 292 293</div> 294 295 296 297 </div> 298 299 300 301 302
302<script> 303 var primary_color = '#222222'; 304 var interactive_color = '#ff0000'; 305 var accent_color = '#191919'; 306 var body_font_color = '#222223'; 307 var market_report_default_range = 0; 308 var default_latitude = 37.806816; 309 var default_longitude = -122.26562; 310 var miDataOptions = {}; 311 var marketInsights = {}; 312 </script>
312 313 314 <main class=""> 315
315<script> 316 var miDataOptions = {}; 317 318</script>
318 319 320 321 <div class="full-screen-width breakout valuation-wrapper section address-form luxury row" 322 data-homepage-valuation="true" 323 data-use-rematics="false" 324 data-google-maps-url="//maps.googleapis.com/maps/api/js?v=3&key=AIzaSyACBzy_C1JyFNEuinUSOmNDpjSj6LDNEkc" 325 data-autocompleter-url="https://prd-assets2.fastly.propertybase.com/assets/responsive/autocompleter-a91642d66fbd9f4185dddde790f850d7135fa0298514b1c8fb6df2d849231322.js" 326 > 327 <div class="container"> 328 <div> 329 <div class="valuation"> 330 <div class="valuation-header"> 331 <h2 class="body-title text-center">What's Your Home Worth?</h2> 332 </div> 333 <div class="row m-auto justify-content-center" style="align-items: center; padding: 24px 0;"> 334 <div class="hidden"> 335 <form id="sold_valuation_search" action="/properties/sold_valuation" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="h_9aoQkdGqNFqIU1GgDU3rhNwgTEJICsP9jjjlRVa-uBtKv58M2Qe5ngsVb3ZlYfQ2_MWNjsMKrXqexTdUNuiQ" autocomplete="off" /> 336 <input type="hidden" name="street_address" id="street_address" autocomplete="off" /> 337 <input type="hidden" name="home_address" id="hidden_home_address" value="" autocomplete="off" /> 338 <input type="hidden" name="neighborhood" id="neighborhood" autocomplete="off" /> 339 <input type="hidden" name="town" id="town" autocomplete="off" /> 340 <input type="hidden" name="county" id="county" autocomplete="off" /> 341 <input type="hidden" name="state" id="state" autocomplete="off" /> 342 <input type="hidden" name="state_abbr" id="state_abbr" autocomplete="off" /> 343 <input type="hidden" name="zip_code" id="zip_code" autocomplete="off" /> 344 <input type="hidden" name="latitude" id="latitude" autocomplete="off" /> 345 <input type="hidden" name="longitude" id="longitude" autocomplete="off" /> 346 <input type="hidden" name="custom_sorting" id="custom_sorting" value="newest" autocomplete="off" /> 347</form> </div> 348 <div class="col-md-12 col-sm-10 col-md-12 col-sm-10 m-auto home-evaluation-input" style="position: relative; "> 349 <input type="text" name="home_address" id="home_address" value="" class="form-control location-field" autocomplete="off" placeholder="Type in your home address." aria-label="Type in your home address." /> 350 <button href="javascript:void(0);" aria-label="Valuation Submit Button" class="btn btn-primary valuation-submit-btn simple" id="home_address_submit"> 351 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="24px" viewBox="0 0 24 24" version="1.1" style="height: 19px"> 352 <g id="ð-Components" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 353 <g id="search-bar/quick-search/desktop/empty" transform="translate(-278.000000, -13.000000)" fill="#666"> 354 <g id="icon/magnifier/gray-quicksearch" transform="translate(278.000000, 13.000000)"> 355 <g id="search"> 356 <path d="M23.7894737,21.9368421 L18.1099415,16.2573099 C18.0023392,16.1497076 17.8619883,16.0935673 17.7122807,16.0935673 L17.0947368,16.0935673 C18.5684211,14.3859649 19.4619883,12.1637427 19.4619883,9.73099415 C19.4619883,4.35555556 15.1064327,0 9.73099415,0 C4.35555556,0 0,4.35555556 0,9.73099415 C0,15.1064327 4.35555556,19.4619883 9.73099415,19.4619883 C12.1637427,19.4619883 14.3859649,18.5684211 16.0935673,17.0947368 L16.0935673,17.7122807 C16.0935673,17.8619883 16.154386,18.0023392 16.2573099,18.1099415 L21.9368421,23.7894737 C22.1567251,24.0093567 22.5122807,24.0093567 22.7321637,23.7894737 L23.7894737,22.7321637 C24.0093567,22.5122807 24.0093567,22.1567251 23.7894737,21.9368421 Z M9.73099415,17.2163743 C5.59532164,17.2163743 2.24561404,13.8666667 2.24561404,9.73099415 C2.24561404,5.59532164 5.59532164,2.24561404 9.73099415,2.24561404 C13.8666667,2.24561404 17.2163743,5.59532164 17.2163743,9.73099415 C17.2163743,13.8666667 13.8666667,17.2163743 9.73099415,17.2163743 Z" id="Shape" fill-rule="nonzero"></path> 357 </g> 358 </g> 359 </g> 360 </g> 361</svg> 362 363 </button> 364 </div> 365 </div> 366 </div> 367 </div> 368 </div> 369</div> 370 371 372 373 374 375 <div id="banner-background" class="areas_card_slider full-screen-width mobile-row section areas-wrapper arrows " > 376 <div class="slick-container container text-center"> 377 <h2 class="body-title text-md-center text-sm-center"> 378 Local Areas 379 </h2> 380 381 382 383 384 <div id="areas-slider" class="responsive slider"> 385 386 <a class="c-area-card c-area-card--luxury_landscape" id="51273" href="/areas/san-francisco"> 387 <div class="c-area-card__image"> 388 389 <img alt="San Francisco" class="photo-attribution-custom" title="["<a href=\"https://maps.google.com/maps/contrib/114936551742889652319\">Marco Hueg</a>"]" data-logo="https://prd-assets1.fastly.propertybase.com/assets/svgs/frontend/social/google_logo-12dc077c1feeeb24f6e9057caf38391376615ee7f05befd435f1b18b98e01209.svg" data-credit="["<a href=\"https://maps.google.com/maps/contrib/114936551742889652319\">Marco Hueg</a>"]" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51273/1521d1dd74f70d3058ebe8b2237e1d39.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51273/1521d1dd74f70d3058ebe8b2237e1d39.jpg?width=362&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 362w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51273/1521d1dd74f70d3058ebe8b2237e1d39.jpg?width=460&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 460w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51273/1521d1dd74f70d3058ebe8b2237e1d39.jpg?width=766&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 766w" sizes="(min-width: 1200px) 362px, (min-width: 768px) 460px, (min-width: 737px) 766px, 767px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51273/1521d1dd74f70d3058ebe8b2237e1d39.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50" />
390 <span class="c-area-card__connect-button">Details</span> 391 </div> 392 <div class="c-area-card__details"> 393 <div style="text-decoration: none" class="c-area-card__title">San Francisco</div> 394 </div> 395 </a> 396 397 398 <a class="c-area-card c-area-card--luxury_landscape" id="51278" href="/areas/oakland"> 399 <div class="c-area-card__image"> 400 401 <img alt="Oakland" class="photo-attribution-custom" title="["<a href=\"https://maps.google.com/maps/contrib/115061239080648421931\">Rogelio Sánchez</a>"]" data-logo="https://prd-assets1.fastly.propertybase.com/assets/svgs/frontend/social/google_logo-12dc077c1feeeb24f6e9057caf38391376615ee7f05befd435f1b18b98e01209.svg" data-credit="["<a href=\"https://maps.google.com/maps/contrib/115061239080648421931\">Rogelio Sánchez</a>"]" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51278/4b416e52fd4bcc15e50785498af2995c.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51278/4b416e52fd4bcc15e50785498af2995c.jpg?width=362&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 362w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51278/4b416e52fd4bcc15e50785498af2995c.jpg?width=460&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 460w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51278/4b416e52fd4bcc15e50785498af2995c.jpg?width=766&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 766w" sizes="(min-width: 1200px) 362px, (min-width: 768px) 460px, (min-width: 737px) 766px, 767px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/51278/4b416e52fd4bcc15e50785498af2995c.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50" /> 402 <span class="c-area-card__connect-button">Details</span> 403 </div> 404 <div class="c-area-card__details"> 405 <div style="text-decoration: none" class="c-area-card__title">Oakland</div> 406 </div> 407 </a> 408 409 410 <a class="c-area-card c-area-card--luxury_landscape" id="62017" href="/areas/napa-county-or-american-canyon"> 411 <div class="c-area-card__image"> 412 413 <img alt="Napa County" class="photo-attribution-custom" title="<a href="https://maps.google.com/maps/contrib/106611218431636014030">Inês Martins</a>" data-logo="https://prd-assets1.fastly.propertybase.com/assets/svgs/frontend/social/google_logo-12dc077c1feeeb24f6e9057caf38391376615ee7f05befd435f1b18b98e01209.svg" data-credit="<a href="https://maps.google.com/maps/contrib/106611218431636014030">Inês Martins</a>" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/62017/c0d295988754ce3009b2c71ed43e42a6.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/62017/c0d295988754ce3009b2c71ed43e42a6.jpg?width=362&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 362w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/62017/c0d295988754ce3009b2c71ed43e42a6.jpg?width=460&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 460w, https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/62017/c0d295988754ce3009b2c71ed43e42a6.jpg?width=766&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50 766w" sizes="(min-width: 1200px) 362px, (min-width: 768px) 460px, (min-width: 737px) 766px, 767px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/area_profile/gallery_image/62017/c0d295988754ce3009b2c71ed43e42a6.jpg?width=767&optimize=medium&auto=webp&crop=16:9,offset-x50,offset-y50" />
414 <span class="c-area-card__connect-button">Details</span> 415 </div> 416 <div class="c-area-card__details"> 417 <div style="text-decoration: none" class="c-area-card__title">Napa County</div> 418 </div> 419 </a> 420 421 422 </div> 423 424 425 <a class="view-all" href="/areas">View All</a> 426 </div> 427 </div> 428 429 430 431 <!-- FEATURED PROPS --> 432 433 434 435 436 437<div class="full-screen-width section card_slider arrows featured-agents-wrapper" > 438 <div class="text-center slick-container container"> 439 <h2 class="body-title text-md-center text-sm-center"> 440 Our Agents 441 </h2> 442 443 444 <div id="agents-slider" class="agent-slider-carousel responsive slider"> 445 446 447 <div class="c-agent-card c-agent-card--1 default "> 448 <div class="c-agent-card__inner"> 449 <a class="c-agent-card__image non-link" href="/agents/120820-tashanique-brown"> 450 <div class="c-agent-card__image"> 451 <img alt="Tashanique Brown headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120820/a03b1122dd6cbee67010da8c090d3192.png?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120820/a03b1122dd6cbee67010da8c090d3192.png?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120820/a03b1122dd6cbee67010da8c090d3192.png?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120820/a03b1122dd6cbee67010da8c090d3192.png?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120820/a03b1122dd6cbee67010da8c090d3192.png?width=300&optimize=low&auto=webp" /> 452 </div> 453</a> <div class="c-agent-card__details"> 454 <div class="c-agent-card__details__inner"> 455 <div class="c-agent-card__name pb-2"> 456 <a class="non-link" href="/agents/120820-tashanique-brown"> 457 Tashanique </br>Brown 458</a> </div> 459 <div class="c-agent-card__office"> 460 Cotton Realty 461 </div> 462 <div class="c-agent-card__phone"> 463 <a class="non-link" data-type="Agent" href="tel:510-807-7133">510-807-7133</a><br /> 464 </div> 465 </div> 466 <div class="c-agent-card__email"> 467 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 468 </div> 469 </div> 470 </div> 471 </div> 472 473 474 475 <div class="c-agent-card c-agent-card--1 default "> 476 <div class="c-agent-card__inner"> 477 <a class="c-agent-card__image non-link" href="/agents/119699-ria-cotton"> 478 <div class="c-agent-card__image"> 479 <img alt="Ria Cotton headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/119699/c5cfbb984b459d0e0eab5b5d6c1f2a9d.jpg?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/119699/c5cfbb984b459d0e0eab5b5d6c1f2a9d.jpg?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/119699/c5cfbb984b459d0e0eab5b5d6c1f2a9d.jpg?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/119699/c5cfbb984b459d0e0eab5b5d6c1f2a9d.jpg?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/119699/c5cfbb984b459d0e0eab5b5d6c1f2a9d.jpg?width=300&optimize=low&auto=webp" /> 480 </div> 481</a> <div class="c-agent-card__details"> 482 <div class="c-agent-card__details__inner"> 483 <div class="c-agent-card__name pb-2"> 484 <a class="non-link" href="/agents/119699-ria-cotton"> 485 Ria</br>Cotton 486</a> </div> 487 <div class="c-agent-card__office"> 488 Cotton Realty 489 </div> 490 <div class="c-agent-card__phone"> 491 <a class="non-link" data-type="Agent" href="tel:510.385.0409">510.385.0409</a><br /> 492 </div> 493 </div> 494 <div class="c-agent-card__email"> 495 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 496 </div> 497 </div> 498 </div> 499 </div> 500 501 502 503 <div class="c-agent-card c-agent-card--1 default "> 504 <div class="c-agent-card__inner"> 505 <a class="c-agent-card__image non-link" href="/agents/120821-destiny-brown"> 506 <div class="c-agent-card__image"> 507 <img alt="Destiny Brown headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120821/d3e771a8057c00767e0a139dea00211e.jpg?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120821/d3e771a8057c00767e0a139dea00211e.jpg?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120821/d3e771a8057c00767e0a139dea00211e.jpg?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120821/d3e771a8057c00767e0a139dea00211e.jpg?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120821/d3e771a8057c00767e0a139dea00211e.jpg?width=300&optimize=low&auto=webp" /> 508 </div> 509</a> <div class="c-agent-card__details"> 510 <div class="c-agent-card__details__inner"> 511 <div class="c-agent-card__name pb-2"> 512 <a class="non-link" href="/agents/120821-destiny-brown"> 513 Destiny</br>Brown 514</a> </div> 515 <div class="c-agent-card__office"> 516 Cotton Realty 517 </div> 518 <div class="c-agent-card__phone"> 519 <a class="non-link" data-type="Agent" href="tel:415.802.3544">415.802.3544</a><br /> 520 </div> 521 </div> 522 <div class="c-agent-card__email"> 523 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 524 </div> 525 </div> 526 </div> 527 </div> 528 529 530 531 <div class="c-agent-card c-agent-card--1 default "> 532 <div class="c-agent-card__inner"> 533 <a class="c-agent-card__image non-link" href="/agents/120825-kaley-mason"> 534 <div class="c-agent-card__image"> 535 <img alt="Kaley Mason headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120825/4243a93347c3f81ff256fedb8df0d5d7.jpg?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120825/4243a93347c3f81ff256fedb8df0d5d7.jpg?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120825/4243a93347c3f81ff256fedb8df0d5d7.jpg?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120825/4243a93347c3f81ff256fedb8df0d5d7.jpg?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120825/4243a93347c3f81ff256fedb8df0d5d7.jpg?width=300&optimize=low&auto=webp" /> 536 </div> 537</a> <div class="c-agent-card__details"> 538 <div class="c-agent-card__details__inner"> 539 <div class="c-agent-card__name pb-2"> 540 <a class="non-link" href="/agents/120825-kaley-mason"> 541 Kaley</br>Mason 542</a> </div> 543 <div class="c-agent-card__office"> 544 Cotton Realty 545 </div> 546 <div class="c-agent-card__phone"> 547 <a class="non-link" data-type="Agent" href="tel:5102299575">5102299575</a><br /> 548 </div> 549 </div> 550 <div class="c-agent-card__email"> 551 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 552 </div> 553 </div> 554 </div> 555 </div> 556 557 558 559 <div class="c-agent-card c-agent-card--1 default "> 560 <div class="c-agent-card__inner"> 561 <a class="c-agent-card__image non-link" href="/agents/120824-lanise-spann"> 562 <div class="c-agent-card__image"> 563 <img alt="Lanise Spann headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120824/49f55c3a50ebe14f2a603e75008bfd9a.png?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120824/49f55c3a50ebe14f2a603e75008bfd9a.png?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120824/49f55c3a50ebe14f2a603e75008bfd9a.png?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120824/49f55c3a50ebe14f2a603e75008bfd9a.png?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120824/49f55c3a50ebe14f2a603e75008bfd9a.png?width=300&optimize=low&auto=webp" /> 564 </div> 565</a> <div class="c-agent-card__details"> 566 <div class="c-agent-card__details__inner"> 567 <div class="c-agent-card__name pb-2"> 568 <a class="non-link" href="/agents/120824-lanise-spann"> 569 Lanise </br>Spann 570</a> </div> 571 <div class="c-agent-card__office"> 572 Cotton Realty 573 </div> 574 <div class="c-agent-card__phone"> 575 <a class="non-link" data-type="Agent" href="tel:707.297.0398">
575707.297.0398</a><br /> 576 </div> 577 </div> 578 <div class="c-agent-card__email"> 579 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 580 </div> 581 </div> 582 </div> 583 </div> 584 585 586 587 <div class="c-agent-card c-agent-card--1 default "> 588 <div class="c-agent-card__inner"> 589 <a class="c-agent-card__image non-link" href="/agents/120823-claudia-schutlz"> 590 <div class="c-agent-card__image"> 591 <img alt="Claudia Schutlz headshot" loading="lazy" decoding="async" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120823/a9062b388940cf015d44add0fd70b708.png?width=300&optimize=low&auto=webp 300w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120823/a9062b388940cf015d44add0fd70b708.png?width=400&optimize=medium&auto=webp 400w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120823/a9062b388940cf015d44add0fd70b708.png?width=767&optimize=medium&auto=webp 767w, https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120823/a9062b388940cf015d44add0fd70b708.png?width=500&optimize=medium&auto=webp 500w" sizes="(min-width: 768px) 400px, (min-width: 500px) 767px, (min-width: 300px) 500px, 300px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/agent/photo/120823/a9062b388940cf015d44add0fd70b708.png?width=300&optimize=low&auto=webp" /> 592 </div> 593</a> <div class="c-agent-card__details"> 594 <div class="c-agent-card__details__inner"> 595 <div class="c-agent-card__name pb-2"> 596 <a class="non-link" href="/agents/120823-claudia-schutlz"> 597 Claudia</br>Schutlz 598</a> </div> 599 <div class="c-agent-card__title pb-2"> 600 Claudia Marissa 601 </div> 602 <div class="c-agent-card__office"> 603 Cotton Realty 604 </div> 605 <div class="c-agent-card__phone"> 606 <a class="non-link" data-type="Agent" href="tel:(510) 495-4503">(510) 495-4503</a><br /> 607 </div> 608 </div> 609 <div class="c-agent-card__email"> 610 <a class="agent-email c-agent-card__btn st-btn btn-primary btn px-4 agent_email" title="[email protected]" data-type="Agent" href="mailto:[email protected]">Contact Me</a> 611 </div> 612 </div> 613 </div> 614 </div> 615 616 </div> 617 618 <div class="bumper clear-both"></div> 619 620 <a class="view-all" href="/agents">View All</a> 621 622 </div> 623 <div class="spacer"></div> 624</div> 625 626 627 628 <div class="market-classic breakout market-updates section card_slider" > 629 <div class="container"> 630 <div class="row"> 631 <div class="col-sm-12 text-center"> 632 <h2 class="body-title">Oakland, CA Market Data</h2> 633 634 635 <div class="home-market-report mobile-kill-padding"> 636 <div class="kill-padding text-left"> 637 <div id="market-slider" class="responsive slider"> 638 639<div class="c-market-report-summary-card c-market-report-summary-card--7 luxury_rectangle"> 640 <div class="c-market-report-summary-card__inner"> 641 <div class="c-market-report-summary-card__total"> 642 396 643 </div> 644 <div class="c-market-report-summary-card__title" data-toggle="tooltip" data-placement="top" title="Number of properties listed for sale during the selected time period" ># New Properties</div> 645 <div class="c-market-report-summary-card__change is-up"> 646 5.04% Increase 647 </div> 648 </div> 649 <div class="c-market-report-summary-card__chart" id="flag_summary-chart"></div> 650
650<script type="text/javascript"> 651 miDataOptions['flag_summary'] = { 652 data: [[1759302000000,326],[1761980400000,183],[1764576000000,97],[1767254400000,288],[1769932800000,286],[1772352000000,388],[1775026800000,361],[1777618800000,344],[1780297200000,334],[1782889200000,309],[1785567600000,329],[1788246000000,377]], 653 data_type: 'count', 654 options: { 655 chart: { 656 id: 'flag_summary-chart', 657 type: 'area', 658 height: 100, 659 zoom: {enabled: false}, 660 toolbar: {show: false}, 661 // group: '2', 662 sparkline: { enabled: true}, 663 animations: { 664 enabled: true, 665 easing: 'easeinout', 666 speed: 800, 667 animateGradually: { 668 enabled: true, 669 delay: 150 670 } 671 } 672 }, 673 colors: ['#fff'], 674 stroke: { width: 2 }, 675 dataLabels: {enabled: false}, 676 series: [{ 677 name: '# New Properties', 678 data: [[1759302000000,326],[1761980400000,183],[1764576000000,97],[1767254400000,288],[1769932800000,286],[1772352000000,388],[1775026800000,361],[1777618800000,344],[1780297200000,334],[1782889200000,309],[1785567600000,329],[1788246000000,377]] 679 }], 680 tooltip: { 681 followCursor: false, 682 theme: 'dark', 683 x: { 684 show: false 685 }, 686 marker: { show: false }, 687 y: { 688 formatter: function(value) { 689 return numeral(value).format('(0,0)') 690 } 691 } 692 } 693 } 694 } 695 </script>
695 696</div> 697 698 699<div class="c-market-report-summary-card c-market-report-summary-card--7 luxury_rectangle"> 700 <div class="c-market-report-summary-card__inner"> 701 <div class="c-market-report-summary-card__total"> 702 191 703 </div> 704 <div class="c-market-report-summary-card__title" data-toggle="tooltip" data-placement="top" title="Number of properties sold during the selected time period" ># Sold Properties</div> 705 <div class="c-market-report-summary-card__change is-down"> 706 12.39% Decrease 707 </div> 708 </div> 709 <div class="c-market-report-summary-card__chart" id="key_icon_summary-chart"></div> 710
710<script type="text/javascript"> 711 miDataOptions['key_icon_summary'] = { 712 data: [[1759302000000,250],[1761980400000,228],[1764576000000,211],[1767254400000,133],[1769932800000,157],[1772352000000,218],[1775026800000,242],[1777618800000,238],[1780297200000,249],[1782889200000,264],[1785567600000,207],[1788246000000,218]], 713 data_type: 'count', 714 options: { 715 chart: { 716 id: 'key_icon_summary-chart', 717 type: 'area', 718 height: 100, 719 zoom: {enabled: false}, 720 toolbar: {show: false}, 721 // group: '2', 722 sparkline: { enabled: true}, 723 animations: { 724 enabled: true, 725 easing: 'easeinout', 726 speed: 800, 727 animateGradually: { 728 enabled: true, 729 delay: 150 730 } 731 } 732 }, 733 colors: ['#fff'], 734 stroke: { width: 2 }, 735 dataLabels: {enabled: false}, 736 series: [{ 737 name: '# Sold Properties', 738 data: [[1759302000000,250],[1761980400000,228],[1764576000000,211],[1767254400000,133],[1769932800000,157],[1772352000000,218],[1775026800000,242],[1777618800000,238],[1780297200000,249],[1782889200000,264],[1785567600000,207],[1788246000000,218]] 739 }], 740 tooltip: { 741 followCursor: false, 742 theme: 'dark', 743 x: { 744 show: false 745 }, 746 marker: { show: false }, 747 y: { 748 formatter: function(value) { 749 return numeral(value).format('(0,0)') 750 } 751 } 752 } 753 } 754 } 755 </script>
755 756</div> 757 758 759<div class="c-market-report-summary-card c-market-report-summary-card--7 luxury_rectangle"> 760 <div class="c-market-report-summary-card__inner"> 761 <div class="c-market-report-summary-card__total"> 762 971 763 </div> 764 <div class="c-market-report-summary-card__title" data-toggle="tooltip" data-placement="top" title="Total number of properties that were active during the selected time period" ># Active Properties</div> 765 <div class="c-market-report-summary-card__change is-up"> 766 3.52% Increase 767 </div> 768 </div> 769 <div class="c-market-report-summary-card__chart" id="house_summary-chart"></div> 770
770<script type="text/javascript"> 771 miDataOptions['house_summary'] = { 772 data: [[1759302000000,1114],[1761980400000,899],[1764576000000,599],[1767254400000,611],[1769932800000,717],[1772352000000,911],[1775026800000,955],[1777618800000,936],[1780297200000,927],[1782889200000,849],[1785567600000,860],[1788246000000,938]], 773 data_type: 'count', 774 options: { 775 chart: { 776 id: 'house_summary-chart', 777 type: 'area', 778 height: 100, 779 zoom: {enabled: false}, 780 toolbar: {show: false}, 781 // group: '2', 782 sparkline: { enabled: true}, 783 animations: { 784 enabled: true, 785 easing: 'easeinout', 786 speed: 800, 787 animateGradually: { 788 enabled: true, 789 delay: 150 790 } 791 } 792 }, 793 colors: ['#fff'], 794 stroke: { width: 2 }, 795 dataLabels: {enabled: false}, 796 series: [{ 797 name: '# Active Properties', 798 data: [[1759302000000,1114],[1761980400000,899],[1764576000000,599],[1767254400000,611],[1769932800000,717],[1772352000000,911],[1775026800000,955],[1777618800000,936],[1780297200000,927],[1782889200000,849],[1785567600000,860],[1788246000000,938]] 799 }], 800 tooltip: { 801 followCursor: false, 802 theme: 'dark', 803 x: { 804 show: false 805 }, 806 marker: { show: false }, 807 y: { 808 formatter: function(value) { 809 return numeral(value).format('(0,0)') 810 } 811 } 812 } 813 } 814 } 815 </script>
815 816</div> 817 818 819<div class="c-market-report-summary-card c-market-report-summary-card--7 luxury_rectangle"> 820 <div class="c-market-report-summary-card__inner"> 821 <div class="c-market-report-summary-card__total"> 822 $786K 823 </div> 824 <div class="c-market-report-summary-card__title" data-toggle="tooltip" data-placement="top" title="Average list price for listings that were active during the selected time period" >Avg. List Price - Active Properties</div> 825 <div class="c-market-report-summary-card__change is-down"> 826 0.70% Decrease 827 </div> 828 </div> 829 <div class="c-market-report-summary-card__chart" id="money_summary-chart"></div> 830
830<script type="text/javascript"> 831 miDataOptions['money_summary'] = { 832 data: [[1759302000000,766482.0],[1761980400000,735517.0],[1764576000000,707235.0],[1767254400000,694724.0],[1769932800000,751653.0],[1772352000000,765911.0],[1775026800000,804500.0],[1777618800000,790693.0],[1780297200000,784844.0],[1782889200000,741627.0],[1785567600000,738060.0],[1788246000000,791715.0]], 833 data_type: 'currency', 834 options: { 835 chart: { 836 id: 'money_summary-chart', 837 type: 'area', 838 height: 100, 839 zoom: {enabled: false}, 840 toolbar: {show: false}, 841 // group: '2', 842 sparkline: { enabled: true}, 843 animations: { 844 enabled: true, 845 easing: 'easeinout', 846 speed: 800, 847 animateGradually: { 848 enabled: true, 849 delay: 150 850 } 851 } 852 }, 853 colors: ['#fff'], 854 stroke: { width: 2 }, 855 dataLabels: {enabled: false}, 856 series: [{ 857 name: 'Avg. List Price - Active Properties', 858 data: [[1759302000000,766482.0],[1761980400000,735517.0],[1764576000000,707235.0],[1767254400000,694724.0],[1769932800000,751653.0],[1772352000000,765911.0],[1775026800000,804500.0],[1777618800000,790693.0],[1780297200000,784844.0],[1782889200000,741627.0],[1785567600000,738060.0],[1788246000000,791715.0]] 859 }], 860 tooltip: { 861 followCursor: false, 862 theme: 'dark', 863 x: { 864 show: false 865 }, 866 marker: { show: false }, 867 y: { 868 formatter: function(value) { 869 return numeral(value).format('($0.0 a)') 870 } 871 } 872 } 873 } 874 } 875 </script>
875 876</div> 877 878 </div> 879 </div> 880 </div> 881 <div class="disclaimer text-center small pb-2"> 882 Statistics above are calculated on activity within the period from Sep, 04 2026 to Oct, 04 2026<br/> 883 Increase/Decrease activity is compared to the month of September. 884 <a style="text-decoration: underline; font-weight: 600;" data-toggle="modal" data-target="#rb_subscribe_form" href="javascript:void(0)">Subscribe to Market Insights</a> 885 </div> 886 887 888 889 890 891 892 893 <div class="bumper clear"></div> 894 <a class="" aria="Link to Market Insights" alt="link to market insights" href="/market-insights">View All</a> 895 896 </div> 897 </div> 898 </div> 899</div> 900 901 902 <div class="homepage-below-fold-section" data-homepage-section="cms_content"> 903 <div class="cms-content-wrapper full-screen-width luxury" 904> 905 <div class="container"> 906 907 908 909 910 <article class="cms " style=""> 911 912 913 914 915 916 917 918 919 <div class="cms__content container wysywig-content cms-btn-solid cms-btn-sharp"> 920 921 <h1 class="text-center ">Cotton Realty</h1> 922 923 924 <div> <div><p style="text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WpLA3lsMx50?si=26evaQDp0BogXlK6" title="YouTube video player" width="560"></iframe></p></div> 925 926 927 928</div> 929 930 </div> 931 </article> 932 933 </div> 934 </div> 935 </div> 936 937 938 939 940 941 942 943 944 <!-- quicksearch option 2 --> 945 946<div id="qs-complex-wrapper" 947 class="full-screen-width" 948> 949 <div class="container"> 950 <div class="home-qs-complex col-sm-12 p-0 luxury" style="min-width: 100%;"> 951 952 <div class="qs-complex-forms" data-qs-container> 953 <div class="qs-form" data-qs-form="mls"> 954 <form class="" id="new_desktop_qs_sales_search" title="Perform a property search using the form." data-qs-search-form="true" data-mls-action="/searches" data-ygl-action="/rental_searches" action="/searches" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="Ct1fIDMZX-zU1gXGkA87LB2AzPIuQY8er2okfscSQ6ZwYb9ZMCU9Zcpp3VndQjE-r86Mv48yGXPfPj7poa--qQ" autocomplete="off" /> 955 <input type="hidden" name="rental_search[towns]" id="homepage_rental_search_towns" value="" autocomplete="off" /> 956 <input type="hidden" name="rental_search[super_locations]" id="homepage_rental_search_super_locations" value="" autocomplete="off" /> 957 <input type="hidden" name="rental_search[min_beds]" id="homepage_rental_search_min_beds" value="" autocomplete="off" /> 958 <input type="hidden" name="rental_search[max_beds]" id="homepage_rental_search_max_beds" value="" autocomplete="off" /> 959 <input type="hidden" name="rental_search[min_baths]" id="homepage_rental_search_min_baths" value="" autocomplete="off" /> 960 <input type="hidden" name="rental_search[price_low]" id="homepage_rental_search_price_low" value="" autocomplete="off" /> 961 <input type="hidden" name="rental_search[price_high]" id="homepage_rental_search_price_high" value="" autocomplete="off" /> 962 963 964 965 <div id="borough-complexsearch" class="luxury" style="display: flex; height: unset; padding: unset; align-items: center; width: 100%; box-shadow: none;"> 966 <div class="supersearch-container col-md-4 col-sm-10 kill-padding p-0 "> 967 <input class="" id="homepage_search_super_locations" placeholder="Search By Address, City, Zip, or MLS #" aria-label="Search By Address, City, Zip, or MLS #" type="text" value="" name="search[super_locations]" /> 968 </div> 969 970 <div class="col-md-2 kill-padding p-0 home-qs-fields d-none d-md-block"> 971 <select title="Choose property types." aria-label="Choose property types." class="form-control" name="search[prop_type]" id="search_prop_type"><option value="">Type</option> 972<option selected="selected" value="">All</option> 973<option value="100013">Commercial/Industrial - Lease</option> 974<option value="100234">Commercial - Residential Income</option> 975<option value="100192">Manufactured in Park</option> 976<option value="100039">Residential Lease</option> 977<option value="100035">Commercial Lots and Land</option> 978<option value="100030">Commercial Sale</option> 979<option value="100029">Commercial Lease</option> 980<option value="100025">Residential</option> 981<option value="100024">Residential Income</option> 982<option value="8">Business Opportunity</option> 983<option value="5">Land</option> 984<option value="100038">Timeshare</option> 985<option value="1">Single Family</option> 986<option value="100012">Townhouse</option> 987<option value="10">Parking</option> 988<option value="9">Hotel</option> 989<option value="7">Commercial/Industrial</option> 990<option value="6">Rental</option> 991<option value="4">Multi Family</option> 992<option value="3">Condo</option> 993<option value="2">
993Mobile Home</option></select> 994 </div> 995 <div class="col-md-3 kill-padding p-0 home-qs-fields d-none d-md-flex" style="font-weight: 300"> 996 <div class="form-control qs-beds-button d-none d-sm-flex"> 997 <span class="dynamic-beds-count"> </span> <span class="dynamic-beds-character"></span> <span class="dynamic-max-beds-count"></span> Beds / 998 <span class="dynamic-baths-count"></span> Baths 999 </div> 1000 <div class="beds-qs-modal"> 1001 <div aria-label="beds-select" name="beds-select" role="group" class="new-beds-display"> 1002 <div class="close-button"></div> 1003 <label>Beds</label> 1004 <div class="checkbox-row m-auto"> 1005 <input class="min-beds-hidden-field" autocomplete="off" type="hidden" name="search[min_beds]" id="search_min_beds" /> 1006 <input class="max-beds-hidden-field" autocomplete="off" type="hidden" name="search[max_beds]" id="search_max_beds" /> 1007 <input type="checkbox" name="new-beds-checkbox-any" id="new-beds-checkbox-any" value="any" class="new-beds-checkbox-input" checked="checked" /> 1008 <label class="new-beds-checkbox plus " for="new-beds-checkbox-any">Any</label> 1009 <input type="checkbox" name="new-beds-checkbox-1" id="new-beds-checkbox-1" value="1" class="new-beds-checkbox-input" /> 1010 <label class="new-beds-checkbox" for="new-beds-checkbox-1"> 1011 1 1012 <span class="">+</span> 1013</label> <input type="checkbox" name="new-beds-checkbox-2" id="new-beds-checkbox-2" value="2" class="new-beds-checkbox-input" /> 1014 <label class="new-beds-checkbox" for="new-beds-checkbox-2"> 1015 2 1016 <span class="">+</span> 1017</label> <input type="checkbox" name="new-beds-checkbox-3" id="new-beds-checkbox-3" value="3" class="new-beds-checkbox-input" /> 1018 <label class="new-beds-checkbox" for="new-beds-checkbox-3"> 1019 3 1020 <span class="">+</span> 1021</label> <input type="checkbox" name="new-beds-checkbox-4" id="new-beds-checkbox-4" value="4" class="new-beds-checkbox-input" /> 1022 <label class="new-beds-checkbox" for="new-beds-checkbox-4"> 1023 4 1024 <span class="">+</span> 1025</label> <input type="checkbox" name="new-beds-checkbox-5" id="new-beds-checkbox-5" value="5" class="new-beds-checkbox-input" /> 1026 <label class="new-beds-checkbox" for="new-beds-checkbox-5"> 1027 5 1028 <span class="">+</span> 1029</label> <input type="checkbox" name="new-beds-checkbox-6" id="new-beds-checkbox-6" value="6" class="new-beds-checkbox-input" /> 1030 <label class="new-beds-checkbox" for="new-beds-checkbox-6"> 1031 6 1032 <span class="">+</span> 1033</label> </div> 1034 </div> 1035 <div class="exact-count-checkbox form-check" style="padding-top: 14px;"> 1036 <input type="checkbox" name="beds_exact_count" id="beds_exact_count" value="1" class="form-check-input" /> 1037 <label class="form-check-label" for="beds_exact_count"></label> 1038 </div> 1039 <div aria-label="baths-select" name="baths-select" role="group" class="new-baths-display" style="margin-top: 14px;"> 1040 <label>Baths</label> 1041 <div class="checkbox-row m-auto"> 1042 <input class="new-baths-checkbox-input" id="baths-checkbox-0" type="checkbox" value="" name="search[min_baths_select]" /> 1043 <label for="baths-checkbox-0" class="new-baths-checkbox">Any</label> 1044 <input class="new-baths-checkbox-input" id="baths-checkbox-1" type="checkbox" value="1" name="search[min_baths_select]" /> 1045 <label for="baths-checkbox-1" class="new-baths-checkbox">1+</label> 1046 <input class="new-baths-checkbox-input" id="baths-checkbox-2" t
1046ype="checkbox" value="1.5" name="search[min_baths_select]" /> 1047 <label for="baths-checkbox-2" class="new-baths-checkbox">1.5+</label> 1048 <input class="new-baths-checkbox-input" id="baths-checkbox-3" type="checkbox" value="2" name="search[min_baths_select]" /> 1049 <label for="baths-checkbox-3" class="new-baths-checkbox">2+</label> 1050 <input class="new-baths-checkbox-input" id="baths-checkbox-4" type="checkbox" value="3" name="search[min_baths_select]" /> 1051 <label for="baths-checkbox-4" class="new-baths-checkbox">3+</label> 1052 <input class="new-baths-checkbox-input" id="baths-checkbox-5" type="checkbox" value="4" name="search[min_baths_select]" /> 1053 <label for="baths-checkbox-5" class="new-baths-checkbox">4+</label> 1054 <input class="new-baths-checkbox-input" id="baths-checkbox-6" type="checkbox" value="5" name="search[min_baths_select]" /> 1055 <label for="baths-checkbox-6" class="new-baths-checkbox">5+</label> 1056 </div> 1057 </div> 1058 </div> 1059 </div> 1060 1061 <div class="col-md-2 kill-padding p-0 home-qs-fields d-none d-md-flex"> 1062 <div class="form-control qs-price-button"> 1063 <span class="dynamic-price-placeholder">Price</span> 1064 <span class="dynamic-min-price"></span> 1065 <span class="dynamic-divider" style="padding: 0 5px"> - </span> 1066 <span class="dynamic-max-price"></span> 1067 </div> 1068 <div class="price-qs-modal" style="border: 1px solid #cacaca"> 1069 <label for="search_Min Price">Min price</label> 1070 <input title="Select a minimum price." aria-label="Select a minimum price." class="form-control" type="text" name="search[min_price_text]" id="search_min_price_text" /> 1071 <label style="margin-top: 11px" for="search_Max Price">Max price</label> 1072 <input title="Select a maximum price." aria-label="Select a maximum price." class="form-control" type="text" name="search[max_price_text]" id="search_max_price_text" /> 1073 </div> 1074 </div> 1075 1076 <div class="p-0 col-sm-2 col-md-1 quarter-padding search-field-margin style-simple" id="borough-complexsearch-button"> 1077 <a href="javascript:$('#new_desktop_qs_sales_search').submit();" class="btn btn-default btn-primary btn-sm full-width" aria-label="Search for properties"> 1078 <svg class="magnifying-icon" height="28px" width="28px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30" height="30" x="0px" y="0px" viewBox="6 118.6 556.4 556.4" enable-background="new 6 118.6 556.4 556.4" xml:space="preserve"> 1079 <path d="M543.7,565.5l-61.1-61.1c-0.8-0.8-1.7-1.6-2.6-2.2c22.4-37.9,35.2-82,35.2-129c0-140.4-114.2-254.5-254.5-254.5 1080 C120.2,118.6,6,232.8,6,373.1c0,140.4,114.2,254.5,254.5,254.5c47.1,0,91.2-12.9,129-35.2c0.7,0.9,1.4,1.8,2.2,2.6l61.1,61.1 1081 c12.1,12.1,28.2,18.8,45.4,18.8c17.1,0,33.3-6.7,45.4-18.8C568.7,631.2,568.7,590.5,543.7,565.5z M82.4,373.1 1082 c0-98.2,79.9-178.1,178.1-178.1c98.2,0,178.1,79.9,178.1,178.1s-79.9,178.1-178.1,178.1S82.4,471.3,82.4,373.1z"></path> 1083 </svg> 1084 </a> 1085 </div> 1086 1087 </div> 1088</form> <div class="clear-both advanced-link small-text row pl-1 small text-left d-none d-sm-block" style="margin-top: 14px"> 1089 <a data-qs-advanced-link="true" data-mls-url="/searches/new" data-ygl-url="/rental_searches" href="/searches/new">Advanced Search</a> 1090 </div> 1091 </div> 1092 1093 </div> 1094 1095 </div> 1096 </div> 1097</div> 1098 1099 1100 1101 1102 1103 1104 1105 </main> 1106 1107 <footer style="" > 1108 <div class="c-footer c-footer--luxury full-width"> 1109 <div class="c-footer__top "> 1110 <div class="row"> 1111 <div class="col-lg-3 col-md-12 c-footer__nav"> 1112 <li class="nav-item first_item"><a class="nav-link" href="/properties/sale_prices">Sell</a></li> <li class="nav-item "><a class="nav-link" href="/agents">Find a Realtor</a></li> <li class="nav-item parent"><a class="nav-link dropdown-toggle" data-toggle="hover-dropdown" aria-expanded="false" aria-haspopup="true" href="/privacy-policy">Legal</a><div class="dropdown-menu"><a class="dropdown-item" href="/privacy-policy">Privacy Policy</a> <a class="dropdown-item" href="/dmca-notice">DMCA notice</a></div></li> <li class="nav-item last_item"><a class="nav-link" href="/contact">Contact</a></li> 1113 1114 </div> 1115 1116 <div class="col-lg-2 col-md-12 social-flags"> 1117 <div class="c-footer__social"> 1118 <div class="c-social-media c-footer__social-media "> 1119 1120 <div class="js-social-share-wrapper c-social-media__share-btn"> 1121 1122 <a href="javascript:void(0)" aria-label="social share modal trigger" class="js-social-share-trigger" name="social-share-button"> 1123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 110.3 611.9 611.9"><path d="M252.5 418.6c0 1.2-.3 2.4-.4 3.7l130.3 65c11.1-9.4 25.4-15.3 41.2-15.3 35.4 0 64.1 28.7 64.1 64.1 0 35.5-28.7 64.2-64.1 64.2-35.5 0-64.1-28.7-64.1-64.2 0-1.3.3-2.4.4-3.7l-130.2-65.1c-11.2 9.4-25.4 15.3-41.2
112315.3-35.4 0-64.1-28.7-64.1-64.1 0-35.5 28.7-64.2 64.1-64.2 15.8 0 30 5.9 41.2 15.3l130.2-65.1c-.1-1.2-.4-2.4-.4-3.7 0-35.4 28.7-64.1 64.1-64.1s64.1 28.7 64.1 64.1c0 35.5-28.7 64.2-64.1 64.2-15.8 0-30-5.9-41.2-15.4l-130.2 65.1c0 1.4.3 2.6.3 3.9z"></path></svg> 1124 1125 </a> 1126 1127 <div class="js-social-share c-social-media__share-container" style="display: none;"> 1128 <div class="c-social-media__share-item"> 1129 <a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-url="https://www.cotton-realty.com/" data-text="Check out this site">Post</a> 1130 </div> 1131 <div class="c-social-media__share-item fb-like" data-href="https://www.cotton-realty.com/" data-width="50" data-layout="button" data-action="like" data-show-faces="false" data-share="false" style="height:20px; width: 20px;"></div> 1132 <div class="c-social-media__share-item fb-share-button" data-href="https://www.cotton-realty.com/" data-layout="button" style="height:20px; width: 20px;"></div> 1133 <div class="c-social-media__share-item fb-send" data-href="https://www.cotton-realty.com/" style="height:20px; width: 20px;"></div> 1134 <div class="c-social-media__share-item"> 1135
1135<script type="IN/Share" data-url="https://www.cotton-realty.com/" data-counter="none" data-onSuccess="linkedinShared"></script>
1135 1136 </div> 1137 <div class="c-social-media__share-item"> 1138 <a href="//www.pinterest.com/pin/create/button/" class="pin-it-button" data-pin-do="buttonBookmark" data-pin-config="none"> 1139 <img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /> 1140 </a> 1141 </div> 1142 </div> 1143 1144 </div> 1145 1146 1147 <a name="Facebook" class="c-social-media__link c-social-media__link--fb" target="_blank" aria-label="Follow us on Facebook" href="https://www.facebook.com/CottonRealty/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 110.3 611.9 611.9"><path d="M252 638.4V434.3h-66v-90h66v-34.8c0-60.6 45.6-115.3 101.4-115.3H426v90h-72.6c-7.8 0-17.4 9.6-17.4 24v36h90v90h-90v204.1h-84z"></path></svg> 1148</a> 1149 1150 1151 1152 1153 1154 1155 1156 <a name="Instagram" class="c-social-media__link c-social-media__link--ig" target="_blank" aria-label="Follow us on Instagram" href="https://www.instagram.com/cotton_realty/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 611.9 611.9"><path d="M484 232.2c-.9-19.1-3.9-32.1-8.3-43.5-4.6-11.8-10.7-21.8-20.7-31.7-10-10-19.9-16.1-31.7-20.7-11.4-4.4-24.4-7.5-43.5-8.3-19.1-.9-25.2-1.1-73.8-1.1-48.6 0-54.7.2-73.8 1.1-19.1.9-32.1 3.9-43.5 8.3-11.8 4.6-21.8 10.7-31.7 20.7-10 10-16.1 19.9-20.7 31.7-4.4 11.4-7.5 24.4-8.3 43.5-.9 19.1-1.1 25.2-1.1 73.8 0 48.6.2 54.7 1.1 73.8.9 19.1 3.9 32.1 8.3 43.5 4.6 11.8 10.7 21.8 20.7 31.7 10 10 19.9 16.1 31.7 20.7 11.4 4.4 24.4 7.5 43.5 8.3 19.1.9 25.2 1.1 73.8 1.1 48.6 0 54.7-.2 73.8-1.1 19.1-.9 32.1-3.9 43.5-8.3 11.8-4.6 21.8-10.7 31.7-20.7 10-10 16.1-19.9 20.7-31.7 4.4-11.4 7.5-24.4 8.3-43.5.9-19.1 1.1-25.2 1.1-73.8s-.2-54.7-1.1-73.8zm-32.2 146.2c-.8 17.5-3.7 26.9-6.2 33.3-3.2 8.4-7.1 14.3-13.4 20.6-6.3 6.3-12.2 10.1-20.6 13.4-6.3 2.5-15.8 5.4-33.3 6.2-18.9.9-24.5 1-72.4 1s-53.5-.2-72.4-1c-17.5-.8-26.9-3.7-33.3-6.2-8.4-3.2-14.3-7.1-20.6-13.4-6.3-6.3-10.1-12.2-13.4-20.6-2.5-6.3-5.4-15.8-6.2-33.3-.9-18.9-1-24.6-1-72.4s.2-53.5 1-72.4c.8-17.5 3.7-26.9 6.2-33.3 3.2-8.4 7.1-14.3 13.4-20.6 6.3-6.3 12.2-10.1 20.6-13.4 6.3-2.5 15.8-5.4 33.3-6.2 18.9-.9 24.6-1 72.4-1 47.8 0 53.5.2 72.4 1 17.5.8 26.9 3.7 33.3 6.2 8.4 3.2 14.3 7.1 20.6 13.4 6.3 6.3 10.1 12.2 13.4 20.6 2.5 6.3 5.4 15.8 6.2 33.3.9 18.9 1 24.6 1 72.4s-.2 53.5-1 72.4zM306 214c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 151.7c-33 0-59.7-26.7-59.7-59.7s26.7-59.7 59.7-59.7 59.7 26.7 59.7 59.7-26.7 59.7-59.7 59.7zm117.1-155.3c0 11.9-9.6 21.5-21.5 21.5s-21.5-9.6-21.5-21.5 9.6-21.5 21.5-21.5 21.5 9.6 21.5 21.5z"></path></svg> 1157</a> 1158 1159 1160 1161 1162</div> 1163 1164 1165 </div> 1166 1167 </div> 1168 1169 <div class="col-lg-2 col-md-12 c-footer__company-info text-lg-left text-md-center"> 1170 <strong class="c-footer__company-name"> 1171 <p>Cotton Realty</p> 1172 </strong> 1173 <p class="c-footer__company-address">1901 Harrison St,, Suite 1100, Oakland, CA 94612</p> 1174 <p class="c-footer__company-email"> 1175 <a data-type="Company" aria-label="Cotton Realty email link" title="Email us at [email protected]" href="mailto:[email protected]">[email protected]</a> 1176 </p> 1177 <p class="c-footer__company-office-phone"> 1178 <a class="non-link" data-type="Office" href="tel:5103850409">5103850409</a> 1179 </p> 1180 </div> 1181 1182 <div class="col-lg-5 col-md-12 c-footer__logo"> 1183 <img alt="Company logo for Cotton Realty" srcset="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_footer_logo/48675/e5ab9a33eb5b237f2b6980dc9b49198c.png?width=700&optimize=medium&auto=webp 700w" sizes="700px" src="https://production-uploads.fastly.propertybase.com/assets/uploads/setting/company_footer_logo/48675/e5ab9a33eb5b237f2b6980dc9b49198c.png?width=700&optimize=medium&auto=webp" /> 1184 </div> 1185 </div> 1186 1187 1188 <div class="c-footer__disclaimer small text-md-left text-sm-center"> 1189 </div> 1190 <div class="copyright-container text-md-left text-sm-center"> 1191 <div class="c-footer__copyright"> 1192 Copyright © 2026 Cotton Realty. All rights reserved. 1193 License #: 01989725 1194 1195 <div class="c-footer__credit"> 1196 <a target="_blank" rel="nofollow" href="https://www.lwolf.com/">Powered by Lone Wolf Real Estate Technologies, Inc.</a> 1197 </div> 1198 <span class="pb-privacy-choices-footer-link"> 1199 <button type="button" class="pb-cookie-consent-link" data-cookie-consent-open="preferences" aria-controls="pb-cookie-consent" aria-expanded="false">Do Not Sell or Share My Personal Information</button> 1200 </span> 1201 1202 1203 </div> 1204 </div><br/> 1205 <div class="text-md-left text-sm-center"> 1206 <div class="c-footer__seo container"> 1207
1207<script type="application/ld+json"> 1208 { 1209 "@context": "http://schema.org/", 1210 "@type": "Organization", 1211 "name": "Cotton Realty", 1212 "description": "", 1213 "url": "https://www.cotton-realty.com", 1214 "sameAs": ["https://www.facebook.com/CottonRealty/","https://www.instagram.com/cotton_realty/"], 1215 "image": "", 1216 "location": [{"@type":"Place","geo":{"@type":"GeoCoordinates","latitude":"37.8068296","longitude":"-122.2659647"},"name":"Cotton Realty"}] 1217 } 1218</script>
1218 1219 1220 1221</div> 1222 1223 1224 1225 1226 </div> 1227 </div> 1228 </div> 1229</div> 1230 1231 1232 1233 1234 1235 </footer> 1236 1237
1237<script src="https://prd-assets2.fastly.propertybase.com/assets/frontend/homepage-274edf616347ec84711152001aecd9ec3cda8a961056ce1458dfef23df900736.js"></script>
1237 1238 1239
1239<script> 1240 var defaultCalendarEnd = '2027-10-08'; 1241 var suppressDropdownsInit = true; 1242 var nav = $('.c-navbar'); 1243 var navHeight; 1244 var homePage = $('.pg-pages-home_page').length > 0; 1245 1246 $(function() { 1247 navHeight = $('.c-navbar').outerHeight(); 1248 navBarWidth = $('.c-navbar .navbar-nav').outerWidth(); 1249 1250 $('[data-toggle="hover-dropdown"]').dropdownHoverTogle({svg_string: '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 7 4" style="enable-background:new 0 0 7 4;" xml:space="preserve" class="nav-chevron"><polyline points="0.5,0.5 3.5,3.5 6.5,0.5 "/></svg>'}); 1251 1252 hamburgerMenuHeight(); 1253 menuOverflow(); 1254 //setToolbarStyle(); 1255 1256 window.addEventListener('resize', hamburgerMenuHeight); 1257 window.addEventListener('resize', resetNav); 1258 window.addEventListener('resize', setPageMinHeight) 1259 window.addEventListener('resize', menuOverflow); 1260 window.addEventListener('load', menuOverflow); 1261 window.addEventListener('load', hamburgerMenuHeight); 1262 window.addEventListener('scroll', shrinkNav); 1263 1264 }) 1265 1266 setPageMinHeight(); 1267 1268 function setPageMinHeight(){ 1269 if (!homePage) { 1270 $('main.container').css('min-height', window.innerHeight - ($('nav').height()) - ($('.call-to-action').height())) 1271 } 1272 } 1273 1274 1275 $('.js-navbar-toggle').click(function() { 1276 $('.navbar-collapse').toggleClass('show') 1277 }) 1278 1279 var shrinkNav = function() { 1280 if (false || false || false ) { 1281 return; 1282 } 1283 1284 if (window.innerWidth >= 768 && ($(window).scrollTop() > navHeight)) { 1285 if (!nav.hasClass('is-shrunk')) { 1286 nav.hide(); 1287 nav.addClass('is-shrunk'); 1288 nav.show(); 1289 $('body').css('padding-top', $('.c-navbar').outerHeight() * 2); 1290 } 1291 } else { 1292 nav.removeClass('is-shrunk'); 1293 $('body').css('padding-top', 0); 1294 } 1295 } 1296 1297 var resetNav = debounce(function() { 1298 if(!screenSize('xs') && !screenSize('sm')) 1299 $('.navbar-collapse').removeClass('show'); 1300 }, 250); 1301 1302 var hamburgerMenuHeight = debounce(function() { 1303 navHeight = $('.c-navbar').outerHeight(); 1304 1305 if (nav.hasClass('c-navbar--hamburger')) { 1306 if(screenSize('xs') || screenSize('sm')) { 1307 $('.navbar-collapse').css('top', '') 1308 } 1309 else { 1310 $('.navbar-collapse').css('top', navHeight) 1311 } 1312 return; 1313 } 1314 1315 // Classic's mobile dropdown is fixed-positioned with a hardcoded 1316 // top offset in CSS, which is wrong whenever the header's actual 1317 // height differs (e.g. no logo uploaded shrinks the header row). 1318 if (nav.hasClass('c-navbar--classic') && (screenSize('xs') || screenSize('sm'))) { 1319 $('.navbar-collapse').css('top', navHeight); 1320 } 1321 }, 250); 1322 1323 function getHeaderStyle() { 1324 var navbarClass = $('.c-navbar').attr('class') || ''; 1325 var matches = navbarClass.split(/\s+/).filter(function(name) { 1326 return name.indexOf('c-navbar--') === 0; 1327 }); 1328 1329 if (!matches.length) { 1330 return ''; 1331 } 1332 1333 for (var i = 0; i < matches.length; i++) { 1334 if (matches[i].indexOf('c-navbar--classic_inline') === 0) { 1335 return 'classic_inline'; 1336 } 1337 } 1338 1339 return matches[matches.length - 1].replace('c-navbar--', '').trim(); 1340 } 1341 1342 var menuOverflow = function() { 1343 if ($('.landing-page').length || $('.c-navbar--hamburger').length) { 1344 return; 1345 } 1346 1347 var currentStyle = getHeaderStyle(); 1348 var inlineActive = currentStyle == 'classic_inline' && $(window).width() > 767; 1349 var navbar; 1350 1351 if (inlineActive) { 1352 navbar = $('.c-navbar__inline-nav .navbar-nav--right').first(); 1353 if (!navbar.length) { 1354 navbar = $('.c-navbar__inline-nav .navbar-nav--single').first(); 1355 } 1356 } 1357 1358 if (!navbar || !navbar.length) { 1359 inlineActive = false; 1360 if (currentStyle == 'classic_inline') { 1361 navbar = $('.c-navbar').find('.navbar-collapse .navbar-nav').first(); 1362 } else { 1363 navbar = $('.c-navbar').find('.navbar-nav').first(); 1364 } 1365 } 1366 1367 if (!navbar || !navbar.length) { 1368 navbar = $('.c-navbar').find('.navbar-nav').first(); 1369 } 1370 var moreBtn = $("<li style='display:none;' class='nav-item more-item parent'><a href='#' aria-expanded='false' aria-haspopup='true' class='nav-link dropdown-toggle' data-toggle='dropdown' title='More'>More</a><div class='dropdown-menu dropdown-menu-right nav-more-menu'></div></li>"); 1371 var navbarWidth = inlineActive ? navbar.outerWidth() : $('.c-navbar').width(); 1372 var dropdownTrigger = $("<span style='position: relative; right: -8px; top: 12px;' data-toggle='toggle-dropdown' class='dropdown-trigger trigger-closed hamburger-caret'><svg version='1.1' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='18.1 171.2 100 100' enable-background='new 18.1 171.2 100 100' xml:space='preserve'><rect x='31.6' y='218.1' width='73.1' height='6.1'/></svg><svg version='1.1' id='Capa_1' class='slug-transform' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='18.1 171.2 100 100' enable-background='new 18.1 171.2 100 100' xml:space='preserve'><rect x='31.6' y='218.1' width='73.1' height='6.1'/></svg></span>"); 1373 1374 // Handle case when no logo is uploaded - don't add any width 1375 var logoImg = $('.c-navbar .navbar-brand img'); 1376 var brandImgWidth = logoImg.length && logoImg.outerWidth() > 0 ? logoImg.outerWidth() + 75 : 0; 1377 1378 var navItems = navbar.find('> li:not(.more-item)');
1379 var lastMenuItem = navItems.last(); 1380 var firstMenuItem = navItems.first(); 1381 var hasHeaderLogo = $('.c-navbar .navbar-brand img').length > 0; 1382 1383 if (currentStyle == ''){ 1384 return; 1385 } 1386 1387 if (!inlineActive && currentStyle != 'classic' && currentStyle != 'classic_inline') { 1388 navbarWidth -= brandImgWidth; 1389 } 1390 if (currentStyle == 'modern-flipped') { 1391 navbarWidth -= 250; 1392 } 1393 1394 if ((currentStyle == 'slate' || currentStyle == 'marble') && hasHeaderLogo) { 1395 navbarWidth -= 150; 1396 } 1397 1398 if (currentStyle == 'luxury_transparent' && hasHeaderLogo) { 1399 navbarWidth -= 50; 1400 } 1401 1402 var cumulativeWidth = 0; 1403 var overflowList = []; 1404 1405 if(!$('.more-item').length){ 1406 navbar.append(moreBtn); 1407 navbar.find('.more-item > .dropdown-toggle').after('<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 7 4" style="enable-background:new 0 0 7 4;" xml:space="preserve" class="nav-chevron"><polyline points="0.5,0.5 3.5,3.5 6.5,0.5 "/></svg>'); 1408 } 1409 1410 $('.more-item.parent a.dropdown-toggle').on('click', function() { 1411 if ($(this).attr('aria-expanded') == 'false') { 1412 $(this).find('.dropdown-trigger').addClass('trigger-open'); 1413 $(this).find('.dropdown-trigger').removeClass('trigger-closed'); 1414 } else { 1415 $(this).find('.dropdown-trigger').addClass('trigger-closed'); 1416 $(this).find('.dropdown-trigger').removeClass('trigger-open'); 1417 } 1418 }); 1419 1420 // body on click if the aria-expanded is true then close the dropdown 1421 $('body').on('click', function(e) { 1422 if ($('.more-item.parent a.dropdown-toggle').attr('aria-expanded') == 'true') { 1423 $('.more-item.parent a.dropdown-toggle').find('.dropdown-trigger').addClass('trigger-closed'); 1424 $('.more-item.parent a.dropdown-toggle').find('.dropdown-trigger').removeClass('trigger-open'); 1425 } 1426 }); 1427 1428 1429 navbar.css('position', 'relative'); 1430 navItems.show(); 1431 1432 if (currentStyle == 'modern-stacked' || currentStyle == 'modern-flipped' || currentStyle == 'luxury_transparent') { 1433 var logoElement = $('.c-navbar .navbar-brand img'); 1434 var logoElementOffset = logoElement.length ? logoElement.offset() : null; 1435 var brandElementOffset = $('.c-navbar .navbar-brand').offset(); 1436 var logoOffset = logoElementOffset ? logoElementOffset.left : (brandElementOffset ? brandElementOffset.left : 0); 1437 var firstMenuOffset = firstMenuItem.offset(); 1438 var hasOverflow = firstMenuOffset ? (firstMenuOffset.left < (logoOffset + brandImgWidth)) : false; 1439 } else { 1440 var lastMenuOffset = lastMenuItem.offset(); 1441 var hasOverflow = lastMenuOffset ? ((lastMenuOffset.left + lastMenuItem.width()) > navbarWidth) : false; 1442 } 1443 1444 if(hasOverflow && $(window).width() > 767){ 1445 navItems.each(function() { 1446 cumulativeWidth += ($(this).outerWidth()); 1447 if((cumulativeWidth > navbarWidth)){ 1448 overflowList.push([this.outerHTML, $(this).width()]); 1449 $(this).hide(); 1450 } else { 1451 $(this).css('display', 'flex'); 1452 } 1453 }); 1454 } else { 1455 navbar.find('> li:not(.more-item)').css('display', 'flex'); 1456 } 1457 1458 handleOverflowList(overflowList, navbar, "chevron"); 1459}; 1460 1461function handleOverflowList(overflowList, navbar, indicatorStyle) { 1462 if (overflowList.length) { 1463 $('.more-item').css('display', 'flex'); 1464 var navMoreMenu = navbar.find('.nav-more-menu'); 1465 navMoreMenu.html(''); 1466 1467 $.each(overflowList, function () { 1468 var item = $(this[0]); 1469 item.find('.nav-link').removeClass('nav-link').addClass('dropdown-item'); 1470 item.find('span').remove(); 1471 navMoreMenu.append(item[0].outerHTML); 1472 }); 1473 1474 if (indicatorStyle == "chevron") { 1475 navMoreMenu.find('> li > [data-toggle="hover-dropdown"]').dropdownHoverTogle({svg_string: '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 7 4" style="enable-background:new 0 0 7 4;" xml:space="preserve" class="nav-chevron"><polyline points="0.5,0.5 3.5,3.5 6.5,0.5 "/></svg>'}); 1476 } else { 1477 navMoreMenu.find('> li > [data-toggle="hover-dropdown"]').dropdownHoverTogle(); 1478 } 1479 } else { 1480 if(screenSize('xs') || screenSize('sm')) { 1481 navbar.find('> li:not(.more-item)').css('display', 'flex'); 1482 $('.more-item').hide(); 1483 } else { 1484 $('.more-item').hide(); 1485 } 1486 } 1487} 1488</script>
1488 1489 1490 1491 <aside class="call-to-action layout_3 style_1 " style="--cta-bg: #222; --cta-heading-color: #f0f0f0; --cta-content-color: #f0f0f0; --cta-button-color: #222; --cta-button-bg: #f0f0f0; --cta-heading-font: Arial; --cta-dismiss-bg: #222; --cta-top-offset: 200px"> 1492 <div class="content row breakout"> 1493 <div style="z-index: 5"> 1494 <h2>How can we assist you?</h2> 1495 <span class="cta-description"> <p><a href="/searches/new">Find your Home</a> | <a href="/selling-your-home">Sell Your Home</a> | <a href="/areas">Best Neighborhoods</a> | </p> 1496 </span> 1497 </div> 1498 <button class="btn btn-primary" style="z-index: 5"> 1499 <a href="/contact">Contact Us</a> 1500 </button> 1501 1502 1503 1504 1505 1506 1507 </div> 1508 <div class="dismiss-cta-container " style="z-index: 500"> 1509 <svg xmlns="http://www.w3.org/2000/svg" viewBox="-21 -21 682.66669 682.66669" width="22px" height="22px" class="st-icon dismiss-cta shown"><path d="m460.175781 215.175781-104.800781 104.800781 104.800781 104.796876-35.351562 35.359374-104.800781-104.800781-104.796876 104.800781-35.359374-35.359374 104.800781-104.796876-104.800781-104.800781 35.359374-35.351562 104.796876 104.800781 104.800781-104.800781zm179.824219 104.824219c0 85.472656-33.285156 165.835938-93.726562 226.273438-60.4375 60.441406-140.800782 93.726562-226.273438 93.726562s-165.835938-33.285156-226.273438-93.726562c-60.441406-60.4375-93.726562-140.800782-93.726562-226.273438s33.285156-165.835938 93.726562-226.273438c60.4375-60.441406 140.800782-93.726562 226.273438-93.726562s165.835938 33.285156 226.273438 93.726562c60.441406 60.4375 93.726562 140.800782 93.726562 226.273438zm-50 0c0-148.875-121.125-270-270-270s-270 121.125-270 270 121.125 270 270 270 270-121.125 270-270zm0 0"></path></svg> 1510 1511 <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" width="22px" height="22px" viewBox="0 0 91 91" data-name="Layer 1" class="st-icon display-cta "><g><path d="m58.67 28.94c-8.85-13.02-20.67-19.94-26.86-15.7a7.14 7.14 0 0 0 -1.75 1.76c0 .05-14.33 29.05-14.33 29.05l-8 5.42a11.3 11.3 0 0 0 -3 15.7l.36.53a11.32 11.32 0 0 0 15.63 3l12.85 18.93c1.89 2.33 5.52 4.65 10 1.92a6.77 6.77 0 0 0 3-4.6 7.16 7.16 0 0 0 -1.11-5.4l-11.32-16.7s26.76-2.13 26.86-2.17a6.41 6.41 0 0 0 2.33-1c3.18-2.16 4.32-6.69 3.22-12.76-.99-5.59-3.8-11.92-7.88-17.98zm-50.67 34.79-.36-.53a7.79 7.79 0 0 1 2.08-10.83l6.91-4.7 9.12 13.43-6.91 4.7a7.8 7.8 0 0 1 -10.84-2.07zm34.58 17.79a3.7 3.7 0 0 1 -1 5.13 3.71 3.71 0 0 1 -5.14-1l-12.81-18.87 5.15-3.5 1.36-.11zm-13.52-21.78-9.94-14.64 9.48-19.33c.92 5.43 3.61 11.88 7.91 18.21s9.3 11.21 14 14.07zm29.5-2.33c-4.78-.31-12.56-5.7-19.15-15.41s-8.73-18.9-7.26-23.47a4.26 4.26 0 0 1 4-3c4.74 0 12.81 5.42 19.59 15.41 3.82 5.62 6.6 11.5 7.36 16.64 1.49 9.83-4.54 9.83-4.54 9.83z"></path><path d="m46.17 29.31a9.39 9.39 0 0 0 -7.12 1.47 1.75 1.75 0 1 0 2 2.89 6 6 0 1 1 6.74 9.93 1.75 1.75 0 0 0 1 3.19 1.71 1.71 0 0 0 1-.3 9.49 9.49 0 0 0 -3.55-17.18z"></path><path d="m60.83 16.77h.17a1.75 1.75 0 0 0 1.74-1.57l1.35-13.12a1.75 1.75 0 1 0 -3.48-.36l-1.34 13.13a1.75 1.75 0 0 0 1.56 1.92z"></path><path d="m83.45 14.07a1.76 1.76 0 0 0 -2.43-.5l-12.19 8a1.75 1.75 0 0 0 1 3.21 1.78 1.78 0 0 0 1-.28l12.19-8a1.75 1.75 0 0 0 .43-2.43z"></path><path d="m87.18 35.43-14.18-2.55a1.75 1.75 0 0 0 -.62 3.45l14.17 2.55h.31a1.75 1.75 0 0 0 .31-3.48z"></path></g></svg> 1512 1513 </div> 1514</aside> 1515 1516 1517 1518 1519 1520 1521
1521<script> 1522 tokeninput_options = JSON.parse('{}'); 1523 window.SuperLocationState = window.SuperLocationState || { 1524 array: [], 1525 fetching: false, 1526 placeholders: {}, 1527 polls: {} 1528 }; 1529 1530 setup_super_location_type_ahead( 1531 'homepage_search_super_locations_desktop', 1532 'super_locations-autocomplete', 1533 'Search By Address, City, Zip, or MLS #', 1534 tokeninput_options, 1535 '49682', 1536 '5', 1537 '', 1538 'https://prd-assets1.fastly.propertybase.com/company_super_locations_49682_5_1.json' 1539 ); 1540 </script>
1540 1541
1541<script> 1542 (function() { 1543 var wrapper = document.getElementById('qs-simple-wrapper'); 1544 if (!wrapper) return; 1545 1546 var toggles = wrapper.querySelectorAll('[data-qs-target]'); 1547 var forms = wrapper.querySelectorAll('[data-qs-form]'); 1548 var searchForm = wrapper.querySelector('form[data-qs-search-form]'); 1549 if (!toggles.length || !forms.length || !searchForm) return; 1550 1551 var useSuperLocations = true; 1552 var salesTownsOnly = false; 1553 var placeholderText = "Search By Address, City, Zip, or MLS #"; 1554 var rentalPlaceholderText = "Search By Address, City, or Zip"; 1555 var fieldId = useSuperLocations ? "homepage_search_super_locations_desktop" : "homepage_search_towns_desktop"; 1556 var fieldSelector = "#" + fieldId; 1557 var fieldClass = useSuperLocations ? "super_locations-autocomplete" : "towns-autocomplete"; 1558 var currentMode = 'mls'; 1559 var salesLocationsCache = null; 1560 var rentalLocationsCache = null; 1561 var mlsRequestToken = 0; 1562 var yglRequestToken = 0; 1563 1564 function hasTokenInput() { 1565 return !!wrapper.querySelector('#token-input-' + fieldId); 1566 } 1567 1568 function getMlsPlaceholder() { 1569 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 1570 return rentalsRadio && rentalsRadio.checked ? rentalPlaceholderText : placeholderText; 1571 } 1572 1573 function setFieldPlaceholder(text) { 1574 var $field = $(fieldSelector); 1575 $field.attr('placeholder', text); 1576 var $tokenInput = $('#token-input-' + $field.attr('id'), wrapper); 1577 if ($tokenInput.length) { 1578 $tokenInput.attr('placeholder', text); 1579 } 1580 } 1581 1582 function initSalesTypeahead() { 1583 var $field = $(fieldSelector); 1584 var requestToken = ++mlsRequestToken; 1585 console.debug('[QS Simple] initSalesTypeahead', {requestToken: requestToken, currentMode: currentMode, fieldId: fieldId}); 1586 window.QSUtils.resetTokenInput($field, $(wrapper)); 1587 var nextPlaceholder = getMlsPlaceholder(); 1588 setFieldPlaceholder(''); 1589 if (useSuperLocations) { 1590 setup_super_location_type_ahead( 1591 fieldId, 1592 fieldClass, 1593 nextPlaceholder, 1594 {}, 1595 '49682', 1596 '5', 1597 '', 1598 'https://prd-assets1.fastly.propertybase.com/company_super_locations_49682_5_1.json' 1599 ); 1600 setFieldPlaceholder(nextPlaceholder); 1601 return; 1602 } 1603 1604 if (salesLocationsCache) { 1605 if (requestToken !== mlsRequestToken || currentMode !== 'mls') return; 1606 console.debug('[QS Simple] reuse salesLocationsCache', {requestToken: requestToken}); 1607 if (salesTownsOnly) { 1608 add_towns_only_type_ahead(fieldSelector, fieldClass, salesLocationsCache, nextPlaceholder, {qs: true}); 1609 } else { 1610 add_type_ahead(fieldSelector, fieldClass, salesLocationsCache, nextPlaceholder, {qs: true}); 1611 } 1612 setFieldPlaceholder(nextPlaceholder); 1613 return; 1614 } 1615 1616 $.ajax('/searches/get_towns', { 1617 type: 'post', 1618 dataType: 'script', 1619 success: function(data){ 1620 if (requestToken !== mlsRequestToken || currentMode !== 'mls') return; 1621 console.debug('[QS Simple] sales get_towns success', {requestToken: requestToken}); 1622 var jsonFeed = JSON.parse(data); 1623 salesLocationsCache = jsonFeed; 1624 if (salesTownsOnly) { 1625 add_towns_only_type_ahead(fieldSelector, fieldClass, jsonFeed, nextPlaceholder, {qs: true}); 1626 } else { 1627 add_type_ahead(fieldSelector, fieldClass, jsonFeed, nextPlaceholder, {qs: true}); 1628 } 1629 setFieldPlaceholder(nextPlaceholder); 1630 } 1631 }); 1632 } 1633 1634 function initYglTypeahead() { 1635 var $field = $(fieldSelector); 1636 var requestToken = ++yglRequestToken; 1637 console.debug('[QS Simple] initYglTypeahead', {requestToken: requestToken, currentMode: currentMode, fieldId: fieldId}); 1638 window.QSUtils.resetTokenInput($field, $(wrapper)); 1639 $field.attr('placeholder', ''); 1640 var applyRentalFeed = function(jsonFeed) { 1641 if (requestToken !== yglRequestToken || currentMode !== 'ygl') return; 1642 add_towns_only_type_ahead(fieldSelector, fieldClass, jsonFeed, rentalPlaceholderText, {qs: true, allowFreeTagging: true}); 1643 $field.attr('placeholder', rentalPlaceholderText); 1644 }; 1645 1646 if (rentalLocationsCache) { 1647 console.debug('[QS Simple] reuse rentalLocationsCache', {requestToken: requestToken}); 1648 applyRentalFeed(rentalLocationsCache); 1649 return; 1650 } 1651 1652 $.ajax('/rental_searches/get_locations', { 1653 type: 'post',
1654 dataType: 'script', 1655 success: function(data){ 1656 if (requestToken !== yglRequestToken || currentMode !== 'ygl') return; 1657 console.debug('[QS Simple] rental get_locations success', {requestToken: requestToken}); 1658 rentalLocationsCache = JSON.parse(data); 1659 applyRentalFeed(rentalLocationsCache); 1660 } 1661 }); 1662 } 1663 1664 function setActiveMlsToggle() { 1665 var salesLabel = wrapper.querySelector('.sales-toggle'); 1666 var rentalsLabel = wrapper.querySelector('.rentals-toggle'); 1667 var salesRadio = wrapper.querySelector('#qs_search_types_sales'); 1668 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 1669 1670 if (salesLabel) salesLabel.classList.remove('active'); 1671 if (rentalsLabel) rentalsLabel.classList.remove('active'); 1672 1673 if (rentalsRadio && rentalsRadio.checked && rentalsLabel) { 1674 rentalsLabel.classList.add('active'); 1675 } else if (salesLabel) { 1676 salesLabel.classList.add('active'); 1677 } 1678 } 1679 1680 function syncNlMode() { 1681 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 1682 $(fieldSelector).attr('data-nl-mode', (currentMode === 'ygl' || (rentalsRadio && rentalsRadio.checked)) ? 'rental' : 'sales'); 1683 } 1684 1685 function setFormMode(target) { 1686 var isYgl = target === 'ygl'; 1687 var previousMode = currentMode; 1688 currentMode = isYgl ? 'ygl' : 'mls'; 1689 syncNlMode(); 1690 console.debug('[QS Simple] setFormMode', {target: target, previousMode: previousMode, currentMode: currentMode}); 1691 var mlsAction = searchForm.getAttribute('data-mls-action'); 1692 var yglAction = searchForm.getAttribute('data-ygl-action'); 1693 if (isYgl && yglAction) { 1694 searchForm.setAttribute('action', yglAction); 1695 } else if (mlsAction) { 1696 searchForm.setAttribute('action', mlsAction); 1697 } 1698 1699 var yglToggle = wrapper.querySelector('.ygl-toggle'); 1700 if (yglToggle) { 1701 yglToggle.classList.toggle('active', isYgl); 1702 } 1703 1704 var advancedLink = wrapper.querySelector('[data-qs-advanced-link]'); 1705 if (advancedLink) { 1706 var nextUrl = isYgl ? advancedLink.getAttribute('data-ygl-url') : advancedLink.getAttribute('data-mls-url'); 1707 if (nextUrl) advancedLink.setAttribute('href', nextUrl); 1708 } 1709 1710 if (isYgl) { 1711 if (previousMode !== 'ygl' || !hasTokenInput()) { 1712 initYglTypeahead(); 1713 } else { 1714 setFieldPlaceholder(rentalPlaceholderText); 1715 } 1716 var salesLabel = wrapper.querySelector('.sales-toggle'); 1717 var rentalsLabel = wrapper.querySelector('.rentals-toggle'); 1718 if (salesLabel) salesLabel.classList.remove('active'); 1719 if (rentalsLabel) rentalsLabel.classList.remove('active'); 1720 } else { 1721 if (previousMode !== 'mls' || !hasTokenInput()) { 1722 initSalesTypeahead(); 1723 } else { 1724 setFieldPlaceholder(getMlsPlaceholder()); 1725 }
1726 setActiveMlsToggle(); 1727 } 1728 } 1729 1730 function syncRentalFields() { 1731 var townsField = wrapper.querySelector('[id^="homepage_search_towns_"]'); 1732 var superLocationsField = wrapper.querySelector('[id^="homepage_search_super_locations_"]'); 1733 var rentalTowns = wrapper.querySelector('[id^="homepage_rental_search_towns_"]'); 1734 var rentalSuperLocations = wrapper.querySelector('[id^="homepage_rental_search_super_locations_"]'); 1735 1736 if (rentalTowns) { 1737 rentalTowns.value = townsField ? townsField.value : (superLocationsField ? superLocationsField.value : ''); 1738 } 1739 if (rentalSuperLocations) { 1740 rentalSuperLocations.value = superLocationsField ? superLocationsField.value : ''; 1741 } 1742 } 1743 1744 toggles.forEach(function(toggle) { 1745 toggle.addEventListener('click', function(e) { 1746 var target = this.getAttribute('data-qs-target'); 1747 if (target === 'ygl') { 1748 e.preventDefault(); 1749 e.stopPropagation(); 1750 } 1751 setFormMode(target); 1752 }); 1753 }); 1754 1755 var salesRadio = wrapper.querySelector('#qs_search_types_sales'); 1756 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 1757 if (salesRadio) { 1758 salesRadio.addEventListener('change', function() { setFormMode('mls'); }); 1759 } 1760 if (rentalsRadio) { 1761 rentalsRadio.addEventListener('change', function() { setFormMode('mls'); }); 1762 } 1763 1764 wrapper.addEventListener('change', syncNlMode); 1765 1766 searchForm.addEventListener('submit', function() { 1767 if (wrapper.querySelector('.ygl-toggle') && wrapper.querySelector('.ygl-toggle').classList.contains('active')) { 1768 syncRentalFields(); 1769 } 1770 }); 1771 1772 setFormMode('mls'); 1773 })(); 1774 </script>
1774 1775 <style> 1776 .valuation-wrapper{ 1777 background-position: center; 1778 background-size: cover !important; 1779 1780 position: relative; 1781 } 1782 1783 .valuation-wrapper:after{ 1784 1785 opacity: 100% !important; 1786 } 1787 1788 .valuation-wrapper .container, .valuation-wrapper .container-xl{ 1789 position: relative; 1790 z-index: 5; 1791 } 1792 </style> 1793 1794 <style> 1795 .areas-wrapper{ 1796 background-position: center; 1797 background-size: cover !important; 1798 1799 position: relative; 1800 } 1801 1802 .areas-wrapper:after{ 1803 1804 opacity: 100% !important; 1805 } 1806 1807 .areas-wrapper .container, .areas-wrapper .container-xl{ 1808 position: relative; 1809 z-index: 5; 1810 } 1811 1812 @media (max-width: 768px) { 1813 .areas-wrapper button.marble-arrow { 1814 display: none !important; 1815 } 1816 } 1817 </style> 1818 1819
1819<script> 1820 1821 $('#areas-slider').slick({ 1822 slidesToShow: 4, 1823 centerMode: false, 1824 slidesToScroll: 1, 1825 nav: true, 1826 dots: false, 1827 arrows: false, 1828 arrows: true, 1829 infinite: true, 1830 swipe: true, 1831 lazyLoad: 'progressive', 1832 responsive: [ 1833 { 1834 breakpoint: 768, 1835 settings: { 1836 slidesToShow: 1, 1837 nav: false, 1838 centerMode: false, 1839 dots: true, 1840 nav: false, 1841 arrows: false, 1842 } 1843 }, 1844 { 1845 breakpoint: 1800, 1846 settings: { 1847 slidesToShow: 3, 1848 dots: true, 1849 arrows: true, 1850 } 1851 }, 1852 { 1853 breakpoint: 1600, 1854 settings: { 1855 slidesToShow: 3, 1856 dots: true, 1857 arrows: true, 1858 } 1859 }, 1860 { 1861 breakpoint: 1139, 1862 settings: { 1863 slidesToShow: 2, 1864 dots: true, 1865 arrows: true, 1866 } 1867 }, 1868 { 1869 breakpoint: 500, 1870 settings: { 1871 slidesToShow: 1, 1872 slidesToScroll: 1, 1873 dots: true, 1874 arrows: false, 1875 } 1876 } 1877 ] 1878 }); 1879 1880 </script>
1880 1881 1882 1883
1883<script> 1884 $('#featured-slider').slick({ 1885 slidesToShow: 3, 1886 slidesToScroll: 1, 1887 swipe: true, 1888 infinite: true, 1889 variableWidth: false, 1890 lazyLoad: 'progressive', 1891 centerPadding: '0px', 1892 dots: false, 1893 arrows: true, 1894 responsive: [ 1895 { 1896 breakpoint: 1800, 1897 settings: { 1898 slidesToShow: 3, 1899 slidesToScroll: 1, 1900 1901 } 1902 }, 1903 { 1904 breakpoint: 1139, 1905 settings: { 1906 slidesToShow: 2, 1907 slidesToScroll: 1, 1908 dots: true, 1909 arrows: true, 1910 } 1911 }, 1912 { 1913 breakpoint: 768, 1914 settings: { 1915 slidesToShow: 1, 1916 slidesToScroll: 1, 1917 infinite: false, 1918 dots: true, 1919 arrows: false, 1920 } 1921 }, 1922 { 1923 breakpoint: 500, 1924 settings: { 1925 slidesToShow: 1, 1926 slidesToScroll: 1, 1927 } 1928 } 1929 ] 1930 }); 1931 1932 </script>
1932 1933 1934 <style> 1935 1936 #featured-slider .slick-slide > div { 1937 display: flex; 1938 height: 100%; 1939 } 1940 1941 /* Hide marble arrows on mobile devices - only show on desktop */ 1942 @media (max-width: 767px) { 1943 .featured-properties-wrapper .marble-arrow { 1944 display: none !important; 1945 } 1946 } 1947 1948 1949 1950 .c-property-card--1 .c-property-card__image-overlay:before { 1951 display: none; 1952 } 1953 1954 </style> 1955
1955<script> 1956 function normalizeAgentCardHeights($slider) { 1957 var $cards = $slider.find('.c-agent-card'); 1958 if (!$cards.length) { 1959 return; 1960 } 1961 $cards.css('min-height', ''); 1962 var maxHeight = 0; 1963 $cards.each(function() { 1964 var height = $(this).outerHeight(); 1965 if (height > maxHeight) { 1966 maxHeight = height; 1967 } 1968 }); 1969 if (maxHeight > 0) { 1970 $cards.css('min-height', maxHeight + 'px'); 1971 } 1972 } 1973 1974 var agentSlider = $('.agent-slider-carousel'); 1975 1976 agentSlider.on('init', function() { 1977 normalizeAgentCardHeights(agentSlider); 1978 }); 1979 1980 agentSlider.on('setPosition', function() { 1981 normalizeAgentCardHeights(agentSlider); 1982 }); 1983 1984 $(window).on('resize', function() { 1985 normalizeAgentCardHeights(agentSlider); 1986 }); 1987 1988 var baseSlidesToShow = 3; 1989 baseSlidesToShow = 4; 1990 if (window.innerWidth > 2000) { 1991 baseSlidesToShow = 5; 1992 } 1993 1994 baseSlidesToShow = 2; 1995 1996 baseSlidesToShow = 3; 1997 1998 agentSlider.slick({ 1999 centerPadding: '0px', 2000 slidesToShow: baseSlidesToShow, 2001 slidesToScroll: 1, 2002 variableWidth: false, 2003 infinite: true, 2004 lazyLoad: 'ondemand', 2005 dots: false, 2006 arrows: true, 2007 responsive: [ 2008 { 2009 breakpoint: 2000, 2010 settings: { 2011 slidesToShow: 4, 2012 } 2013 }, 2014 { 2015 breakpoint: 1600, 2016 settings: { 2017 slidesToShow: 3, 2018 dots: false, 2019 slidesToShow: 3, 2020 arrows: true, 2021 } 2022 }, 2023 { 2024 breakpoint: 900, 2025 settings: { 2026 slidesToShow: 3, 2027 dots: true, 2028 arrows: true, 2029 } 2030 }, 2031 { 2032 breakpoint: 768, 2033 settings: { 2034 slidesToShow: 2, 2035 dots: true, 2036 arrows: false, 2037 } 2038 }, 2039 { 2040 breakpoint: 650, 2041 settings: { 2042 slidesToShow: 1, 2043 } 2044 }, 2045 ] 2046 }); 2047 2048 </script>
2048 2049 2050 <style> 2051 2052 .featured-agents-wrapper.slick-track{ 2053 padding: 20px 0; 2054 display: flex !important 2055 } 2056 2057 .featured-agents-wrapper a:hover{ 2058 opacity: 1; 2059 } 2060 2061 /* Hide marble arrows on mobile devices - only show on desktop */ 2062 @media (max-width: 767px) { 2063 .featured-agents-wrapper .marble-arrow { 2064 display: none !important; 2065 } 2066 } 2067 2068 2069 .featured-agents-wrapper.card_slider{ 2070 background-position: center; 2071 background-size: cover; 2072 position: relative; 2073 } 2074 2075 .section.card_slider.featured-agents-wrapper:after{ 2076 2077 opacity: 85% !important; 2078 } 2079 2080 .featured-agents-wrapper .container{ 2081 position: relative; 2082 z-index: 5; 2083 } 2084 </style> 2085 2086
2086<script> 2087 2088 $('#market-slider').not('.slick-initialized').slick({ 2089 slidesToShow: 4, 2090 slidesToScroll: 4, 2091 dots: false, 2092 arrows: false, 2093 swipe: true, 2094 prevArrow: $('.slick-prev'), 2095 nextArrow: $('.slick-next'), 2096 infinite: true, 2097 variableWidth: false, 2098 lazyLoad: 'progressive', 2099 responsive: [ 2100 { 2101 breakpoint: 1000, 2102 settings: { 2103 slidesToShow: 2, 2104 dots: true, 2105 slidesToScroll: 1, 2106 arrows: false, 2107 2108 } 2109 }, 2110 { 2111 breakpoint: 1200, 2112 settings: { 2113 dots: true, 2114 nav: false, 2115 arrows: false, 2116 slidesToShow: 3, 2117 slidesToScroll: 1, 2118 } 2119 }, 2120 { 2121 breakpoint: 560, 2122 settings: { 2123 dots: true, 2124 nav: false, 2125 arrows: false, 2126 slidesToShow: 1, 2127 slidesToScroll: 1, 2128 } 2129 } 2130 ] 2131 }); 2132 </script>
2132 2133 2134 <style> 2135 .breakout.market-updates { 2136 background-size: cover !important; 2137 background-position: center !important; 2138 position: relative; 2139 z-index: 1; 2140 } 2141 2142 #market-slider .slick-slide{ 2143 margin-left: 15px; 2144 margin-right: 15px; 2145 } 2146 2147 #market-slider .slick-list { 2148 margin-left: -15px; 2149 margin-right: -15px; 2150 } 2151 2152 .market-updates.card_slider .slick-slide > div { 2153 text-align: center; 2154 } 2155 2156 .breakout.market-updates:after{ 2157 opacity: 100% !important; 2158 } 2159 2160 .home-market-report{ 2161 padding: 24px 0; 2162 } 2163 2164 .breakout.market-updates .container{ 2165 position:relative; 2166 z-index:5; 2167 } 2168 </style> 2169 2170
2170<script> 2171 var backgroundColor = '#fff'; 2172 // color-yiq of backgroundColor 2173 var yiq = ((parseInt(backgroundColor.substring(1,3), 16) * 299) + (parseInt(backgroundColor.substring(3,5), 16) * 587) + (parseInt(backgroundColor.substring(5,7), 16) * 114)) / 1000; 2174 var fontColor = (yiq >= 190) ? '#000' : '#fff'; 2175 // if the @page_data.page_background_color isn't #fff, then set the font color to the override 2176 if (backgroundColor != '#fff') { 2177 fontColor = '#222223'; 2178 $('.cms.custom-background-color .cms__content label, .cms.custom-background-color .cms__testimonial-form p, .cms.custom-background-color .cms__testimonial-form span').css('color', fontColor); 2179 } 2180 2181 </script>
2181 2182 <style> 2183 2184 .cms.custom-background-color { 2185 background-color: #fff; 2186 } 2187 2188 .cms.custom-font-color article.cms h1, .cms.custom-font-color article.cms h2, .cms.custom-font-color article.cms h3 { 2189 color: #222223; 2190 } 2191 2192 .custom-header-font-size{ 2193 font-size: clamp(28px, 6vw, px); 2194 } 2195 2196 .cms__banner-title.custom-header-font-size{ 2197 font-size: clamp(28px, 6vw, px); 2198 } 2199 2200 h1.custom-font-color{ 2201 color: #222223; 2202 } 2203 2204 .cms.custom-background-color { 2205 .cms__testimonial-form h1, 2206 .cms__testimonial-form h2, 2207 .cms__testimonial-form h3, 2208 .cms__testimonial-form h4, 2209 .cms__testimonial-form h5, 2210 .cms__testimonial-form h6, 2211 .cms__dynamic-form h1, 2212 .cms__dynamic-form h2, 2213 .cms__dynamic-form h3, 2214 .cms__dynamic-form h4, 2215 .cms__dynamic-form h5, 2216 .cms__dynamic-form h6, 2217 .password-req-list li, 2218 .cms__form-wrapper p, 2219 .cms__form-wrapper a { 2220 color: #222223; 2221 } 2222 } 2223 2224 </style> 2225 2226 <style> 2227 2228 .testimonial-wrapper { 2229 background-size: cover !important; 2230 background-position: center !important; 2231 position: relative; 2232 padding: 60px 0; 2233 } 2234 2235 .testimonial-wrapper:after{ 2236 opacity: 87% !important; 2237 } 2238 2239 .testimonial-wrapper .container{ 2240 position:relative; 2241 z-index:5; 2242 } 2243 2244 </style> 2245 2246 2247
2247<script> 2248 $('#testimonial-slider').slick({ 2249 slidesToShow: 1, 2250 slidesToScroll: 1, 2251 arrows: true, 2252 autoplay: true, 2253 infinite: true, 2254 variableHeight: true, 2255 responsive: [ 2256 { 2257 breakpoint: 768, 2258 settings: { 2259 slidesToShow: 1, 2260 slidesToScroll: 1, 2261 infinite: true, 2262 dots: false, 2263 arrows: true, 2264 swipe: true 2265 } 2266 }, 2267 { 2268 breakpoint: 1139, 2269 settings: { 2270 slidesToShow: 1, 2271 slidesToScroll: 1, 2272 infinite: true, 2273 swipe: true, 2274 dots: false, 2275 arrows: true, 2276 } 2277 } 2278 ] 2279 }); 2280 </script>
2280 2281
2281<script type="text/javascript"> 2282 2283 $(document).mouseup(function (e) { 2284 var container = $(".beds-qs-modal, .price-qs-modal") 2285 if (!container.is(e.target) && container.has(e.target).length === 0){ 2286 container.removeClass('active'); 2287 } 2288 }); 2289 2290 $(document).ready(function(){ 2291 $('.new-beds-checkbox-input').prop('checked', false) 2292 $('.new-baths-checkbox-input').prop('checked', false) 2293 $('#beds_exact_count').prop('checked', false) 2294 $('#borough-complexsearch .price-qs-modal input').val(''); 2295 $('.min-beds-hidden-field').val('') 2296 $('.max-beds-hidden-field').val('') 2297 $('.dynamic-beds-count').hide() 2298 $('.dynamic-baths-count').hide() 2299 $('.dynamic-max-beds-count').hide() 2300 handleDynamicDivider(); 2301 handleDynamicCharacter(); 2302 }); 2303 2304 $('body').on('click', '.qs-beds-button', function (e) { 2305 $('.price-qs-modal').removeClass('active'); 2306 $('.beds-qs-modal').toggleClass('active'); 2307 }); 2308 2309 $('body').on('click', '.qs-price-button', function (e) { 2310 $('.beds-qs-modal').removeClass('active'); 2311 $('.price-qs-modal').toggleClass('active'); 2312 }); 2313 2314 function updateDynamicBeds(){ 2315 $('.dynamic-beds-count').text('') 2316 $('.dynamic-beds-count').hide() 2317 $('.dynamic-max-beds-count').text('') 2318 $('.dynamic-max-beds-count').hide() 2319 } 2320 2321 function handleDynamicCharacter(){ 2322 if ($('#beds_exact_count').is(':checked') && $('.max-beds-hidden-field').val() != ''){ 2323 $('.dynamic-beds-character').text('-') 2324 $('.dynamic-beds-character').show() 2325 } else if (!$('#beds_exact_count').is(':checked')){ 2326 $('.dynamic-beds-character').text('+') 2327 $('.dynamic-beds-character').show() 2328 2329 } else { 2330 $('.dynamic-beds-character').text('') 2331 $('.dynamic-beds-character').hide() 2332 2333 } 2334 if ($('.dynamic-beds-count').text() == 'Any'){ 2335 $('.dynamic-beds-character').hide() 2336 $('.dynamic-beds-character').text('') 2337 } 2338 if ($('.min-beds-hidden-field').val() == '' && $('.max-beds-hidden-field').val() == ''){ 2339 $('.dynamic-beds-character').hide() 2340 $('.dynamic-beds-character').text('') 2341 } 2342 } 2343 2344 function convertToStudio(){ 2345 if ($('.min-beds-hidden-field').val() == '0'){ 2346 $('.dynamic-beds-count').text('Studio') 2347 $('.dynamic-beds-count').text('Studio') 2348 } 2349 if ($('.max-beds-hidden-field').val() == '0'){ 2350 $('.dynamic-max-beds-count').text('') 2351 $('.dynamic-beds-character').hide() 2352 } 2353 } 2354 2355 $('body').on('change', '.new-beds-checkbox-input', function(){ 2356 thisVal = $(this).val(); 2357 if($(this).prop('checked')){ 2358 if (thisVal == "any"){ 2359 $('.new-beds-checkbox-input[value!="'+thisVal+'"]:checked').prop('checked', false); 2360 $('.min-beds-hidden-field, .max-beds-hidden-field').val(''); 2361 $('.dynamic-beds-count').text('Any'); 2362 $('.dynamic-beds-count').show(); 2363 } else { 2364 $('.new-beds-checkbox-input[value="any"]').prop('checked', false); 2365 if($('#beds_exact_count').prop('checked')){ 2366 checkbox_before = false; 2367 highest_val = $('.new-beds-checkbox-input:checked:last').val(); 2368 $.each(['0', '1', '2', '3', '4', '5', '6'], function(i, otherCheckbox){ 2369 isCurrentVal = otherCheckbox == thisVal; 2370 if($('#new-beds-checkbox-'+otherCheckbox).prop('checked')){ 2371 if(!isCurrentVal){ 2372 checkbox_before = true; 2373 } 2374 }else if(checkbox_before && thisVal >= otherCheckbox){ 2375 $('#new-beds-checkbox-'+otherCheckbox).prop('checked', true); 2376 } 2377 if(isCurrentVal && otherCheckbox >= highest_val){ 2378 return false; 2379 }else if(thisVal < otherCheckbox && otherCheckbox < highest_val){ 2380 $('#new-beds-checkbox-'+otherCheckbox).prop('checked', true); 2381 } 2382 }); 2383 }else{ 2384 $('.new-beds-checkbox-input[value!="'+thisVal+'"]:checked').prop('checked', false); 2385 } 2386 } 2387 }else if($(this).val() != '6' && $(this).val() != 'any'){ 2388 if($('#beds_exact_count').prop('checked')){ 2389 checkbox_before = false;
2390 num_passed = false; 2391 $.each(['0', '1', '2', '3', '4', '5', '6'], function(i, otherCheckbox){ 2392 isCurrentVal = otherCheckbox == thisVal; 2393 if($('#new-beds-checkbox-'+otherCheckbox).prop('checked')){ 2394 if(!num_passed && otherCheckbox != thisVal){ 2395 checkbox_before = true; 2396 }else if(num_passed && checkbox_before){ 2397 $('#new-beds-checkbox-'+otherCheckbox).prop('checked', false); 2398 } 2399 } 2400 num_passed = num_passed || otherCheckbox == thisVal; 2401 }); 2402 } 2403 } 2404 if (thisVal != 'any'){ 2405 lowest_val = $('.new-beds-checkbox-input:checked:first').val(); 2406 if(lowest_val != 'any'){ 2407 $('.min-beds-hidden-field').val(lowest_val); 2408 $('.dynamic-beds-count').text(lowest_val); 2409 $('.dynamic-beds-count').show(); 2410 if($('input[name=beds_exact_count]').prop('checked')){ 2411 highest_val = $('.new-beds-checkbox-input:checked:last').val(); 2412 $('.max-beds-hidden-field').val(highest_val); 2413 $('.dynamic-max-beds-count').text(highest_val); 2414 $('.dynamic-max-beds-count').show(); 2415 handleDynamicCharacter(); 2416 } 2417 } 2418 } 2419 if ($('.min-beds-hidden-field').val() == '' && $('.new-beds-checkbox-input:checked:first').val() != 'any' && $('.max-beds-hidden-field').val() == ''){ 2420 $('.dynamic-beds-count').hide(); 2421 $('.dynamic-max-beds-count').hide(); 2422 updateDynamicBeds(); 2423 } 2424 2425 if ($('.max-beds-hidden-field').val() == $('.min-beds-hidden-field').val() && $('#beds_exact_count').prop('checked')){ 2426 $('.dynamic-max-beds-count').text(''); 2427 $('.dynamic-max-beds-count').hide() 2428 } 2429 2430 convertToStudio() 2431 handleDynamicCharacter(); 2432 2433 }) 2434 2435 $('#beds_exact_count').on('change', function(){ 2436 $('.dynamic-beds-count').hide(); 2437 $('.dynamic-max-beds-count').hide(); 2438 2439 if($(this).prop('checked')){ 2440 $('.dynamic-beds-count').text(''); 2441 $('.max-beds-hidden-field').val(''); 2442 $('#new-beds-checkbox-any').next('label').addClass('hidden'); 2443 $('#new-beds-checkbox-0').next('label').removeClass('hidden'); 2444 $('.new-beds-checkbox > span').addClass('hidden') 2445 }else{ 2446 $('.min-beds-hidden-field').val(''); 2447 $('.max-beds-hidden-field').val(''); 2448 $('.dynamic-beds-character').text(''); 2449 $('.dynamic-beds-count').text(''); 2450 $('.dynamic-max-beds-count').text(''); 2451 $('#new-beds-checkbox-any').next('label').removeClass('hidden'); 2452 $('#new-beds-checkbox-0').next('label').addClass('hidden'); 2453 $('.new-beds-checkbox > span').removeClass('hidden') 2454 } 2455 $('.new-beds-checkbox-input:checked').each(function(i){ 2456 if(i >= 0){ 2457 $(this).prop('checked', false); 2458 } 2459 }) 2460 handleDynamicCharacter(); 2461 }) 2462 2463 // if window size is less than 767px, hide beds modal 2464 2465 2466 window.onresize = function(event) { 2467 if($(window).width() < 767){ 2468 $('.beds-qs-modal').removeClass('active'); 2469 $('.price-qs-modal').removeClass('active'); 2470 } 2471 } 2472 2473 $('body').on('keyup', '#search_min_price_text', function() { 2474 var regex = /[^0-9]/g; 2475 var val = $(this).val(); 2476 if (val.match(regex)) { 2477 $(this).val(val.replace(regex, '')); 2478 } 2479 2480 if ($(this).val() == '') { 2481 $('.dynamic-min-price').text(''); 2482 $('.dynamic-min-price').hide(); 2483 } else { 2484 $('.dynamic-min-price').text('$' + new Intl.NumberFormat('en', { notation: 'compact' }).format(($(this).val()))); 2485 $('.dynamic-min-price').show(); 2486 } 2487 handleDynamicDivider(); 2488 handlePlaceholder() 2489 2490 }) 2491 2492 $('body').on('keyup', '#search_max_price_text', function() { 2493 var regex = /[^0-9]/g; 2494 var val = $(this).val(); 2495 if (val.match(regex)) { 2496 $(this).val(val.replace(regex, '')); 2497 } 2498 2499 if ($(this).val() == '') { 2500 $('.dynamic-max-price').text(''); 2501 $('.dynamic-max-price').hide(); 2502 } else { 2503 $('.dynamic-max-price').text('$' + new Intl.NumberFormat('en', { notation: 'compact' }).format(($(this).val()))); 2504 $('.dynamic-max-price').show(); 2505 } 2506 handleDynamicDivider(); 2507 handlePlaceholder() 2508 2509 }) 2510 2511 $('body').on('change', '.new-baths-checkbox-input', function(){ 2512 $(this).parent().find('.new-baths-checkbox-input[value!="'+$(this).val()+'"]').prop('checked', false); 2513 if ($('.new-baths-checkbox-input:checked').length == 0) { 2514 $('.dynamic-baths-count').text(''); 2515 $('.dynamic-baths-count').hide() 2516 } else if ($(this).val() == ''){ 2517 $('.dynamic-baths-count').text('Any'); 2518 $('.dynamic-baths-count').show() 2519 } else { 2520 $('.dynamic-baths-count').text($(this).val() + '+'); 2521 $('.dynamic-baths-count').show() 2522 2523 }; 2524 }); 2525 2526 function handleDynamicDivider(){ 2527 if ($('.dynamic-max-price').text() == '' ) { 2528 $('.dynamic-divider').hide(); 2529 } else { 2530 $('.dynamic-divider').show(); 2531 } 2532 } 2533 2534 function handlePlaceholder(){ 2535 if ($('.dynamic-min-price').text() == '' && $('.dynamic-max-price').text() == '' ) { 2536 $('.dynamic-price-placeholder').show(); 2537 } else { 2538 $('.dynamic-price-placeholder').hide(); 2539 } 2540 } 2541 2542 $('#qs-complex-wrapper #search_min_price_text').trigger('keyup'); 2543 $('#qs-complex-wrapper #search_max_price_text').trigger('keyup'); 2544 </script>
2544 2545 2546
2546<script> 2547 (function() { 2548 var wrapper = document.getElementById('qs-complex-wrapper'); 2549 if (!wrapper) return; 2550 2551 var toggles = wrapper.querySelectorAll('[data-qs-target]'); 2552 var searchForm = wrapper.querySelector('form[data-qs-search-form]'); 2553 2554 var useSuperLocations = true; 2555 var salesTownsOnly = false; 2556 var placeholderText = "Search By Address, City, Zip, or MLS #"; 2557 var rentalPlaceholderText = "Search By Address, City, or Zip"; 2558 var fieldId = useSuperLocations ? 'homepage_search_super_locations' : 'homepage_search_towns'; 2559 var fieldSelector = "#" + fieldId; 2560 var fieldClass = useSuperLocations ? 'super_locations-autocomplete' : 'towns-autocomplete'; 2561 if (!searchForm || !wrapper.querySelector(fieldSelector)) return; 2562 2563 var currentMode = 'mls'; 2564 var salesLocationsCache = null; 2565 var rentalLocationsCache = null; 2566 var mlsRequestToken = 0; 2567 var yglRequestToken = 0; 2568 2569 var yglMoreToggle = wrapper.querySelector('[data-ygl-more-toggle]'); 2570 var yglMoreOptions = wrapper.querySelector('[data-ygl-more-options]'); 2571 2572 function hasTokenInput() { 2573 return !!wrapper.querySelector('#token-input-' + fieldId); 2574 } 2575 2576 function setFieldPlaceholder(text) { 2577 var $field = $(fieldSelector); 2578 $field.attr('placeholder', text); 2579 var $tokenInput = $('#token-input-' + fieldId, wrapper); 2580 if ($tokenInput.length) { 2581 $tokenInput.attr('placeholder', text); 2582 } 2583 if (text) { 2584 $('#homepage_qs_nl_search_text', wrapper).attr('placeholder', text); 2585 } 2586 } 2587 2588 function initSalesTypeahead() { 2589 var $field = $(fieldSelector); 2590 var requestToken = ++mlsRequestToken; 2591 window.QSUtils.resetTokenInput($field, $(wrapper)); 2592 setFieldPlaceholder(''); 2593 if (useSuperLocations) { 2594 setup_super_location_type_ahead( 2595 fieldId, 2596 fieldClass, 2597 placeholderText, 2598 {}, 2599 '49682', 2600 '5', 2601 '', 2602 'https://prd-assets1.fastly.propertybase.com/company_super_locations_49682_5_1.json' 2603 ); 2604 setFieldPlaceholder(placeholderText); 2605 return; 2606 } 2607 2608 if (salesLocationsCache) { 2609 if (requestToken !== mlsRequestToken || currentMode !== 'mls') return; 2610 if (salesTownsOnly) { 2611 add_towns_only_type_ahead(fieldSelector, fieldClass, salesLocationsCache, placeholderText, {qs: true}); 2612 } else { 2613 add_type_ahead(fieldSelector, fieldClass, salesLocationsCache, placeholderText, {qs: true}); 2614 } 2615 setFieldPlaceholder(placeholderText); 2616 return; 2617 } 2618 2619 $.ajax('/searches/get_towns', { 2620 type: 'post', 2621 dataType: 'script', 2622 success: function(data){ 2623 if (requestToken !== mlsRequestToken || currentMode !== 'mls') return; 2624 var jsonFeed = JSON.parse(data); 2625 salesLocationsCache = jsonFeed; 2626 if (salesTownsOnly) { 2627 add_towns_only_type_ahead(fieldSelector, fieldClass, jsonFeed, placeholderText, {qs: true}); 2628 } else { 2629 add_type_ahead(fieldSelector, fieldClass, jsonFeed, placeholderText, {qs: true}); 2630 } 2631 setFieldPlaceholder(placeholderText); 2632 } 2633 }); 2634 } 2635 2636 function initYglTypeahead() { 2637 var $field = $(fieldSelector); 2638 var requestToken = ++yglRequestToken; 2639 window.QSUtils.resetTokenInput($field, $(wrapper)); 2640 setFieldPlaceholder(''); 2641 var applyRentalFeed = function(jsonFeed) { 2642 if (requestToken !== yglRequestToken || currentMode !== 'ygl') return; 2643 add_towns_only_type_ahead(fieldSelector, fieldClass, jsonFeed, rentalPlaceholderText, {qs: true, allowFreeTagging: true}); 2644 setFieldPlaceholder(rentalPlaceholderText); 2645 }; 2646 2647 if (rentalLocationsCache) { 2648 applyRentalFeed(rentalLocationsCache); 2649 return; 2650 } 2651 2652 $.ajax('/rental_searches/get_locations', { 2653 type: 'post',
2654 dataType: 'script', 2655 success: function(data){ 2656 if (requestToken !== yglRequestToken || currentMode !== 'ygl') return; 2657 rentalLocationsCache = JSON.parse(data); 2658 applyRentalFeed(rentalLocationsCache); 2659 } 2660 }); 2661 } 2662 2663 function setYglMoreOpen(isOpen) { 2664 if (!yglMoreToggle || !yglMoreOptions) return; 2665 yglMoreToggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); 2666 yglMoreOptions.classList.toggle('is-open', isOpen); 2667 } 2668 2669 if (yglMoreToggle) { 2670 yglMoreToggle.addEventListener('click', function() { 2671 if (!yglMoreOptions) return; 2672 setYglMoreOpen(!yglMoreOptions.classList.contains('is-open')); 2673 }); 2674 } 2675 2676 function setActiveMlsToggle() { 2677 var salesLabel = wrapper.querySelector('.sales-toggle'); 2678 var rentalsLabel = wrapper.querySelector('.rentals-toggle'); 2679 var salesRadio = wrapper.querySelector('#qs_search_types_sales'); 2680 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 2681 2682 if (salesLabel) salesLabel.classList.remove('active'); 2683 if (rentalsLabel) rentalsLabel.classList.remove('active'); 2684 2685 if (rentalsRadio && rentalsRadio.checked && rentalsLabel) { 2686 rentalsLabel.classList.add('active'); 2687 } else if (salesLabel) { 2688 salesLabel.classList.add('active'); 2689 } 2690 } 2691 2692 function syncRentalFields() { 2693 var townsField = wrapper.querySelector('#homepage_search_towns'); 2694 var superLocationsField = wrapper.querySelector('#homepage_search_super_locations'); 2695 var rentalTowns = wrapper.querySelector('#homepage_rental_search_towns'); 2696 var rentalSuperLocations = wrapper.querySelector('#homepage_rental_search_super_locations'); 2697 var fieldValue = townsField ? townsField.value : (superLocationsField ? superLocationsField.value : ''); 2698 2699 if (!fieldValue) { 2700 try { 2701 var tokenValues = $(fieldSelector).tokenInput('get'); 2702 if (tokenValues && tokenValues.length) { 2703 fieldValue = tokenValues.map(function(item){ 2704 return item.value || item.id || item.name || item.text; 2705 }).join('; '); 2706 } 2707 } catch (e) {} 2708 } 2709 2710 if (!fieldValue) { 2711 var tokenInput = wrapper.querySelector('#token-input-' + fieldId); 2712 if (tokenInput && tokenInput.value) { 2713 fieldValue = tokenInput.value; 2714 } 2715 } 2716 2717 if (rentalTowns) { 2718 rentalTowns.value = fieldValue; 2719 } 2720 if (rentalSuperLocations) { 2721 rentalSuperLocations.value = superLocationsField ? superLocationsField.value : ''; 2722 } 2723 2724 syncRentalBedsBaths(); 2725 2726 } 2727 2728 function syncRentalBedsBaths() { 2729 var rentalMinBeds = wrapper.querySelector('#homepage_rental_search_min_beds'); 2730 var rentalMaxBeds = wrapper.querySelector('#homepage_rental_search_max_beds'); 2731 var rentalMinBaths = wrapper.querySelector('#homepage_rental_search_min_baths'); 2732 var rentalPriceLow = wrapper.querySelector('#homepage_rental_search_price_low'); 2733 var rentalPriceHigh = wrapper.querySelector('#homepage_rental_search_price_high'); 2734 var minBedsField = wrapper.querySelector('.min-beds-hidden-field'); 2735 var maxBedsField = wrapper.querySelector('.max-beds-hidden-field'); 2736 var minBedsValue = minBedsField ? minBedsField.value : ''; 2737 var maxBedsValue = maxBedsField ? maxBedsField.value : ''; 2738 var checkedBath = wrapper.querySelector('.new-baths-checkbox-input:checked'); 2739 var minBathsValue = checkedBath ? checkedBath.value : ''; 2740 var minPriceValue = $('#search_min_price_text').val(); 2741 var maxPriceValue = $('#search_max_price_text').val(); 2742 2743 if (rentalMinBeds) rentalMinBeds.value = minBedsValue; 2744 if (rentalMaxBeds) rentalMaxBeds.value = maxBedsValue; 2745 if (rentalMinBaths) rentalMinBaths.value = minBathsValue; 2746 if (rentalPriceLow) rentalPriceLow.value = minPriceValue; 2747 if (rentalPriceHigh) rentalPriceHigh.value = maxPriceValue; 2748 2749 } 2750 2751 function setFormMode(target, options) { 2752 options = options || {}; 2753 var isYgl = target === 'ygl'; 2754 var previousMode = currentMode; 2755 currentMode = isYgl ? 'ygl' : 'mls'; 2756 2757 var mlsAction = searchForm.getAttribute('data-mls-action'); 2758 var yglAction = searchForm.getAttribute('data-ygl-action'); 2759 if (isYgl && yglAction) { 2760 searchForm.setAttribute('action', yglAction); 2761 } else if (mlsAction) { 2762 searchForm.setAttribute('action', mlsAction); 2763 } 2764 2765 var yglToggle = wrapper.querySelector('.ygl-toggle'); 2766 if (yglToggle) { 2767 yglToggle.classList.toggle('active', isYgl); 2768 } 2769 2770 var advancedLink = wrapper.querySelector('[data-qs-advanced-link]'); 2771 if (advancedLink) { 2772 var nextUrl = isYgl ? advancedLink.getAttribute('data-ygl-url') : advancedLink.getAttribute('data-mls-url'); 2773 if (nextUrl) advancedLink.setAttribute('href', nextUrl); 2774 } 2775 2776 if (isYgl) { 2777 if (options.initialize && (previousMode !== 'ygl' || !hasTokenInput())) { 2778 initYglTypeahead(); 2779 } else if (options.initialize) { 2780 setFieldPlaceholder(rentalPlaceholderText); 2781 } else { 2782 setFieldPlaceholder(rentalPlaceholderText); 2783 } 2784 setYglMoreOpen(true); 2785 var salesLabel = wrapper.querySelector('.sales-toggle'); 2786 var rentalsLabel = wrapper.querySelector('.rentals-toggle'); 2787 if (salesLabel) salesLabel.classList.remove('active'); 2788 if (rentalsLabel) rentalsLabel.classList.remove('active'); 2789 } else { 2790 if (options.initialize && (previousMode !== 'mls' || !hasTokenInput())) { 2791 initSalesTypeahead(); 2792 } else if (options.initialize) { 2793 setFieldPlaceholder(placeholderText); 2794 } else { 2795 setFieldPlaceholder(placeholderText); 2796 } 2797 setYglMoreOpen(false);
2798 setActiveMlsToggle(); 2799 } 2800 } 2801 2802 Array.prototype.forEach.call(toggles, function(toggle) { 2803 toggle.addEventListener('click', function(e) { 2804 var target = this.getAttribute('data-qs-target'); 2805 if (target === 'ygl') { 2806 e.preventDefault(); 2807 e.stopPropagation(); 2808 } 2809 setFormMode(target, {initialize: true}); 2810 }); 2811 }); 2812 2813 var salesRadio = wrapper.querySelector('#qs_search_types_sales'); 2814 var rentalsRadio = wrapper.querySelector('#qs_search_types_rental'); 2815 if (salesRadio) { 2816 salesRadio.addEventListener('change', function() { setFormMode('mls', {initialize: true}); }); 2817 } 2818 if (rentalsRadio) { 2819 rentalsRadio.addEventListener('change', function() { setFormMode('mls', {initialize: true}); }); 2820 } 2821 searchForm.addEventListener('submit', function() { 2822 if (wrapper.querySelector('.ygl-toggle') && wrapper.querySelector('.ygl-toggle').classList.contains('active')) { 2823 syncRentalFields(); 2824 } 2825 }); 2826 2827 $(searchForm).off('submit.qsFix').on('submit.qsFix', function() { 2828 var yglActive = wrapper.querySelector('.ygl-toggle') && wrapper.querySelector('.ygl-toggle').classList.contains('active'); 2829 if (!yglActive) return; 2830 if (window.QSUtils && typeof window.QSUtils.normalizeRentalLocationTokens == 'function') { 2831 window.QSUtils.normalizeRentalLocationTokens($(fieldSelector)); 2832 } 2833 syncRentalBedsBaths(); 2834 var tokens = []; 2835 try { 2836 tokens = $(fieldSelector).tokenInput('get') || []; 2837 } catch (e) { 2838 tokens = []; 2839 } 2840 2841 var towns = tokens.map(function(token) { 2842 return token.value || token.id || token.name || token.text; 2843 }).join(', '); 2844 2845 if (!towns) { 2846 var fieldValue = $(fieldSelector).val(); 2847 if (fieldValue) towns = fieldValue; 2848 } 2849 2850 $('#homepage_rental_search_towns').val(towns); 2851 2852 }); 2853 2854 setFormMode('mls', {initialize: false}); 2855 2856 if (window.HomepageLazyInit && typeof window.HomepageLazyInit.observe === 'function') { 2857 window.HomepageLazyInit.observe({ 2858 root: wrapper, 2859 triggerSelectors: [fieldSelector, '[data-qs-target]', '#new_desktop_qs_sales_search input', '#new_desktop_qs_sales_search button', '#new_desktop_qs_sales_search a'], 2860 onInit: function() { 2861 setFormMode(currentMode, {initialize: true}); 2862 } 2863 }); 2864 } 2865 2866 wrapper.addEventListener('focusin', function(event) { 2867 if (event.target && $(event.target).is(fieldSelector)) { 2868 setFormMode(currentMode, {initialize: true}); 2869 } 2870 }); 2871 })(); 2872 </script>
2872 2873
2873<script> 2874 (function() { 2875 var $modal = $('#rb_subscribe_form'); 2876 if (!$modal.length) return; 2877 2878 var optionsLoaded = false; 2879 var optionsRequest = null; 2880 var bindingsApplied = false; 2881 2882 function loadScriptOnce(url) { 2883 if (!url) return $.Deferred().resolve().promise(); 2884 if (window.__subscribeModalScripts && window.__subscribeModalScripts[url]) { 2885 return window.__subscribeModalScripts[url]; 2886 } 2887 window.__subscribeModalScripts = window.__subscribeModalScripts || {}; 2888 var deferred = $.Deferred(); 2889 var script = document.createElement('script'); 2890 script.type = 'text/javascript'; 2891 script.src = url; 2892 script.async = true; 2893 script.onload = function() { deferred.resolve(); }; 2894 script.onerror = function() { deferred.reject(); }; 2895 document.body.appendChild(script); 2896 window.__subscribeModalScripts[url] = deferred.promise(); 2897 return window.__subscribeModalScripts[url]; 2898 } 2899 2900 function prependPrompt($select, text) { 2901 if (!$select.find('option[value=""]').length) { 2902 $select.prepend($('<option></option>').attr('value', '').text(text)); 2903 } 2904 } 2905 2906 function applyOptions(payload) { 2907 $('#report_location').html(payload.location_options_html || ''); 2908 prependPrompt($('#report_location'), 'Select Location'); 2909 2910 var typeField = payload.type_field === 'property_type_group_id' ? '#market_report_update_property_type_group_id' : '#market_report_update_prop_type'; 2911 $(typeField).html(payload.property_type_options_html || ''); 2912 prependPrompt($(typeField), 'Property Type'); 2913 2914 $('#market_report_update_num_beds').html(payload.bedroom_options_html || ''); 2915 prependPrompt($('#market_report_update_num_beds'), '# of Bedrooms'); 2916 2917 $('#market_report_update_min_price').html(payload.min_price_options_html || ''); 2918 prependPrompt($('#market_report_update_min_price'), 'Min Price'); 2919 2920 $('#market_report_update_max_price').html(payload.max_price_options_html || ''); 2921 prependPrompt($('#market_report_update_max_price'), 'Max Price'); 2922 } 2923 2924 function bindModalEvents() { 2925 if (bindingsApplied) return; 2926 bindingsApplied = true; 2927 2928 $('#report_location').on('change.subscribeModal', function(){ 2929 if($(this).val() == ''){ 2930 $('.report_field').attr('disabled', 'disabled'); 2931 }else{ 2932 $('.report_field').removeAttr('disabled'); 2933 } 2934 $('#new_subscribe_form').attr('action', '/market-insights/'+$(this).val()+'/subscribe'); 2935 }); 2936 2937 2938 } 2939 2940 function ensureOptionsLoaded() { 2941 if (optionsLoaded) { 2942 bindModalEvents(); 2943 return $.Deferred().resolve().promise(); 2944 } 2945 if (optionsRequest) { 2946 return optionsRequest; 2947 } 2948 2949 $('#subscribe_err_msgs').hide(); 2950 2951 optionsRequest = $.getJSON($modal.data('subscribe-options-url'), { 2952 market_report: $modal.data('market-report'), 2953 report_location: $modal.data('market-report'), 2954 prop_type: $modal.data('selected-prop-type'), 2955 property_type_group_id: $modal.data('selected-prop-type'), 2956 num_beds: $modal.data('selected-num-beds'), 2957 min_price: $modal.data('selected-min-price'), 2958 max_price: $modal.data('selected-max-price') 2959 }).done(function(payload) { 2960 applyOptions(payload); 2961 optionsLoaded = true; 2962 bindModalEvents(); 2963 2964 var initialLocation = $modal.data('market-report'); 2965 $('#report_location').val(initialLocation || ''); 2966 $('#report_location').trigger('change'); 2967 }).fail(function() { 2968 $('#subscribe_err_msgs') 2969 .html('<p>Unable to load subscription options. Please try again.</p>') 2970 .addClass('alert alert-danger') 2971 .show(); 2972 }).always(function() { 2973 optionsRequest = null; 2974 }); 2975 2976 return optionsRequest; 2977 } 2978 2979 $modal.on('show.bs.modal.subscribeModal', function() { 2980 ensureOptionsLoaded(); 2981 }); 2982 })(); 2983 </script>
2983 2984 <div id="rb_subscribe_form" class="modal" tabindex="-1" role="dialog" aria-hidden="true" 2985 data-subscribe-options-url="/market-insights/subscribe_options.json" 2986 data-market-report="oakland" 2987 data-selected-type-field="prop_type" 2988 data-selected-prop-type="" 2989 data-selected-num-beds="" 2990 data-selected-min-price="" 2991 data-selected-max-price="" 2992 data-autocompleter-url="https://prd-assets2.fastly.propertybase.com/assets/responsive/autocompleter-a91642d66fbd9f4185dddde790f850d7135fa0298514b1c8fb6df2d849231322.js"> 2993 <div class="modal-dialog modal-dialog-centered" role="document"> 2994 <div class="modal-content"> 2995 <div class="modal-content"> 2996 <div class="modal-header"> 2997 <span class='js-modal-header-text' style="color: #fff">Subscribe to a Market Insight</span> 2998 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 2999 <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="#fff"><path d="M8.069 7l5.75-5.75a.503.503 0 0 0 0-.713L13.464.18a.503.503 0 0 0-.712 0L7 5.931 1.25.184a.503.503 0 0 0-.713 0L.18.541a.503.503 0 0 0 0 .712L5.931 7 .184 12.75a.503.503 0 0 0 0 .713l.357.357a.503.503 0 0 0 .712 0L7 8.069l5.75 5.75a.503.503 0 0 0 .713 0l.357-.356a.503.503 0 0 0 0-.712L8.069 7z" fill-rule="nonzero"></path></svg> 3000 3001 </button> 3002 </div> 3003 3004 <form class="new_market_report_update" id="new_subscribe_form" novalidate="novalidate" data-st-validate="true" action="/market-insights/oakland/subscribe" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="VhW7kRBpMuweXrNxSHVq850eMku8oebmk-InliXvH_z8LOwjqsX2QdhUeL7nXL9yNBwgNTN7uEe8EFtOu0sisw" autocomplete="off" /> 3005 <div id="subscribe_form" class="modal-body"> 3006 3007 <div id="subscribe_err_msgs"></div> 3008 <input autocomplete="off" type="hidden" name="market_report_update[unsubscribed_at]" id="market_report_update_unsubscribed_at" /> 3009 <input autocomplete="off" type="hidden" value="Lead" name="market_report_update[person_type]" id="market_report_update_person_type" /> 3010 <input autocomplete="off" type="hidden" name="market_report_update[person_id]" id="market_report_update_person_id" /> 3011 3012 <div class="form-group"> 3013 <label for="market_report_update_name">Report Name:</label> 3014 <input class="form-control form-control-sm report_field" type="text" name="market_report_update[name]" id="market_report_update_name" /> 3015 </div> 3016 <div class="form-group"> 3017 <label for='report_location'>Location:</label> 3018 <select name="report_location" id="report_location" class="form-control form-control-sm" data-subscribe-options-target="location"><option value="">Select Location</option></select> 3019 </div> 3020 <div class="form-group"> 3021 <label for="market_report_update_prop_type">Property Type:</label> 3022 <select disabled="disabled" class="form-control form-control-sm report_field" data-subscribe-options-target="property_type" name="market_report_update[prop_type]" id="market_report_update_prop_type"><option value="">Property Type</option> 3023</select> 3024 </div> 3025 <div class="form-group"> 3026 <label for="market_report_update_num_beds"># of Bedrooms:</label> 3027 <select disabled="disabled" class="form-control form-control-sm report_field" data-subscribe-options-target="beds" name="market_report_update[num_beds]" id="market_report_update_num_beds"><option value=""># of Bedrooms</option> 3028</select> 3029 </div> 3030 <div class="form-group"> 3031 <label for="market_report_update_min_price">Min Price:</label> 3032 <select disabled="disabled" class="form-control form-control-sm report_field" data-subscribe-options-target="min_price" name="market_report_update[min_price]" id="market_report_update_min_price"><option value="">Min Price</option> 3033</select> 3034 </div> 3035 <div class="form-group"> 3036 <label for="market_report_update_max_price">Max Price:</label> 3037 <select disabled="disabled" class="form-control form-control-sm report_field" data-subscribe-options-target="max_price" name="market_report_update[max_price]" id="market_report_update_max_price"><option value="">Max Price</option> 3038</select> 3039 </div> 3040 <div class="form-group"> 3041 <label for="market_report_update_frequency">Frequency:</label> 3042 <select class="form-control form-control-sm report_field" name="market_report_update[frequency]" id="market_report_update_frequency"><option value="Weekly">Weekly</option> 3043<option value="Monthly">Monthly</option> 3044<option value="Quarterly">Quarterly</option></select> 3045 </div> 3046 3047 <div class="form-check"> 3048 <input name="market_report_update[send_confirmation]" type="hidden" value="
30480" autocomplete="off" /><input class="report_field form-check-input" type="checkbox" value="1" name="market_report_update[send_confirmation]" id="market_report_update_send_confirmation" /> 3049 <label for="market_report_update_send_confirmation">Send Email Confirmation</label> 3050 </div> 3051 </div> 3052 <div class="modal-footer"> 3053 <input type="submit" name="commit" value="Submit" class="btn btn-primary btn-lg btn-block report_field" id="subscribe_modal_submit" data-disable-with="Submit" /> 3054 <img id="subscribe_spinner" style="display:none;" src="https://prd-assets2.fastly.propertybase.com/assets/spinner-6936d4b7da6c3bec105e39b5c6ea209fcf90f196af4fe4e34996e547a848e126.gif" /> 3055 </div> 3056 3057</form> </div> 3058 </div> 3059 </div> 3060</div> 3061 3062 3063 3064
3064<script> 3065 3066 function initResponsiveThemePhotoCarousel() { 3067 var originalSlides = []; 3068 var lastViewportState = null; // Track if we were last on mobile or desktop 3069 var mobileSlideData = []; // Cache mobile slide references 3070 var desktopSlideData = []; // Cache desktop slide references 3071 var slidesAnalyzed = false; // Track if we've analyzed the slides 3072 3073 // are we already on mobile? 3074 function isMobileViewport() { 3075 return window.innerWidth <= 768; 3076 } 3077 3078 // Analyze slides once and cache which ones should show where 3079 function analyzeSlides() { 3080 if (slidesAnalyzed) return; 3081 3082 $(originalSlides).each(function(index) { 3083 var slide = $(this); 3084 var mobileData = slide.data('mobile'); 3085 var desktopData = slide.data('desktop'); 3086 3087 var showOnMobile = mobileData === true || mobileData === 'true'; 3088 var showOnDesktop = desktopData === true || desktopData === 'true'; 3089 3090 if (showOnMobile) { 3091 mobileSlideData.push(index); 3092 } 3093 if (showOnDesktop) { 3094 desktopSlideData.push(index); 3095 } 3096 }); 3097 3098 slidesAnalyzed = true; 3099 } 3100 3101 function reinitializeCarousel() { 3102 var isMobile = isMobileViewport(); 3103 3104 // Only reinitialize if viewport state actually changed (or first load) 3105 if (lastViewportState !== null && lastViewportState === isMobile) { 3106 return; 3107 } 3108 3109 lastViewportState = isMobile; 3110 3111 // Analyze slides if not done yet 3112 analyzeSlides(); 3113 3114 // Check if we have any slides for this viewport 3115 var slideIndices = isMobile ? mobileSlideData : desktopSlideData;
3116 var $container = $('.st-carousel-container'); 3117 3118 // Hide entire carousel if no slides for this viewport 3119 if (slideIndices.length === 0) { 3120 if ($('.st-hero-slider').hasClass('slick-initialized')) { 3121 $('.st-hero-slider').slick('destroy'); 3122 } 3123 $('.st-hero-slider').empty(); 3124 $container.hide(); 3125 return; 3126 } 3127 3128 // Show container and proceed with carousel initialization 3129 $container.show(); 3130 3131 if ($('.st-hero-slider').hasClass('slick-initialized')) { 3132 $('.st-hero-slider').slick('destroy'); 3133 } 3134 3135 $('.st-hero-slider').empty(); 3136 3137 // Use slide indices to get original slides and clone them fresh 3138 slideIndices.forEach(function(index) { 3139 var originalSlide = $(originalSlides[index]); 3140 $('.st-hero-slider').append(originalSlide.clone()); 3141 }); 3142 3143 if (slideIndices.length > 0) { 3144 initThemePhotoCarouselST(6 * 1000); 3145 } 3146 } 3147 3148 // Store original slides before any manipulation 3149 originalSlides = $('.st-hero-slider__slide').toArray(); 3150 3151 // Initialize on page load 3152 reinitializeCarousel(); 3153 3154 // Reinitialize on window resize with debouncing 3155 var resizeTimeout; 3156 $(window).on('resize', function() { 3157 clearTimeout(resizeTimeout); 3158 resizeTimeout = setTimeout(function() { 3159 reinitializeCarousel(); 3160 }, 250); 3161 }); 3162 } 3163 3164 setTimeout(function() { 3165 initResponsiveThemePhotoCarousel(); 3166 }, 0); 3167 3168 $('body').on('click', '.st-hero-slider__slide', function(){ 3169 if($(this).find('a').length){ 3170 window.location.href = $(this).find('a').attr('href'); 3171 } 3172 }) 3173 3174 3175 </script>
3175 3176 3177 <style> 3178 3179 @supports (content-visibility: auto) { 3180 .homepage-below-fold-section { 3181 content-visibility: auto; 3182 contain-intrinsic-size: 1200px; 3183 } 3184 } 3185 3186 3187 #homepage_search_towns { 3188 display: none; 3189 } 3190 3191 .supersearch-container{ 3192 height: 60px; 3193 } 3194 3195 3196 .dynamic-beds-count, .dynamic-beds-character, .dynamic-max-beds-count, .dynamic-baths-count, .dynamic-divider, .dynamic-price { 3197 display: none; 3198 } 3199 3200 .st-mobile-nav-options .asColorPicker-wrap{ 3201 width: 200px; 3202 } 3203 3204 div#qs-complex-wrapper::after{ 3205 opacity: 85% !important; 3206 } 3207 3208 .featured-properties-wrapper{ 3209 background-image: url(''); 3210 3211 } 3212 3213 .section.featured-properties-wrapper:after{ 3214 opacity: 85% !important; 3215 } 3216 3217 .c-property-card--1 .c-property-card__image-overlay:before{ 3218 display: none; 3219 } 3220 3221 .areas-wrapper{ 3222 background-image: url(''); 3223 background-position: center; 3224 background-size: cover; 3225 position: relative; 3226 } 3227 3228 .areas-wrapper:after{ 3229 opacity: 100% !important; 3230 } 3231 3232 .areas-wrapper .container, .areas-wrapper .container-xl{ 3233 position: relative; 3234 z-index: 5; 3235 } 3236 3237 .featured-properties-wrapper{ 3238 background-image: url(''); 3239 } 3240 3241 .section.featured-properties-wrapper:after{ 3242 opacity: 85% !important; 3243 } 3244 3245 .featured-slider-bicycle{ 3246 padding: 24px 0; 3247 } 3248 3249 3250 .c-property-card--1 .c-property-card__image-overlay:before{ 3251 display: none; 3252 } 3253 3254 .featured-agents-wrapper{ 3255 background-position: center; 3256 background-size: cover; 3257 position: relative; 3258 } 3259 3260 .featured-agents-wrapper:after{ 3261 opacity: 85% !important; 3262 } 3263 3264 .featured-agents-wrapper .container, .featured-agents-wrapper .container-xl{ 3265 position: relative; 3266 z-index: 50; 3267 } 3268 3269 .cms-content-wrapper:after{ 3270 content: ""; 3271 position: absolute; 3272 top: 0; 3273 left: 0; 3274 width: 100%; 3275 height: 100%; 3276 opacity: 100% !important; 3277 } 3278 3279 .cms-content-wrapper .container, .cms-content-wrapper .container-xl{ 3280 position: relative; 3281 z-index: 5; 3282 padding: 0; 3283 }; 3284 3285 .st-hero-slider__wrapper{ 3286 position: relative; 3287 z-index: 2; 3288 } 3289 3290 .st-hero-slider__slide:after{ 3291 opacity: 85% !important; 3292 } 3293 3294 .theme-photo-caption, .theme-photo-hero{ 3295 z-index: 4; 3296 color: #ffffff; 3297 } 3298 3299 /* Hide carousel container based on viewport and available photos */ 3300 @media (max-width: 768px) { 3301 .st-carousel-container[data-mobile-visible="false"] { 3302 display: none !important; 3303 } 3304 } 3305 3306 @media (min-width: 769px) { 3307 .st-carousel-container[data-desktop-visible="false"] { 3308 display: none !important; 3309 } 3310 } 3311 3312</style> 3313 3314
3314<script> 3315 setupLinkTracking(); 3316 </script>
3316 3317
3317<script type="text/javascript"> 3318 $(function(){ 3319 window.isIosShareDevice = window.isIosShareDevice || function() { 3320 return /iPad|iPhone|iPod/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1); 3321}; 3322 3323 3324 socialMediaTrigger(); 3325 3326 $('.js-social-share-trigger').on('mouseover', function(){ 3327 if(!$(this).hasClass('loaded')){ 3328 $(this).addClass('loaded'); 3329 loadTwitterJS(''); 3330 if (!isIosShareDevice()) { 3331 loadFacebookJS('https://www.cotton-realty.com/channel.html', '', false); 3332 } 3333 loadLinkedInJS(''); 3334 loadPinterestJS('false'); 3335 setTimeout(function(){ 3336 $('.fb-send').css({width: 'auto', height: 'auto'}); 3337 }, 1500); 3338 } 3339 }); 3340 3341 if (isIosShareDevice()) { 3342 $('.js-social-share .fb-like, .js-social-share .fb-share-button, .js-social-share .fb-send').hide(); 3343 } 3344 }); 3345 3346 </script>
3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 <div id="modalContactAgent" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="contact_agent_modal_title" aria-hidden="true"> 3372 <div class="modal-dialog"> 3373 <div class="modal-content"> 3374 <div class="modal-header"> 3375 <div class="modal-title" id="contact_agent_modal_title">Contact Agent</div> 3376 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 3377 <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="#fff"><path d="M8.069 7l5.75-5.75a.503.503 0 0 0 0-.713L13.464.18a.503.503 0 0 0-.712 0L7 5.931 1.25.184a.503.503 0 0 0-.713 0L.18.541a.503.503 0 0 0 0 .712L5.931 7 .184 12.75a.503.503 0 0 0 0 .713l.357.357a.503.503 0 0 0 .712 0L7 8.069l5.75 5.75a.503.503 0 0 0 .713 0l.357-.356a.503.503 0 0 0 0-.712L8.069 7z" fill-rule="nonzero"></path></svg> 3378 3379 </button> 3380 </div> 3381 <div id="agent_contact_form" class="modal-body"> 3382 <div id="agent_contact_err_msgs"></div> 3383 <form class="new_contact_form" id="new_agent_contact_form" novalidate="novalidate" data-st-validate="true" action="#" accept-charset="UTF-8" data-remote="true" method="post"> 3384 <div id="comment_body_container" class="d-none"><input type="text" name="comment_body" id="comment_body" /><label for="comment_body">Comment Body</label></div> 3385 <input id="contact_form_agent_id" value="" autocomplete="off" type="hidden" name="contact_form[agent_id]" /> 3386 3387 <div class="row"> 3388 <div class="col-6"> 3389 <div class="form-group">
3390 <label for="contact_form_lead_attributes_first_name">First Name</label> 3391 <input title="Enter your first name." placeholder="" class="form-control form-control-sm" required="required" type="text" name="contact_form[lead_attributes][first_name]" id="contact_form_lead_attributes_first_name" /> 3392 </div> 3393 </div> 3394 <div class="col-6"> 3395 <div class="form-group"> 3396 <label for="contact_form_lead_attributes_last_name">Last Name</label> 3397 <input title="Enter your last name." placeholder="" class="form-control form-control-sm" required="required" type="text" name="contact_form[lead_attributes][last_name]" id="contact_form_lead_attributes_last_name" /> 3398 </div> 3399 </div> 3400 </div> 3401 3402 <div id="password_field_container"></div> 3403 <div class="row"> 3404 <div class="col-sm-12"> 3405 <div class="form-group" style="width:100%;"> 3406 <label for="contact_form_lead_attributes_user_attributes_email">Email</label> 3407 <input type="email" title="Enter your Email." placeholder="" class="form-control form-control-sm" required="required" name="contact_form[lead_attributes][user_attributes][email]" id="contact_form_lead_attributes_user_attributes_email" /> 3408 </div> 3409 </div> 3410 </div> 3411 <div class="col-sm-12"> 3412 <div class="row"> 3413 <div class="col-xs-16"> 3414 <div class="form-group"> 3415 <label for="contact_form_lead_attributes_phone1">Phone #</label> 3416 <input type="tel" title="Enter your phone number." placeholder="555-123-4567" class="form-control form-control-sm" data-st-rule="phone" name="contact_form[lead_attributes][phone1]" id="contact_form_lead_attributes_phone1" /> 3417 </div> 3418 </div> 3419 <div class="col-xs-8 kill-left-padding"> 3420 <div class="form-group"> 3421 <label for="contact_form_lead_attributes_phone1">Type</label> 3422 <select style="height: 38px" class="form-control form-control-sm" name="contact_form[lead_attributes][phone_type_1]" id="contact_form_lead_attributes_phone_type_1"><option value="" label=" "></option> 3423<option value="1">Home</option> 3424<option value="2">Cell</option> 3425<option value="3">Work</option> 3426<option value="4">Fax</option></select> 3427 </div> 3428 </div> 3429 </div> 3430 </div> 3431 <div class="smidge clear-both"></div> 3432 3433 <div class="form-check"> 3434 <input type="hidden" name="contact_form[lead_attributes][custom_field_data][sms_opted_in]" id="hidden_sms_opt_field" value="0" autocomplete="off" /> 3435 <input type="checkbox" name="contact_form[lead_attributes][custom_field_data][sms_opted_in]" id="contact_form_lead_attributes_custom_field_data_sms_opted_in" value="1" class="form-check-input" /> 3436 <label class="form-check-label" for="contact_form_lead_attributes_custom_field_data_sms_opted_in" style="white-space: normal;"> 3437 By entering my phone number and checking this box, I agree to receive <b>marketing texts and promotional</b> messages from <b>Cotton Realty</b> about real estate services. ** 3438 </label> 3439 </div> 3440 <div class="form-check"> 3441 <input type="hidden" name="contact_form[lead_attributes][custom_field_data][sms_info_opted_in]" id="hidden_sms_info_opt_field" value="0" autocomplete="off" /> 3442 <input type="checkbox" name="contact_form[lead_attributes][custom_field_data][sms_info_opted_in]" id="contact_form_lead_attributes_custom_field_data_sms_info_opted_in" value="1" class="form-check-input" /> 3443 <label class="form-check-label" for="contact_form_lead_attributes_custom_field_data_sms_info_opted_in" style="white-space: normal;"> 3444 By entering my phone number and checking this box, I agree to re
3444ceive <b>informational messages and system alerts</b> from <b>Cotton Realty</b> about real estate services. ** 3445 </label> 3446 </div> 3447 <div class="small"> 3448 ** This agreement isn't a condition of any purchase. Message frequency varies. Message & data rates may apply. Reply STOP to opt out or HELP for more information. Providing your phone number is optional and not required to use our service. View our <b><a target="_blank" href="https://www.lwolf.com/about/msa">Terms of Service</a></b> and <b><a target="_blank" href="/privacy-policy">Privacy Policy</a></b> 3449 </div> 3450 3451 <div class="col-sm-24" style="margin-bottom:1rem;"> 3452 <div class="checkbox centered-checkbox"> 3453 </div> 3454 </div> 3455 <div class="smidge clear-both"></div> 3456 3457 3458 3459 <div class="col-xs-12"> 3460 <div class="form-group"> 3461 <label class="inline" for="contact_form_lead_attributes_contact_method_id">Preferred Contact Method:</label><br /> 3462 <select title="What is your preferred contact method?" class="form-control form-control-sm" name="contact_form[lead_attributes][contact_method_id]" id="contact_form_lead_attributes_contact_method_id"><option value="" label=" "></option> 3463<option value="1">Email</option> 3464<option value="2">Cell Phone</option> 3465<option value="3">Home Phone</option> 3466<option value="4">Snail Mail</option> 3467<option value="5">Text Message</option></select> 3468 </div> 3469 </div> 3470 <div class="col-xs-12"> 3471 <div class="form-group"> 3472 <label class="inline" for="contact_form_lead_attributes_where_heard_id">How did you hear about me?</label><br /> 3473 <select title="How did you hear about us? Select a choice." class="form-control form-control-sm" name="contact_form[lead_attributes][where_heard_id]" id="contact_form_lead_attributes_where_heard_id"><option value="" label=" "></option> 3474<option value="1">Newspaper</option> 3475<option value="2">Internet Search</option> 3476<option value="3">Agent</option> 3477<option value="4">Email</option> 3478<option value="5">Direct Mail</option> 3479<option value="6">Blog/Social Media</option> 3480<option value="7">Referral</option> 3481<option value="8">Other</option> 3482<option value="9">Open House</option> 3483<option value="10">Yard Sign</option> 3484<option value="11">Print Ad</option> 3485<option value="12">Online Ad</option> 3486<option value="13">Personal Relationship</option> 3487<option value="14">Text</option> 3488<option value="15">Floor/Walk In</option> 3489<option value="16">Billboard</option> 3490<option value="17">Radio</option> 3491<option value="18">Zillow</option> 3492<option value="19">Rent with Equity</option> 3493<option value="20">Model Home</option> 3494<option value="21">Realtor.com</option> 3495<option value="22">Facebook</option> 3496<option value="23">Live Chat</option> 3497<option value="24">Homes.com</option></select> 3498 </div> 3499 </div> 3500 3501 <div class="clear-both smidge"></div> 3502 3503 <div class="col-sm-20 col-sm-offset-2"> 3504 <label for='contact_comments'>Comments:</label> 3505 <div class="input-group"> 3506 <textarea rows="6" class="form-control input-sm" required="required" data-st-label="Comments" name="contact_form[comments]" id="contact_form_comments"> 3507</textarea> 3508 </div> 3509 </div> 3510 3511 <div class="bumper clearfix"></div> 3512 3513 3514 <div class="modal-recapcha"> 3515 3516 <div class="g-recaptcha" type="hidden"> 3517 <input name="g-recaptcha-response" type="hidden" id="OCMUXQHB"/> 3518 </div> 3519
3519<script type="text/javascript"> 3520 captchaSiteKey = '6Lft-dYfAAAAAHKdkJ7-UwZ-mfAZeFOZm0mISWfO'; 3521 captchaJsIds = ["OCMUXQHB"]; 3522 captchaCallback = true; 3523 runningCaptcha = true; 3524 </script>
3524 3525 3526 </div> 3527 3528 <input type="submit" name="commit" value="Submit" class="submit btn w-100 st-btn btn-primary" id="contact_modal_submit" data-disable-with="Contacting agent..." /> 3529 3530 </div> 3531 <div class="modal-footer" style="padding:.8rem !important;"> 3532 <button type="button" class="text-muted btn st-btn w-100 btn-outline-primary" data-dismiss="modal" aria-label="Cancel">Cancel</button> 3533 <img id="contact_agent_spinner" style="display:none;" src="https://prd-assets2.fastly.propertybase.com/assets/spinner-6936d4b7da6c3bec105e39b5c6ea209fcf90f196af4fe4e34996e547a848e126.gif" /> 3534 </div> 3535</form> 3536 </div> <!-- end .modal-content --> 3537 </div> <!-- end .modal-dialog --> 3538</div> <!-- end .modal --> 3539 3540 3541 3542 3543 <!-- ADA compliance --> 3544
3544<script>(function(){var s = document.createElement('script'),e = ! document.body ? document.querySelector('head') : document.body;s.src = 'https://acsbapp.com/apps/app/assets/js/acsb.js';s.defer = true;s.onload = function(){acsbJS.init({statementLink : '',feedbackLink : '',footerHtml : '',hideMobile : false,hideTrigger : false,language : 'en',position : 'right',leadColor : '#146FF8',triggerColor : '#146FF8',triggerRadius : '50%',triggerPositionX : 'right',triggerPositionY : 'bottom',triggerIcon : 'people',triggerSize : 'medium',triggerOffsetX : 20,triggerOffsetY : 20,mobile : {triggerSize : 'small',triggerPositionX : 'right',triggerPositionY : 'center',triggerOffsetX : 0,triggerOffsetY : 0,triggerRadius : '50%'}});};e.appendChild(s);}());</script>
3544 3545 3546 3547 3548
3548<script> 3549 $('body').off('click', '.dismiss-cta-container'); 3550 $('body').on('click', '.dismiss-cta-container', function() { 3551 $('.call-to-action').toggleClass('shrunk'); 3552 $('.dismiss-cta-container').toggleClass('bigger'); 3553 $('.display-cta, .dismiss-cta').toggleClass('shown'); 3554 }); 3555 </script>
3555 3556 3557 <style> 3558 .pb-cookie-consent { background: rgba(17, 24, 39, 0.72); bottom: 0; display: none; left: 0; position: fixed; right: 0; top: 0; z-index: 2147483000; } 3559 .pb-cookie-consent.is-visible { display: block; } 3560 .pb-cookie-consent__dialog { background: #fff; border-radius: 8px; bottom: 24px; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.25); color: #1f2933; left: 24px; max-height: calc(100vh - 48px); max-width: 680px; overflow: auto; padding: 18px 22px; position: absolute; right: 24px; } 3561 .pb-cookie-consent__close { align-items: center; background: transparent; border: 0; color: #1f2933; cursor: pointer; display: flex; font-size: 24px; height: 36px; justify-content: center; line-height: 1; padding: 0; position: absolute; right: 14px; top: 12px; width: 36px; } 3562 .pb-cookie-consent__title { font-size: 20px; line-height: 1.2; margin: 0 0 8px; } 3563 .pb-cookie-consent__copy { font-size: 14px; line-height: 1.4; margin: 0 0 12px; } 3564 .pb-cookie-consent__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; } 3565 .pb-cookie-consent__button { border: 1px solid #1f2933; border-radius: 4px; cursor: pointer; font-size: 13px; font-weight: 700; min-height: 38px; padding: 8px 14px; } 3566 .pb-cookie-consent__button--primary { background: #1f2933; color: #fff; } 3567 .pb-cookie-consent__button--secondary { background: #fff; color: #1f2933; } 3568 .pb-cookie-consent__content.is-hidden { display: none; } 3569 .pb-cookie-consent__preferences { border-top: 1px solid #d8dee4; display: none; margin-top: 12px; padding-top: 12px; } 3570 .pb-cookie-consent__preferences.is-visible { display: block; } 3571 .pb-cookie-consent__confirmation { display: none; padding: 36px 18px 28px; text-align: center; } 3572 .pb-cookie-consent__confirmation.is-visible { display: block; } 3573 .pb-cookie-consent__confirmation-icon { align-items: center; background: #1f7a4d; border-radius: 50%; color: #fff; display: inline-flex; font-size: 42px; font-weight: 700; height: 72px; justify-content: center; line-height: 1; margin-bottom: 18px; width: 72px; } 3574 .pb-cookie-consent__confirmation-title { font-size: 22px; font-weight: 700; line-height: 1.2; margin: 0 0 8px; } 3575 .pb-cookie-consent__confirmation-copy { font-size: 14px; line-height: 1.45; margin: 0 auto; max-width: 420px; } 3576 .pb-cookie-consent__row { align-items: flex-start; border-bottom: 1px solid #edf0f2; display: flex; gap: 16px; justify-content: space-between; padding: 8px 0; } 3577 .pb-cookie-consent__row label { font-weight: 700; margin: 0; } 3578 .pb-cookie-consent__row p { font-size: 13px; line-height: 1.3; margin: 2px 0 0; } 3579 .pb-cookie-consent__warning { color: #8a4b00; display: block; font-size: 12px; font-weight: 700; line-height: 1.3; margin-top: 4px; } 3580 .pb-cookie-consent__warning.is-hidden { display: none; } 3581 .pb-cookie-consent__footer-link { background: transparent; border: 0; color: inherit; cursor: pointer; padding: 0; text-decoration: underline; } 3582 .pb-cookie-consent-launcher { background: #ffffff; border: 1px solid #d8dee4; border-radius: 8px; bottom: 16px; box-shadow: 0 12px 30px rgba(17, 24, 39, 0.18); color: #1f2933; left: 16px; max-width: 320px; padding: 16px 42px 16px 16px; position: fixed; transform: translateY(0); transition: opacity 180ms ease, transform 220ms ease; z-index: 2147482999; } 3583 .pb-cookie-consent-launcher.is-hidden { display: none; } 3584 .pb-cookie-consent-launcher.is-dismissed { opacity: 0; pointer-events: none; transform: translateY(calc(100% + 24px)); } 3585 .pb-cookie-consent-launcher__close { align-items: center; background: transparent; border: 0; color: inherit; cursor: pointer; display: flex; font-size: 22px; height: 32px; justify-content: center; line-height: 1; opacity: 0.8; padding: 0; position: absolute; right: 8px; top: 8px; width: 32px; } 3586 .pb-cookie-consent-launcher__close:hover, 3587 .pb-cookie-consent-launcher__close:focus { opacity: 1; } 3588 .pb-cookie-consent-launcher__title { font-size: 16px; font-weight: 700; line-height: 1.3; margin: 0 0 6px; } 3589 .pb-cookie-consent-launcher__copy { font-size: 13px; line-height: 1.45; margin: 0 0 12px; } 3590 .pb-cookie-consent-link { background: transparent; border: 0; color: inherit; cursor: pointer; font-size: 13px; font-weight: 700; padding: 0; text-decoration: underline; } 3591 .pb-privacy-choices-footer-link { display: inline-block; } 3592 .pb-mobile-privacy-choices-footer { bottom: 58px; font-size: 12px; left: 0; padding: 6px 10px; position: fixed; right: 0; text-align: center; z-index: 999; } 3593 @media (max-width: 520px) { 3594 .pb-cookie-consent__dialog { bottom: 0; left: 0; max-height: 100vh; right: 0; } 3595 .pb-cookie-consent__actions { display: block; } 3596 .pb-cookie-consent__button { margin-bottom: 8px; width: 100%; } 3597 .pb-cookie-consent-launcher { bottom: 12px; left: 12px; max-width: none; right: 12px; } 3598 } 3599</style> 3600 3601<div id="pb-cookie-consent" class="pb-cookie-consent" role="dialog" aria-modal="true" aria-labelledby="pb-cookie-consent-title" data-required="true"> 3602 <div class="pb-cookie-consent__dialog"> 3603 <button type="button" class="pb-cookie-consent__close" data-cookie-consent-action="close" aria-label="Close privacy choices">×</button> 3604 <div class="pb-cookie-consent__content"> 3605 <h2 id="pb-cookie-consent-title" class="pb-cookie-consent__title">Privacy Choices</h2> 3606 <p class="pb-cookie-consent__copy"> 3607 We use cookies and similar technologies to keep this site working, support core map functionality, remember preferences, measure performance, and support advertising, personalization, chat, and optional third-party services. You can opt out of optional cookies or manage your choices at any time. 3608 <a target="_blank" rel="noopener" href="/privacy-policy">Privacy Policy</a> 3609 </p> 3610 3611 3612 <div id="pb-cookie-consent-preferences" class="pb-cookie-consent__preferences"> 3613 <p class="pb-cookie-consent__copy">To opt out of sale or sharing of personal information for targeted advertising, turn off Advertising and Personalization or reject optional cookies.</p> 3614 <div class="pb-cookie-consent__row"> 3615 <div> 3616 <label for="pb-cookie-necessary">Necessary</label> 3617 <p>Required for security, login, forms, and core site operation.</p> 3618 </div> 3619 <div class="form-check"> 3620 <input id="pb-cookie-necessary" class="form-check-input" type="checkbox" checked disabled> 3621 </div> 3622 </div> 3623 <div class="pb-cookie-consent__row"> 3624 <div> 3625 <label for="pb-cookie-functional_integrations">Functional integrations</label> 3626 <p>Load core real estate functionality such as maps and address lookup.</p> 3627 </div> 3628 <div class="form-check"> 3629 <input id="pb-cookie-functional_integrations" class="form-check-input" type="checkbox" data-cookie-consent-category="functional_integrations" checked disabled> 3630 </div> 3631 </div> 3632 <div class="pb-cookie-consent__row"> 3633 <div> 3634 <label for="pb-cookie-preferences">Preferences</label> 3635 <p>Remember site preferences such as search display choices and dismissed prompts.</p>
3636 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="preferences">Turning this off may limit features or make parts of this website less useful.</span> 3637 </div> 3638 <div class="form-check"> 3639 <input id="pb-cookie-preferences" class="form-check-input" type="checkbox" data-cookie-consent-category="preferences" checked > 3640 </div> 3641 </div> 3642 <div class="pb-cookie-consent__row"> 3643 <div> 3644 <label for="pb-cookie-analytics">Analytics</label> 3645 <p>Measure site performance, traffic, and visitor activity.</p> 3646 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="analytics">Turning this off may limit features or make parts of this website less useful.</span> 3647 </div> 3648 <div class="form-check"> 3649 <input id="pb-cookie-analytics" class="form-check-input" type="checkbox" data-cookie-consent-category="analytics" checked > 3650 </div> 3651 </div> 3652 <div class="pb-cookie-consent__row"> 3653 <div> 3654 <label for="pb-cookie-advertising">Advertising / sale or share</label> 3655 <p>Support ad measurement, remarketing, and activity that may be considered sale or sharing for targeted advertising.</p> 3656 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="advertising">Turning this off may limit features or make parts of this website less useful.</span> 3657 </div> 3658 <div class="form-check"> 3659 <input id="pb-cookie-advertising" class="form-check-input" type="checkbox" data-cookie-consent-category="advertising" checked > 3660 </div> 3661 </div> 3662 <div class="pb-cookie-consent__row"> 3663 <div> 3664 <label for="pb-cookie-personalization">Personalization / targeted ads</label> 3665 <p>Use activity signals to personalize ads or content. Turn this off to limit targeted advertising personalization.</p> 3666 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="personalization">Turning this off may limit features or make parts of this website less useful.</span> 3667 </div> 3668 <div class="form-check"> 3669 <input id="pb-cookie-personalization" class="form-check-input" type="checkbox" data-cookie-consent-category="personalization" checked > 3670 </div> 3671 </div> 3672 <div class="pb-cookie-consent__row"> 3673 <div> 3674 <label for="pb-cookie-third_party_integrations">Third party integrations</label> 3675 <p>Load optional embedded third-party services such as accessibility tools, neighborhood data, videos, and social widgets.</p> 3676 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="third_party_integrations">Turning this off may limit features or make parts of this website less useful.</span> 3677 </div> 3678 <div class="form-check"> 3679 <input id="pb-cookie-third_party_integrations" class="form-check-input" type="checkbox" data-cookie-consent-category="third_party_integrations" checked > 3680 </div> 3681 </div> 3682 <div class="pb-cookie-consent__row"> 3683 <div> 3684 <label for="pb-cookie-chat_support">Chat support</label> 3685 <p>Load live chat or support widgets.</p> 3686 <span class="pb-cookie-consent__warning is-hidden" data-cookie-consent-warning="chat_support">Turning this off may limit features or make parts of this website less useful.</span> 3687 </div> 3688 <div class="form-check"> 3689 <input id="pb-cookie-chat_support" class="form-check-input" type="checkbox" data-cookie-consent-category="chat_support" checked > 3690 </div> 3691 </div> 3692 </div> 3693 3694 <div class="pb-cookie-consent__actions"> 3695 <button type="button" class="pb-cookie-consent__button pb-cookie-consent__button--primary" data-cookie-consent-action="accept_all">Accept All</button> 3696 <button type="button" class="pb-cookie-consent__button pb-cookie-consent__button--secondary" data-cookie-consent-action="reject_all">Reject Optional Cookies</button> 3697 <button type="button" class="pb-cookie-consent__button pb-cookie-consent__button--primary" data-cookie-consent-action="save_preferences">Save Preferences</button> 3698 </div> 3699 </div>
3700 <div class="pb-cookie-consent__confirmation" aria-live="polite"> 3701 <div class="pb-cookie-consent__confirmation-icon" aria-hidden="true">✓</div> 3702 <p class="pb-cookie-consent__confirmation-title">Your preferences have been saved</p> 3703 <p class="pb-cookie-consent__confirmation-copy">You can update your privacy choices at any time.</p> 3704 </div> 3705 </div> 3706</div> 3707 3708<div class="pb-cookie-consent-launcher " role="dialog" aria-label="Privacy choices"> 3709 <button type="button" class="pb-cookie-consent-launcher__close" data-cookie-consent-action="close_launcher" aria-label="Close privacy choices">×</button> 3710 <p class="pb-cookie-consent-launcher__title">Privacy Choices</p> 3711 <p class="pb-cookie-consent-launcher__copy">Review or update your cookie and technology preferences at any time.</p> 3712 <button type="button" class="pb-cookie-consent-link" data-cookie-consent-open="preferences" aria-controls="pb-cookie-consent" aria-expanded="false">Manage Privacy Choices</button> 3713</div>
3714<script> 3715 window.pbCookieConsentConfig = window.pbCookieConsentConfig || {"endpoint":"/cookie_consent","consentVersion":"2026-06-29","policyVersion":"2026-06-29","required":true,"globalPrivacyControl":false,"categories":["necessary","functional_integrations","preferences","analytics","advertising","personalization","third_party_integrations","chat_support"],"acceptedCategories":{},"consentId":null,"companyName":"Cotton Realty","modalCopy":"We use cookies and similar technologies to keep this site working, support core map functionality, remember preferences, measure performance, and support advertising, personalization, chat, and optional third-party services. You can opt out of optional cookies or manage your choices at any time.","privacyPolicyUrl":"/privacy-policy"}; 3716 if (window.pbCookieConsentInit) { 3717 window.pbCookieConsentInit(); 3718 } 3719</script>
vendor: 98 bytes, lines 3719-3722
3719 3720 3721 3722 <script src="https://www.google.com/recaptcha/api.js?onload=captchaV3Callback&render=
37226Lft-dYfAAAAAHKdkJ7-UwZ-mfAZeFOZm0mISWfO
vendor: 34 bytes, lines 3722-3723
3722" async defer></script> 3723
3723<style>.grecaptcha-badge{display:none !important;}</style> 3724 3725 3726
3726<script> 3727 // used for background images only 3728 // use class="lazy" and data-bg="src" to set up 3729 // use loading="lazy" instead on img tags for native img lazy loading 3730 var lazyLoad = new LazyLoad(); 3731 3732 $('input[type="text"], textarea, select, .input-group.date, .token-input-list-facebook, .c-search-bar').on('mouseover', disablePinchZoom); 3733 $('input[type="text"], textarea, select, .input-group.date, .token-input-list-facebook, .c-search-bar').on('mouseout', enablePinchZoom); 3734 $(function(){ 3735 $('.navbar-container').show(); 3736 }); 3737 </script>
3737 3738 3739 3740 </body> 3741</html>
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.