1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 6 <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> 7<!-- Google Tag Manager for GA4 --> 8
8<script>(function(w,d,s,l,i){w.GAMeasurementID='G-48PD8NSG9G';w[l]=w[l]||[];w[l].push({'gtm.start': 9 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 11 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 12 })(window,document,'script','cpDataLayerGA4','GTM-K73C5PS');</script>
12 13 <!-- End Google Tag Manager for GA4 --> 14
14<script type='text/javascript'> 15 var enableTelemetry = 'false' 16 var aiConfig = { 17 instrumentationKey: '1cde048e-3185-4906-aa46-c92a7312b60f' 18 } 19 var appInsights = window.appInsights || function (a) { function b(a) { c[a] = function () { var b = arguments; c.queue.push(function () { c[a].apply(c, b) }) } } var c = { config: a }, d = document, e = window; setTimeout(function () { var b = d.createElement('script'); b.src = a.url || 'https://js.monitor.azure.com/scripts/a/ai.0.js', d.getElementsByTagName('script')[0].parentNode.appendChild(b) }); try { c.cookie = d.cookie } catch (a) { } c.queue = []; for (var f = ['Event', 'Exception', 'Metric', 'PageView', 'Trace', 'Dependency']; f.length;)b('track' + f.pop()); if (b('setAuthenticatedUserContext'), b('clearAuthenticatedUserContext'), b('startTrackEvent'), b('stopTrackEvent'), b('startTrackPage'), b('stopTrackPage'), b('flush'), !a.disableExceptionTracking) { f = 'onerror', b('_' + f); var g = e[f]; e[f] = function (a, b, d, e, h) { var i = g && g(a, b, d, e, h); return !0 !== i && c['_' + f](a, b, d, e, h), i } } return c }(aiConfig); 20 window.appInsights = appInsights, appInsights.queue && 0 === appInsights.queue.length; 21 // Add telemetry initializer 22 appInsights.queue.push(function() { 23 appInsights.context.addTelemetryInitializer(function(envelope) { 24 var telemetryItem = envelope.data.baseData; 25 // To check the telemetry itemâs type: 26 if (!false) 27 { 28 //If the telemetry is not enabled, we still want to capture Google map custom event, so only allow that 29 if (envelope.name.indexOf('.Event') == -1) 30 return false; 31 } 32 }); 33 }); 34 appInsights.trackPageView(); 35 </script>
35 36
36<script> 37 function populateAntiForgery(token) { 38 var input = document.createElement("input"); 39 input.name = "__RequestVerificationToken"; 40 input.type = "hidden"; 41 input.value = token; 42 var absPat = /^https?:\/\/|^\/\//i; 43 var forms = document.getElementsByTagName("form"); 44 for (var i = 0; i < forms.length; i++) { 45 if (forms[i].method == "post" && 46 !forms[i].querySelector('[name="__RequestVerificationToken"]') && 47 !absPat.test(forms[i].getAttribute("action"))) { 48 forms[i].appendChild(input.cloneNode()); 49 } 50 } 51 } 52 53 function getAntiForgeryToken(callback, error) { 54 var xhr = new XMLHttpRequest(); 55 xhr.open("GET", "/antiforgery"); 56 xhr.addEventListener("load", function() { 57 try { 58 if (this.status !== 200) { 59 throw Error("Invalid status. Could not retrieve antiforgery token."); 60 } 61 var obj = JSON.parse(this.responseText); 62 callback(obj.token); 63 } catch (e) { 64 typeof error === "function" && error(e); 65 } 66 }); 67 xhr.send(); 68 } 69 70 getAntiForgeryToken(function(token) { 71 if (document.readyState === "complete" 72 || document.readyState === "loaded" 73 || document.readyState === "interactive") { 74 populateAntiForgery(token); 75 return; 76 } 77 document.addEventListener("DOMContentLoaded", function() { 78 populateAntiForgery(token); 79 }, false); 80 }, console.error); 81 </script>
81 82 83 84
84<script type="text/javascript"> 85 window.departmentHeader = {}; 86 window.pageSectionTracker = {}; 87 window.isResponsiveEnabled = true; 88 window.isRemoveSetHeights= true; 89 if (window.isRemoveSetHeights) { 90 document.documentElement.className += ' removeSetHeights'; 91 } 92 window.mainMenuMediaQuery = 'screen and (max-width: 40em)'; 93 window.isMobileBrowserIncludingTablets = false; 94 window.fixedResponsiveMenu = false; 95 window.fullWidthResponsiveMenu = false; 96 window.responsiveMenuHeight = ''; 97 window.responsiveMenuFontSize = ''; 98 window.isContentAdvisor = false; 99 (function () { 100 window.setSizeCookie = function () { 101 document.cookie = "dpi=" + window.devicePixelRatio + "; path=/"; 102 document.cookie = "viewportWidth=" + window.innerWidth + "; path=/"; 103 document.cookie = "viewportHeight=" + window.innerHeight + "; path=/"; 104 if (screen && screen.width && screen.height) { 105 document.cookie = "screenWidth=" + screen.width + "; path=/"; 106 document.cookie = "screenHeight=" + screen.height + "; path=/"; 107 } 108 document.cookie = "responsiveGhost=1; path=/"; 109 }; 110 111 setSizeCookie(); 112 }()); 113 </script>
113 114 <meta name="viewport" content="width=device-width, initial-scale=1"> 115 116
116<script async src="https://docaccess.com/docbox.js"></script>
116 117 118 <meta name="category0" content="Home" /> 119<meta name="category1" content="Business" /> 120 121 122 <meta name="theme-color" content="rgb(85, 41, 136)"> 123 <link rel="icon" href="/images/favicon.ico" type="image/x-icon" /> 124 <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon" /> 125 <title>Business | Carrboro, NC - Official Website</title> 126 127 <meta name="description" content="Business"> 128 <meta name="keywords" content="Business"> 129
129<script src="/Assets/Scripts/jQuery/jquery-3.7.1.min.js"></script>
129 130
130<script src="/Assets/Scripts/jQuery/jquery-migrate-3.6.0.min.js" type="text/javascript"></script>
130 131 132 133 <!--[if IE 6]>
133<script language="JavaScript" type="text/javascript"> var isie6 = true; </script>
133<![endif]--> 134 <!--[if IE 7]>
134<script language="JavaScript" type="text/javascript"> var isie7 = true; </script>
134<![endif]--> 135 <!--[if IE 8]>
135<script language="JavaScript" type="text/javascript"> var isie8 = true; </script>
135<![endif]--> 136 <!--[if IE 9]>
136<script language="JavaScript" type="text/javascript"> var isie8 = true; </script>
136<![endif]--> 137
137<script type="text/javascript"><!-- 138 var intCountryCode = 840; 139 var order = ''; 140//--></script>
140 141 142<link href="/-681783051.css" rel="stylesheet" type="text/css" /> <link href="/-2140275272.css" rel="stylesheet" type="text/css" /> <link href="/854309624.css" rel="stylesheet" type="text/css" /> 143 144 <link rel="stylesheet" type="text/css" href="/Assets/Styles/Print.css" media="print"> 145
145<script type="text/javascript"> 146 window.Pages = window.Pages || {}; 147 // FrontEnd RWD initialization 148 window.Pages.rwdReady = $.Deferred(); 149 window.Pages.toolBarDeferred = $.Deferred(); 150 window.Pages.rwdSetupComplete = $.Deferred(); 151 window.Pages.megaMenuLoaded = $.Deferred(); 152 window.Pages.angularToolbarComplete = $.Deferred(); 153 window.Pages.frontEndToolbarComplete = $.Deferred(); 154 </script>
154 155 <!--CPHeadContent--> 156
156<script src="/739942322.js" type="text/javascript"></script>
156 157 158 159 160 161 162 163 164 165 <!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/App_Themes/ie8.css"><![endif]--> 166 <!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/App_Themes/ie7.css"><![endif]--> 167 <!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/App_Themes/ie6.css"><![endif]--> 168 <!--[if lt IE 9]>
168<script type="text/javascript" src="/Scripts/html5.js"></script>
168<![endif]--> 169 170
170<script type="text/javascript"> 171 setEditorVariables(false, 840); 172 function getPrintPreviewType() { return 0; } function printPreview() {pPreview(getPrintPreviewType()); } 173 </script>
173 174
174<script src="/Assets/Scripts/AlpineJS/3.14.1/alpine.min.js" type="text/javascript" defer="defer"></script>
174 175</head> 176<body class="wide " > 177 178
178<script>jQuery(document).click(function (event) { 179 var target = jQuery(event.target); 180 if (target.attr('src') && target.parents('.image').length && target.parents('.widget').length) { 181 var text = target.attr('title'); 182 183 if (!text.length) { 184 text = "N/A"; 185 } 186 ga('send', 187 { 188 hitType: 'event', 189 eventCategory: 'Image', 190 eventAction: 'Image - ' + text, 191 eventLabel: window.location.href 192 }); 193 } 194 if (target.is('button') || target.hasClass('button') || target.parents().hasClass('button')) { 195 var text = ""; 196 if (target.parents('.button')[0]) { 197 text = target.parents('.button').first().text(); 198 } else if (target.text().length) { 199 text = target.text(); 200 } else if (target.attr('title').length) { 201 text = target.attr('title'); 202 } 203 if (!text.length) { 204 text = "N/A"; 205 } 206 ga('send', 207 { 208 hitType: 'event', 209 eventCategory: 'Button', 210 eventAction: 'Button - ' + text, 211 eventLabel: window.location.href 212 }); 213 } 214 if (target.parents('.widgetCustomHtml').length) { 215 ga('send', 216 { 217 hitType: 'event', 218 eventCategory: 'Custom Html',
219 eventAction: 'Custom Html Clicked', 220 eventLabel: window.location.href 221 }); 222 } 223 if (target.parents('.editor').length) { 224 ga('send', 225 { 226 hitType: 'event', 227 eventCategory: 'Editor', 228 eventAction: 'Editor Link Clicked', 229 eventLabel: window.location.href 230 }); 231 } 232 if (target.parents('.GraphicLinks').length) { 233 var text = ""; 234 var targetGraphicLink = target; 235 if (target.hasClass('widgetGraphicLinksLink')) { 236 targetGraphicLink = jQuery(target.children()[0]); 237 } 238 if (targetGraphicLink.hasClass('text')) { 239 text = targetGraphicLink.text(); 240 } else if (targetGraphicLink.attr('src').length) { 241 if (targetGraphicLink.attr('alt').length) { 242 text = targetGraphicLink.attr('alt'); 243 } else { 244 text = targetGraphicLink.attr('src'); 245 } 246 } else { 247 text = "N/A"; 248 } 249 ga('send', 250 { 251 hitType: 'event', 252 eventCategory: 'Graphic Links', 253 eventAction: 'Graphic Link - ' + text, 254 eventLabel: window.location.href 255 }); 256 } 257 if (target.parents('.InfoAdvanced').length) { 258 ga('send', 259 { 260 hitType: 'event', 261 eventCategory: 'Info Advanced', 262 eventAction: 'Info Advanced Clicked', 263 eventLabel: window.location.href 264 }); 265 } 266 if (target.parents('.list').length) { 267 ga('send', 268 { 269 hitType: 'event', 270 eventCategory: 'List', 271 eventAction: 'List Clicked', 272 eventLabel: window.location.href 273 }); 274 } 275 if (target.parents('.megaMenuItem').length || target.parents('.topMenuItem').length) { 276 var megaMenuText = jQuery('.topMenuItem.mouseover').find('span').text(); 277 var breadCrumbs = []; 278 jQuery('.breadCrumbs > li').each(function () { 279 breadCrumbs.push(this.textContent); 280 }); 281 var pageTitle = breadCrumbs.join('>'); 282 var subTitleText = target.parents('.megaMenuItem').children('.widgetTitle').children().text(); 283 var text = ""; 284 if (pageTitle) { 285 text += pageTitle + " | "; 286 } else { 287 text += document.title + ' - '; 288 } 289 if (target.text() == "" && megaMenuText == "") { 290 text += "N/A"; 291 } else if (target.text().length && megaMenuText.length) { 292 if (megaMenuText == target.text()) { 293 text += megaMenuText; 294 } else { 295 text += megaMenuText + " - " + subTitleText + " - " + target.text(); 296 } 297 } else if (target.text() == "") { 298 text += megaMenuText; 299 } else { 300 text += target.text(); 301 } 302 if (!text.length) { 303 text = "N/A"; 304 } 305 ga('send', 306 { 307 hitType: 'event', 308 eventCategory: 'Mega Menu', 309 eventAction: 'Mega Menu : ' + text, 310 eventLabel: window.location.href 311 }); 312 } 313 if (target.parents('.widgetNewsFlash').length && target.parents('.widgetItem').length) { 314 var text = jQuery(target.parents('.widgetItem')[0]).find('.widgetTitle').children().text(); 315 if (!text.length) { 316 text = "N/A"; 317 } 318 ga('send', 319 { 320 hitType: 'event', 321 eventCategory: 'News Flash', 322 eventAction: 'News Flash - ' + text, 323 eventLabel: window.location.href 324 }); 325 } 326 if (target.hasClass('widgetQuickLinksLink') || target.find('.widgetQuickLinksLink').length) { 327 var text = target.text(); 328 if (!text.length) { 329 text = "N/A"; 330 } 331 ga('send', 332 { 333 hitType: 'event', 334 eventCategory: 'Quick Links', 335 eventAction: 'Quick Links - ' + text, 336 eventLabel: window.location.href 337 }); 338 } 339 if (target.attr('src') && target.parents('.cpSlideshow').length) { 340 var text = target.attr('title'); 341 if (!text.length) { 342 text = "N/A"; 343 } 344 ga('send', 345 { 346 hitType: 'event', 347 eventCategory: 'Slideshow', 348 eventAction: 'Slideshow - ' + text, 349 eventLabel: window.location.href 350 }); 351 } 352 if (target.parents('.widgetText').length) { 353 ga('send', 354 { 355 hitType: 'event', 356 eventCategory: 'Text', 357 eventAction: 'Text Link Clicked', 358 eventLabel: window.location.href 359 }); 360 } 361});</script>
361 362 <div id="popoverModal" class="cp-PopOver cp-PopOver--modal cp-AdminWrap" style="position: fixed; display: none;"> 363 <div class="cp-PopOver-header"> 364 <h3 class="cp-PopOver-title"></h3> 365 <button class="cp-Btn cp-PopOver-close" onclick="closePopOverModal(event)"> 366 <svg class="cp-Icon--close" alt="close" title="close"> 367 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#iconClose"></use> 368 </svg> 369 </button> 370 </div> 371 <div id="cpPopOverBody" class="cp-PopOver-body"> 372 <form id="cpPopOverForm" name="cpPopOverForm" novalidate></form> 373 </div> 374 <div id="cpPopOverFooter" class="cp-PopOver-footer"> 375 <div class="cp-BtnGroup" id="actionButtons"> 376 <!-- Action buttons will be dynamically added here --> 377 </div> 378 </div> 379</div> 380 <div id="fb-root"></div> 381<div id=skipToContentLinks> 382<a href="#cce5fea0cb-3d3f-4462-8745-3f0d062e70c7" target="_self" class="skipToContentLink">Skip to Main Content</a> 383</div> 384 <form id="frmReferenceFormForTelerikEditorDialogs"></form> 385 386 <input type="hidden" id="GoogleMapsKey" value="AIzaSyDWUuE-ifkbhxblF920N8MjpBdTg1Wt784" /> 387 388 389 390 <input type="hidden" id="cpcDomain" value="https://cp-civicplusuniversity2.civicplus.com"> 391 <input type="hidden" id="hdnStructureID" value="11" /> 392 <input type="hidden" id="hdnContentCollectionID" value="5b5b0828-7fe8-406a-a2a8-699d71af784b" /> 393 <input type="hidden" id="hdnWorkingCopyID" value="00000000-0000-0000-0000-000000000000" /> 394 <input type="hidden" id="hdnThemeID" value="37" /> 395 <input type="hidden" id="pageIsFrontEnd" value="true" /> 396 <input type="hidden" id="pageModuleID" /> 397 <input type="hidden" id="pagePageID" value="35" /> 398 399 <div id="stickyPlaceholder"></div> 400 <div id="outer-wrap" class="outer-wrap"> 401 <div id="inner-wrap" class="inner-wrap"> 402 <div id="divToolbars" class="cpToolbars newCP mui-fixed" style=""> 403 404 405 406 407 </div> 408 <div id="bodyWrapper"> 409 <div id="mainNavHolderMobile" class="mainNavHolderMobile"></div> 410 411<div data-cpRole="structuralContainer" id="bodyContainerTS"> 412<!-- <div data-cpRole="banner" id="banner2" class="fixedBannerTS"></div> --><!-- Header Container --><header data-cpRole="structuralContainer" id="headerContainerTS" class="fixedTopTS"><div class="inner"> 413<div class="siteWrap6"><div data-cpRole="structuralContainer" id="flexHeaderTS"> 414<div data-cpRole="banner" id="bannerLogoTS" class="bannerLogoTS empty"> 415 416 417 418 419 <a id="bannerLogoTS-210" style=" display: block; text-align: center; 420" class="bannerObject" href="/" target="_self"><img alt="Carrboro North Carolina Homepage " class="bannerObject" height="80" src="/ImageRepository/Document?documentID=17396" width="125" /></a> 421</div><nav data-cpRole="nav" id="mainNav" class="siteNav mainNav" role="navigation"> 422<ol id="mainNavMenu" data-parent="1" class="rootNavMenu" role="menu"><!-- 423--><li id="MainItem9" class="topMenuItem" role="none" data-pageid="9" data-displaymegamenu="True"><!-- 424 --><!-- 425 --> <a role = "menuitem" aria-haspopup=true aria-expanded='false' aria-controls="mainNavMegaMenu9" id = "mainNavServices" class="navMainItem mainNavItem mainNavItem1 " href="/9/Services" target = "_self" > Services </a> <!-- 426 --><!-- 427 --></li><!----><li id="MainItem35" class="topMenuItem" role="none" data-pageid="35" data-displaymegamenu="True"><!-- 428 --><!-- 429 --> <a role = "menuitem" aria-haspopup=true aria-expanded='false' aria-controls="mainNavMegaMenu35" id = "mainNavBusiness" class="navMainItem mainNavItem mainNavItem2 " href="/35/Business" target = "_self" > Business </a> <!-- 430 --><!-- 431 --></li><!----><li id="MainItem101" class="topMenuItem" role="none" data-pageid="101" data-displaymegamenu="True"><!-- 432 --><!-- 433 --> <a role = "menuitem" aria-haspopup=true aria-expanded='false' aria-controls="mainNavMegaMenu101" id = "mainNavCulture" class="navMainItem mainNavItem mainNavItem3 " href="/101/Culture" target = "_self" > Culture </a> <!-- 434 --><!-- 435 --></li><!----><li id="MainItem27" class="topMenuItem" role="none" data-pageid="27" data-displaymegamenu="True"><!-- 436 --><!-- 437 --> <a role = "menuitem" aria-haspopup=true aria-expanded='false' aria-controls="mainNavMegaMenu27" id = "mainNavGovernment" class="navMainItem mainNavItem mainNavItem4 " href="/27/Government" target = "_self" > Government </a> <!-- 438 --><!-- 439 --></li><!----><li id="MainItem566" class="topMenuItem" role="none" data-pageid="566" data-displaymegamenu="True"><!-- 440 --><!-- 441 --> <a role = "menuitem" aria-haspopup=true aria-expanded='false' aria-controls="mainNavMegaMenu566" id = "mainNavProjects" class="navMainItem mainNavItem mainNavItem5 " href="/566/Projects" target = "_self" > Projects </a> <!-- 442 --><!-- 443 --></li><!----> 444</ol> 445 446 447
447<script type="text/javascript"> 448 (function () { 449 function setupMenu() { 450 const menuID = 'mainNavMenu'; 451 const menuType = MAIN_MENU; 452 453 //setup menu manager properties for main menu 454 if (!menuManager.mobileMainNav && true) 455 menuManager.adjustMainItemsWidth('#' + menuID); 456 menuManager.isMainMenuEditable = false; 457 menuManager.mainMenuMaxSubMenuLevels = 4; 458 menuManager.setMOMMode(2, menuType); 459 460 //Init main menu 461 const setupDraggable = menuManager.isMainMenuEditable; 462 const urlToGetHiddenMenus = '/Pages/MenuMain/HiddenMainSubMenus?pageID=1&moduleID=&themeID=37&menuContainerID=mainNav'; 463 464 menuManager.setupMenu(menuID, 'mainNav', menuType, setupDraggable, urlToGetHiddenMenus); 465 menuManager.mainMenuInit = true; 466 menuManager.mainMenuTextResizer = true; 467 if (1.00 > 0) 468 menuManager.mainMenuTextResizerRatio = 1.00; 469 if (window.isResponsiveEnabled) 470 menuManager.mainMenuReady.resolve(); 471 472 } 473 474 if (document.readyState === "complete" 475 || document.readyState === "loaded" 476 || document.readyState === "interactive") { 477 setupMenu(); 478 return; 479 } 480 481 document.addEventListener("DOMContentLoaded", setupMenu); 482 })(); 483 </script>
483 484 485 486<aside data-cpRole="megaMenu" id="megaMenu" class="megaMenu" style="display: none;"><input type="hidden" id="megaMenuPopupDirection" value="0"><input type="hidden" id="megaMenuWidthReference" value="1"><aside role="menu" data-cpRole="contentContainer" id="mainNavMegaMenu9" class="contentTop mainNavMegaMenu megaMenuContainer pageID_9 hidden" data-orientation="horizontal"> <div id="cc0f60dba5-c017-4a51-8ae4-b67922135687" data-containerid="0f60dba5-c017-4a51-8ae4-b67922135687" class="pageContent cpGrid cpGrid24"> 487 488 489 490 491 </div> 492</aside><aside role="menu" data-cpRole="contentContainer" id="mainNavMegaMenu35" class="contentTop mainNavMegaMenu megaMenuContainer pageID_35 hidden" data-orientation="horizontal"> <div id="cc93f70af0-0b23-4afa-95dc-1af2199033f5" data-containerid="93f70af0-0b23-4afa-95dc-1af2199033f5" class="pageContent cpGrid cpGrid24"> 493 494 495 496 497 </div> 498</aside><aside role="menu" data-cpRole="contentContainer" id="mainNavMegaMenu101" class="contentTop mainNavMegaMenu megaMenuContainer pageID_101 hidden" data-orientation="horizontal"> <div id="cc14f9a70c-62bf-4624-80d3-3e58f4b90823" data-containerid="14f9a70c-62bf-4624-80d3-3e58f4b90823" class="pageContent cpGrid cpGrid24"> 499 500 501 502 503 </div> 504</aside><aside role="menu" data-cpRole="contentContainer" id="mainNavMegaMenu27" class="contentTop mainNavMegaMenu megaMenuContainer pageID_27 hidden" data-orientation="horizontal"> <div id="cc2523c02a-d939-4cae-91c6-6e1d6b8ba092" data-containerid="2523c02a-d939-4cae-91c6-6e1d6b8ba092" class="pageContent cpGrid cpGrid24"> 505 506 507 508 509 </div> 510</aside><aside role="menu" data-cpRole="contentContainer" id="mainNavMegaMenu566" class="contentTop mainNavMegaMenu megaMenuContainer pageID_566 hidden" data-orientation="horizontal"> <div id="cc322c206d-dcfe-45c4-b744-9117ba98b571" data-containerid="322c206d-dcfe-45c4-b744-9117ba98b571" class="pageContent cpGrid cpGrid24"> 511 512 513 514 515 </div> 516</aside></aside></nav><div data-cpRole="contentContainer" id="searchTS"> <div id="ccf970b1e1-b24c-49f4-bdb0-e6ca1f0ca5e3" data-containerid="f970b1e1-b24c-49f4-bdb0-e6ca1f0ca5e3" class="pageContent cpGrid cpGrid24 isLockedContainer showInMobile"> 517 518 519 <div class="row outer wide"><!-- 520--><div class="outer col col24 first last" style="" data-widgetcontainerid="e77409ad-11ef-45f2-aef8-9b8851c3267b">� 521 <div class="row nest first last wide">� 522 523 <div class="inner col col24 first last id65570e5c-af45-43c1-9404-8904de55f47d" style="" data-widgetcontainerid="65570e5c-af45-43c1-9404-8904de55f47d">� 524<div data-widget-id="0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c" data-widget-controller-path="/Layout/WidgetSearch"> 525 526
526<script defer type="text/javascript" src="/Common/Controls/jquery-ui-1.14.2/jquery-ui.min.js"></script>
526 527
527<script defer src="/Areas/Layout/Assets/Scripts/Search.js" type="text/javascript"></script>
527 528
528<script defer type="text/javascript"> 529 530 $(document).ready(function () { 531 try { 532 // Minimum characters required before performing a search/autocomplete 533 var minPrefixLength = 3; 534 var autoCompleteDebounceDelay = 500; 535 var searchFieldSelector = "#searchField" + '0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c'; 536 var checkboxSelector = "#ysnSearchOnlyDept" + '0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c'; 537 var buttonSelector = ".widgetSearchButton" + '0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c'; 538 var autoCompleteCache = {}; 539 var autoCompleteCacheKeys = []; 540 var autoCompleteCacheLimit = 25; 541 var currentAutoCompleteRequest = null; 542 var currentAutoCompleteRequestKey = null; 543 var autoCompleteDebounceTimer = null; 544 var autoCompleteDebounceKey = null; 545 var pendingAutoCompleteResponses = []; 546 547 function normalizeAutoCompleteTerm(term) { 548 return $.trim((term || "") + "").replace(/\s+/g, " "); 549 } 550 551 function shouldSearch(term) { 552 return normalizeAutoCompleteTerm(term).length >= minPrefixLength; 553 } 554 555 function getAutoCompleteUrl() { 556 return '/Search/AutoComplete' + ($(checkboxSelector).is(':checked') || false? '?departmentId=0' : ''); 557 } 558 559 function getAutoCompleteCacheKey(requestUrl, term) { 560 return requestUrl + "|" + term.toLowerCase(); 561 } 562 563 function cacheAutoCompleteResult(cacheKey, data) { 564 if (!Object.prototype.hasOwnProperty.call(autoCompleteCache, cacheKey)) { 565 autoCompleteCacheKeys.push(cacheKey); 566 if (autoCompleteCacheKeys.length > autoCompleteCacheLimit) { 567 delete autoCompleteCache[autoCompleteCacheKeys.shift()]; 568 } 569 } 570 autoCompleteCache[cacheKey] = data; 571 } 572 573 function respondToPendingAutoComplete(data) { 574 var responses = pendingAutoCompleteResponses; 575 pendingAutoCompleteResponses = []; 576 for (var i = 0; i < responses.length; i++) { 577 responses[i](data); 578 } 579 } 580 581 function cancelPendingAutoComplete() { 582 clearTimeout(autoCompleteDebounceTimer); 583 autoCompleteDebounceKey = null; 584 if (currentAutoCompleteRequest != null) { 585 currentAutoCompleteRequest.abort(); 586 currentAutoCompleteRequest = null; 587 } 588 currentAutoCompleteRequestKey = null; 589 respondToPendingAutoComplete([]); 590 } 591 592 function createWidgetAutoCompleteSource(options) { 593 return function (request, response) { 594 var term = normalizeAutoCompleteTerm(request.term); 595 if (!options.shouldSearch(term)) { 596 response([]); 597 return; 598 } 599 600 var requestUrl = options.url(); 601 var cacheKey = getAutoCompleteCacheKey(requestUrl, term); 602 if (Object.prototype.hasOwnProperty.call(autoCompleteCache, cacheKey)) { 603 response(autoCompleteCache[cacheKey]); 604 if (options.success) { 605 options.success(autoCompleteCache[cacheKey]); 606 } 607 return; 608 } 609 610 if (currentAutoCompleteRequestKey === cacheKey || autoCompleteDebounceKey === cacheKey) { 611 pendingAutoCompleteResponses.push(response); 612 return; 613 } 614 615 cancelPendingAutoComplete(); 616 autoCompleteDebounceKey = cacheKey; 617 pendingAutoCompleteResponses.push(response); 618 autoCompleteDebounceTimer = setTimeout(function () { 619 autoCompleteDebounceKey = null; 620 currentAutoCompleteRequestKey = cacheKey; 621 currentAutoCompleteRequest = $.ajax({ 622 url: requestUrl, 623 dataType: "json", 624 timeout: options.timeout, 625 data: { 626 term: term, 627 }, 628 success: function (data) { 629 if (currentAutoCompleteRequestKey === cacheKey) { 630 cacheAutoCompleteResult(cacheKey, data); 631 respondToPendingAutoComplete(data); 632 if (options.success) { 633 options.success(data); 634 } 635 } 636 }, 637 error: function (xmlhttprequest, textstatus, message) { 638 if (textstatus === "abort") { 639 return; 640 } 641 642 if (options.error) { 643 options.error(xmlhttprequest, textstatus, message); 644 } 645 646 respondToPendingAutoComplete([]); 647 }, 648 complete: function (xmlhttprequest) { 649 if (currentAutoCompleteRequest === xmlhttprequest) { 650 currentAutoCompleteRequest = null;
651 currentAutoCompleteRequestKey = null; 652 } 653 } 654 }); 655 }, options.delay); 656 }; 657 } 658 659 // click handler for search buttons 660 $(buttonSelector).click(function (e) { 661 e.preventDefault(); 662 var $btn = $(this); 663 var $field = $btn.siblings(".widgetSearchBox"); 664 var term = $field.val() + ""; 665 if (!shouldSearch(term)) { 666 // do nothing until user types enough characters 667 $field.focus(); 668 return; 669 } 670 671 if ($(checkboxSelector).is(':checked') || false) 672 { 673 doWidgetSearch($.trim(term), Number(0)); 674 } 675 else { 676 doWidgetSearch($.trim(term), 0); 677 } 678 }); 679 680 // enter key handler for the search field 681 $(searchFieldSelector).keypress(function (e) { 682 var code = e.which || e.keyCode; 683 if (code === 13) { 684 e.preventDefault(); 685 var $this = $(this); 686 var term = $this.val() + ""; 687 if (!shouldSearch(term)) { 688 // do nothing until user types enough characters 689 $this.focus(); 690 return false; 691 } 692 693 if ($(checkboxSelector).is(':checked') || false) { 694 doWidgetSearch($.trim(term), Number(0)); 695 } else { 696 doWidgetSearch($.trim(term), 0); 697 } 698 return false; 699 } 700 return true; 701 }); 702 703 // autocomplete: set minLength and guard source 704 if (true) { 705 var $searchField = $(searchFieldSelector).autocomplete({ 706 minLength: minPrefixLength, 707 source: createWidgetAutoCompleteSource({ 708 delay: autoCompleteDebounceDelay, 709 timeout: 10000, 710 shouldSearch: shouldSearch, 711 url: getAutoCompleteUrl, 712 success: function () { 713 $('.autoCompleteError').remove(); 714 }, 715 error: function (xmlhttprequest, textstatus, message) { 716 if (textstatus === "timeout") { 717 if ($(searchFieldSelector).siblings('.autoCompleteError').length == 0) 718 $('<span class="autoCompleteError"><p class="alert error">Search autocomplete is currently not responding. Please try again later.</p></span>').insertAfter($(searchFieldSelector)); 719 } 720 } 721 }), 722 html: true, 723 delay: 0, 724 select: function (event, ui) { 725 $(this).val(ui.item.value); 726 $(this).next().click(); 727 } 728 }); 729 730 $searchField.data("ui-autocomplete")._renderItem = function (ul, item) { 731 return $("<li class=\"itemList\"></li>") 732 .data("ui-autocomplete-item", item) 733 .append("<a>" + item.label + "</a>") 734 .appendTo(ul); 735 }; 736 } 737 738 // keep searchBtnApplyQuery consistent with prefix rule 739 window.searchBtnApplyQuery = function() { 740 var $field = $(searchFieldSelector); 741 var term = $field.val() + ""; 742 if (shouldSearch(term)) { 743 // update href for the icon/button (if present) 744 var btn = document.getElementById("btnSearchIcon"); 745 if (btn) btn.href = "/Search?searchPhrase=" + encodeURIComponent($.trim(term)); 746 } else { 747 var btn = document.getElementById("btnSearchIcon"); 748 if (btn) btn.href = "#"; 749 } 750 }; 751 } 752 catch(e) {} //we're going to eat this error. Autocomplete won't work but we dont wan't to break anything else on the page. 753 }); 754 </script>
754 755 756 <section id="widgetPreviewSearch" class="widget widgetSearch skin91 widgetOptionSet71" style="display: block;" aria-label="Search"> 757 <!-- For the button right and inside --> 758 <div class="widgetBody buttonRightInside"> 759 <input class="widgetSearchBox widgetSearchBox0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c" cp5ph="true" id="searchField0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c" name="searchField" onchange="searchBtnApplyQuery();" placeholder="Search..." type="text" value="" /> 760 <a href="/Search/Results" id="btnSearchIcon" class="widgetSearchButton widgetSearchButton0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c" role="button"><img alt="Search" class="imageHover" data-hover="/ImageRepository/Document?documentID=17398" data-image="/ImageRepository/Document?documentID=17399" src="/ImageRepository/Document?documentID=17399" /></a> 761 762 <label class="searchLabel" aria-hidden="true" for="searchField0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c">Search</label> 763 </div> 764 765 </section> 766 767 768<style scoped> 769 770 .widgetSearch ::-webkit-input-placeholder { 771 color: #000; 772 } 773 .widgetSearch :-moz-placeholder { /* Firefox 18- */ 774 color: #000; 775 } 776 .widgetSearch ::-moz-placeholder { /* Firefox 19+ */ 777 color: #000; 778 } 779 .widgetSearch :-ms-input-placeholder { 780 color: #000; 781 } 782 783 784 .widgetSearch .widgetBody .widgetSearchBox0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c 785 { 786 color: #000; 787 background:#FFF; 788border-radius:5px; 789height:50px; 790padding:0 50px 0 20px; 791font-family: open sans; 792font-size: 15px; 793font-style: normal; 794font-weight: 400; 795border:none; 796 797 } 798 .widgetSearch .widgetBody .widgetSearchButton0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c 799 { 800 margin: 5px 7px 5px 0; 801 } 802 .widgetSearch .widgetSearch-onlyDept0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c 803 { 804 display: inline-block; 805 color: #333; 806 807 808 padding-top: 10px; 809 } 810 #ysnSearchOnlyDept0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c 811 { 812 position: relative; 813 top: .125em; 814 } 815 816</style> 817 818<link rel="stylesheet" href="/Common/Controls/jquery-ui-1.14.2/jquery-ui.min.css"> 819<link rel="stylesheet" href="/Common/Controls/jquery-ui-1.14.2/jquery-ui.theme.min.css"> 820 821 822
823<script type="text/javascript"> 824 //Updates search icons href to have the correct queryString 825 function searchBtnApplyQuery() { 826 document.getElementById("btnSearchIcon").href = "/Search?searchPhrase=" + document.getElementById("searchField0d3f61ab-7d7d-4fc7-ab8b-45db5a5be48c").value; 827 } 828</script>
828 829 830</div> 831 832 </div> <!-- inner column --> 833 834 </div> <!-- inner row --> 835 836 </div><!-- outer column --><!-- --></div> <!-- outer row --> 837 838 839 </div> 840</div> 841</div></div></div> 842</header><!-- Banner --><div data-cpRole="structuralContainer" id="bannerContainerTS" class="noOverflowTS"> 843<div data-cpRole="banner" id="banner1"><div data-cpRole="structuralContainer" id="bannerSizingTS"> 844<div data-cpRole="structuralContainer" id="bannerSearchTS"> 845<div class="siteWrap8"></div> 846</div> 847</div> 848 849 850 851 852 <div id="bannerImagesJSON211" class="hidden"></div> 853 <div id="bannerSlideshowControls_banner1" class="bannerSlideshowControlsNew none " style="display:none"> 854 <a id="arrowPrev_banner1" tabindex="0" class="arrowNew prev" aria-label="Banner Arrow Previous"><svg style=" " class=""><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#iconSlideshowArrowLeft"></use></svg></a> 855 <a id="arrowNext_banner1" tabindex="0" class="arrowNew next" aria-label="Banner Arrow Next"><svg style=" " class=""><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#iconSlideshowArrowRight"></use></svg></a> 856 </div> 857
857<script type="text/javascript"> 858 $(window).on("load", function () { 859 $.when(window.Pages.rwdSetupComplete) 860 .done(function () { 861 renderExternalBannerSlideshow('banner1', 862 {"BannerOptionID":211,"ThemeID":37,"SlotName":"banner1","Name":"Default","IsDefault":true,"BannerMode":2,"SlideShowSlideTiming":"5","SlideshowTransition":0,"SlideShowTransitionTiming":"1","ImageScale":true,"ImageAlignment":1,"ImageScroll":true,"MuteSound":true,"VideoType":0,"Status":40,"SlideshowControlsPosition":0,"SlideshowControlsAlignment":0,"SlideshowBannerControlsColorScheme":0,"DisplayVideoPauseButton":false,"VideoPauseButtonAlignment":1,"VideoPauseButtonControlsAlignment":0,"VideoPauseButtonStyle":"#FFFFFF","VideoPauseButtonBackgroundStyle":"#000000","VideoPauseButtonAlignmentClass":"alignRight viewport","DisplaySlideshowPauseButton":false,"SlideshowControlsColor":"#FFFFFF","SlideshowControlsBackgroundColor":"#000000","SlideshowPauseButtonClass":"isHidden","BannerImages":[{"BannerImageID":371,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=17395","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":1,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""},{"BannerImageID":399,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=18496","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":2,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""},{"BannerImageID":400,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=18493","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":3,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""},{"BannerImageID":401,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=18491","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":4,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""},{"BannerImageID":368,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=17394","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":5,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""},{"BannerImageID":402,"BannerOptionID":211,"FileName":"/ImageRepository/Document?documentID=18494","Height":400,"Width":2200,"StartingOn":null,"StoppingOn":null,"IsLink":false,"LinkAddress":null,"Sequence":6,"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","AltText":""}],"BannerVideos":[{"BannerVideoID":21,"BannerOptionID":211,"VideoFileName":"","ImageFileName":"EmptyBannerBkg202511201028217215.png","IsLink":false,"LinkAddress":null,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/","VideoFileID":"00000000-0000-0000-0000-000000000000","ImageFileID":"00000000-0000-0000-0000-000000000000","VideoWidth":0,"VideoHeight":0,"ImageWidth":0,"ImageHeight":0,"LinkedVideoUrl":"","RecordStatus":0,"AltText":null}],"RecordStatus":0,"ModifiedBy":0,"ModifiedOn":"\/Date(-62135575200000)\/"}, 863 '/App_Themes/2025 - Interior/Images/', 864 'Rotating'); 865 }); 866 }); 867 </script>
867 868 869</div> 870</div><!-- Content container --><div data-cpRole="structuralContainer" id="mainContainerTS"> 871<div class="siteWrap4"><div data-cpRole="structuralContainer" id="mainWrapTS" class="mainWrap" role="main"> 872<div data-cpRole="structuralContainer" id="siteSidebarTS" class="siteSidebar"> 873<aside data-cpRole="contentContainer" id="sidebarContainer1TS"> <div id="cc1b89fa56-0b55-4371-9484-f2ec46291507" data-containerid="1b89fa56-0b55-4371-9484-f2ec46291507" class="pageContent cpGrid cpGrid24 showInMobile"> 874 875 876 877 878 </div> 879</aside><nav data-cpRole="nav" id="secondaryNav" class="siteNav secondaryNav"> 880 881 882 883 884 885 <ol role="menu" id="secondaryMenusecondaryNav" data-parent="35" class="rootNavMenu accordionNav"> 886 <li class="topMenuItem sideNavLi hasAccordionChildren" id="SideItem3284" data-pageid="3284"> 887 <div class="accordionNavItem"> 888 <a href="/3284/Business-Development" target="_self" class="navMainItem secondaryNavItem cpComponent" data-type="SecondaryMainItem">Business Development</a> 889 <a href="#" role="button" class="openAccordionNav accordionSecondaryNavItem" aria-label="Business Development Submenu" aria-expanded="false" aria-controls="submenu-lvl1-3284"></a> 890 </div> 891 <ol aria-hidden="true" class="accordionNavContainer accordionNavContainer--lvl1" id="submenu-lvl1-3284" style="display: none;" data-parent="3284"> 892 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem3288" data-pageid="3288"> 893 <div class="accordionNavItem"> 894 <a href="/2516/New-Business-Resource-Center" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">New Business Resource Center</span></a> 895 </div> 896 </li> 897 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem907" data-pageid="907"> 898 <div class="accordionNavItem"> 899 <a href="/173/Revolving-Loan-Fund" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Loan Opportunities</span></a> 900 </div> 901 </li> 902 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem3290" data-pageid="3290"> 903 <div class="accordionNavItem"> 904 <a href="https://www.launchchapelhill.com/launch-local" target="_blank" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Launch Local Business Accelerator</span></a> 905 </div> 906 </li> 907 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem1102" data-pageid="1102"> 908 <div class="accordionNavItem"> 909 <a href="/1031/Local-Beer-Wine-Licensing" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Local Beer & Wine Licensing </span></a> 910 </div> 911 </li> 912 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem947" data-pageid="947"> 913 <div class="accordionNavItem"> 914 <a href="/1032/Hotel-Motel-Room-Occupancy-Tax" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Hotel Occupancy Tax</span></a> 915 </div> 916 </li> 917 918 </ol> 919 </li> 920 <li class="topMenuItem sideNavLi hasAccordionChildren" id="SideItem3285" data-pageid="3285"> 921 <div class="accordionNavItem"> 922 <a href="/3285/Property-Development" target="_self" class="navMainItem secondaryNavItem cpComponent" data-type="SecondaryMainItem">Property Development</a> 923 <a href="#" role="button" class="openAccordionNav accordionSecondaryNavItem" aria-label="Property Development Submenu" aria-expanded="false" aria-controls="submenu-lvl1-3285"></a> 924 </div> 925 <ol aria-hidden="true" class="accordionNavContainer accordionNavContainer--lvl1" id="submenu-lvl1-3285" style="display: none;" data-parent="3285"> 926 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem903" data-pageid="903"> 927 <div class="accordionNavItem"> 928 <a href="/294/Development-Guide" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Development Guide</span></a> 929 </div> 930 </li> 931 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem3109" data-pageid="3109"> 932 <div class="accordionNavItem"> 933 <a href="/3100/Available-Properties" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Available Properties</span></a> 934 </div> 935 </li> 936 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem905" data-pageid="905"> 937 <div class="accordionNavItem"> 938 <a href="/162/Inspections" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Get a Building Permit</span></a> 939 </div> 940 </li> 941 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem906" data-pageid="906"> 942 <div class="accordionNavItem"> 943 <a href="/749/Inspections" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Schedule an Inspection</span></a> 944 </div> 945 </li> 946 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem910" data-pageid="910"> 947 <div class="accordionNavItem"> 948 <a href="/3182/Fiscal-Year-2025-2026" target="_blank" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Fee Schedule</span></a> 949 </div> 950 </li> 951 952 </ol> 953 </li> 954 <li class="topMenuItem sideNavLi hasAccordionChildren" id="SideItem3286" data-pageid="3286"> 955 <div class="accordionNavItem"> 956 <a href="/3286/Doing-Business-with-the-Town" target="_self" class="navMainItem secondaryNavItem cpComponent" data-type="SecondaryMainItem">Doing Business with the Town</a> 957 <a href="#" role="button" class="openAccordionNav accordionSecondaryNavItem" aria-label="Doing Business with the Town Submenu" aria-expanded="false" aria-controls="submenu-lvl1-3286"></a> 958 </div> 959 <ol aria-hidden="true" class="accordionNavContainer accordionNavContainer--lvl1" id="submenu-lvl1-3286" style="display: none;" data-parent="3286"> 960 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem911" data-pageid="911"> 961 <div class="accordionNavItem"> 962 <a href="/269/Purchasing" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Vendor Application</span></a> 963 </div> 964 </li> 965 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem909" data-pageid="909"> 966 <div class="accordionNavItem"> 967 <a href="/967/Bid-Opportunities" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Bid Opportunities</span></a> 968 </div> 969 </li> 970 971 </ol> 972 </li> 973 <li class="topMenuItem sideNavLi hasAccordionChildren" id="SideItem3287" data-pageid="3287"> 974 <div class="accordionNavItem">
975 <a href="/3287/Partner-Regional-Resources" target="_self" class="navMainItem secondaryNavItem cpComponent" data-type="SecondaryMainItem">Partner & Regional Resources</a> 976 <a href="#" role="button" class="openAccordionNav accordionSecondaryNavItem" aria-label="Partner & Regional Resources Submenu" aria-expanded="false" aria-controls="submenu-lvl1-3287"></a> 977 </div> 978 <ol aria-hidden="true" class="accordionNavContainer accordionNavContainer--lvl1" id="submenu-lvl1-3287" style="display: none;" data-parent="3287"> 979 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem3292" data-pageid="3292"> 980 <div class="accordionNavItem"> 981 <a href="/152/Economic-Development" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Town of Carrboro Economic Development</span></a> 982 </div> 983 </li> 984 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem3291" data-pageid="3291"> 985 <div class="accordionNavItem"> 986 <a href="https://www.chapelhillnc.gov/Town-Government/Departments-and-Offices/Economic-Development" target="_blank" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Town of Chapel Hill Economic Development</span></a> 987 </div> 988 </li> 989 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem914" data-pageid="914"> 990 <div class="accordionNavItem"> 991 <a href="http://www.growinorangenc.com" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Orange County Economic Development</span></a> 992 </div> 993 </li> 994 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem912" data-pageid="912"> 995 <div class="accordionNavItem"> 996 <a href="http://www.carolinachamber.org" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Carolina Chamber of Commerce</span></a> 997 </div> 998 </li> 999 <li class="sideNavLi subMenuItem hasAccordionChildren" id="SideItem913" data-pageid="913"> 1000 <div class="accordionNavItem"> 1001 <a href="http://www.visitchapelhill.org" target="_self" class="navMenuItem cpComponent" data-type="SecondaryMenuItem"><span lang="en">Orange County Visitors Bureau</span></a> 1002 </div> 1003 </li> 1004 1005 </ol> 1006 </li> 1007 1008 </ol> 1009 1010 1011
1011<script type="text/javascript"> 1012 (function () { 1013 function setupSecondaryMenuProperties() { 1014 //setup menu manager properties for secondary menu 1015 menuManager.isSideMenuEditable = false; 1016 menuManager.sideMenuMaxSubMenuLevels = 4; 1017 menuManager.sideMenuHasCustomLinks = false; 1018 } 1019 1020 if (document.readyState === "loading") { 1021 document.addEventListener("DOMContentLoaded", setupSecondaryMenuProperties, { once: true }); 1022 return; 1023 } 1024 1025 setupSecondaryMenuProperties(); 1026 })(); 1027 </script>
1027 1028 1029
1029<script type="text/javascript"> 1030 (function () { 1031 function setupAccordionSecondaryNav() { 1032 var $menuContainer = $('#secondaryNav'); 1033 1034 $menuContainer.find('*[id^="SideItem"]').each(function () { 1035 var ids = $('[id="' + this.id + '"]'); 1036 if (ids.length > 1) 1037 $.each(ids, function (index, value) { 1038 value.id = value.id + '_' + index; 1039 }); 1040 }); 1041 1042 $menuContainer.find('.hasAccordionChildren .openAccordionNav').off('click.secondaryNav').on('click.secondaryNav', function (e) { 1043 e.preventDefault(); 1044 showHideAccordionMenuForSecondaryNav($(this)); 1045 }); 1046 1047 $menuContainer.find(".grippy").each(function () { 1048 menuManager.setupDraggableElement($(this), SIDE_MENU, '#secondaryNav'); 1049 }); 1050 1051 $menuContainer.find("li").each(function () { 1052 menuManager.setupDroppableAccordionElement($(this), SIDE_MENU); 1053 }); 1054 } 1055 1056 if (document.readyState === "loading") { 1057 document.addEventListener("DOMContentLoaded", setupAccordionSecondaryNav, { once: true }); 1058 return; 1059 } 1060 1061 setupAccordionSecondaryNav(); 1062 })(); 1063 </script>
1063 1064 1065 1066 1067</nav><aside data-cpRole="contentContainer" id="sidebarContainer2TS"> <div id="cc38c1f6bc-1bcc-47bc-8afb-6eb0ff20bfd1" data-containerid="38c1f6bc-1bcc-47bc-8afb-6eb0ff20bfd1" class="pageContent cpGrid cpGrid24 showInMobile"> 1068 1069 1070 1071 1072 </div> 1073</aside> 1074</div><div data-cpRole="structuralContainer" id="outerContentWrapTS" class="outerContentWrap"> 1075<div data-cpRole="structuralContainer" id="contentWrapTS" class="contentWrap"> 1076<div data-cpRole="breadCrumbs" id="breadCrumbs" class="breadCrumbContainer"> <ol class="semanticList breadCrumbs"> 1077 <li><a class="breadCrumb" href="/">Home</a></li><li id="currentBCPage" data-pageid="35"><a href class="breadCrumb" aria-current="page">Business</a></li> 1078 </ol> 1079 1080 1081 1082</div><div data-cpRole="mainContentContainer" id="moduleContent"> 1083 1084 <div id="page" class="moduleContentNew"> 1085 1086 1087 <input id="hdnPageID" name="hdnPageID" type="hidden" value="35" /> 1088 <input id="hdnParentID" name="hdnParentID" type="hidden" value="1" /> 1089 <input id="hdnVersionID" name="hdnVersionID" type="hidden" value="8423" /> 1090 <input id="pageMenuTitle" name="pageMenuTitle" type="hidden" value="Business" /> 1091 <input id="pageShowFeatureColumn" name="pageShowFeatureColumn" type="hidden" value="False" />
1092 <input id="hdnIsLayoutPage" name="hdnIsLayoutPage" type="hidden" value="False" /> 1093 <input id="hdnPageStatus" name="hdnPageStatus" type="hidden" value="Published" /> 1094 1095 <h1 id="versionHeadLine" class="headline"> 1096 1097Business </h1> 1098 1099 <div id="cce5fea0cb-3d3f-4462-8745-3f0d062e70c7" data-containerid="e5fea0cb-3d3f-4462-8745-3f0d062e70c7" class="pageContent cpGrid cpGrid24" > 1100 1101 1102 <div class="row outer wide"><!-- 1103--><div class="outer col col24 first last" style="" data-widgetcontainerid="ee7de402-01db-4e6a-b49f-cc590632d27e">� 1104 <div class="row nest first last wide">� 1105 1106 <div class="inner col col24 first last id73591a80-a13e-447e-ab37-f194df830534" style="" data-widgetcontainerid="73591a80-a13e-447e-ab37-f194df830534">� 1107 <nav class="widget clear dynamicSubpage widgetPages skin91 narrow" id="widgetPagebcd38d94-bc7c-4c47-a139-b20137f1948f" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-label = Pages> 1108 <div class="hidden widgetTypeID">9</div> 1109 <div class="hidden depth">1</div> 1110 <div class="hidden cols">1</div> 1111 <div class="hidden format">2</div> 1112 <div class="widgetBody"> 1113 1114 <div class="widgetBody cpGrid cpGrid1 "> 1115 <div class="row narrow"> 1116 1117 <div class="col col1"> 1118 <ol class="semanticList layout2"> 1119 <li class="megaMenuItem widgetItem" data-pageid="3284" role="none"> 1120 <div class="widgetTitle"> 1121 <a href="/3284/Business-Development" target="_self" >Business Development</a> 1122 </div> 1123 <p class="widgetDesc"></p> 1124 1125 </li> <li class="megaMenuItem widgetItem" data-pageid="3285" role="none"> 1126 <div class="widgetTitle"> 1127 <a href="/3285/Property-Development" target="_self" >Property Development</a> 1128 </div> 1129 <p class="widgetDesc"></p> 1130 1131 </li> <li class="megaMenuItem widgetItem" data-pageid="3286" role="none"> 1132 <div class="widgetTitle"> 1133 <a href="/3286/Doing-Business-with-the-Town" target="_self" >Doing Business with the Town</a> 1134 </div> 1135 <p class="widgetDesc"></p> 1136 1137 </li> <li class="megaMenuItem widgetItem" data-pageid="3287" role="none"> 1138 <div class="widgetTitle"> 1139 <a href="/3287/Partner-Regional-Resources" target="_self" >Partner & Regional Resources</a> 1140 </div> 1141 <p class="widgetDesc"></p> 1142 1143 </li> </ol> 1144 </div> 1145 </div> 1146 </div> 1147 1148 1149 1150 1151 </div> 1152 1153 </nav> 1154 1155 1156 1157 </div> <!-- inner column --> 1158 1159 </div> <!-- inner row --> 1160 1161 </div><!-- outer column --><!-- --></div> <!-- outer row --> 1162 1163 1164 </div> 1165 1166 </div> 1167 1168 1169 <div class="newCP"> 1170 1171 </div> 1172</div> 1173</div><aside data-cpRole="contentContainer" id="featureColumn" class="secondaryContent"> <div id="ccb22a9ad6-cf16-4ceb-8fc0-74f81b81d4d1" data-containerid="b22a9ad6-cf16-4ceb-8fc0-74f81b81d4d1" class="pageContent cpGrid cpGrid24 showInMobile"> 1174 1175 1176 1177 1178 </div> 1179</aside> 1180</div> 1181</div></div> 1182</div><!-- GBs --><div data-cpRole="structuralContainer" id="gbsContainerTS"> 1183<div class="siteWrap4"><div data-cpRole="contentContainer" id="gbsTS"> <div id="ccfccd83d3-b587-40cd-867d-b3ba5fcf783b" data-containerid="fccd83d3-b587-40cd-867d-b3ba5fcf783b" class="pageContent cpGrid cpGrid24 isLockedContainer showInMobile" data-contentcontainerbreakpoint="35"> 1184 1185 1186 <div class="row outer wide"><!-- 1187--><div class="outer col col8 first" style="" data-widgetcontainerid="abe49b98-ee4b-455c-a8a4-79ecf5fe668a">� 1188 <div class="row nest first last wide">� 1189 1190 <div class="inner col col8 first last idcdc232f6-9949-4407-b845-1b535904508b" style="" data-widgetcontainerid="cdc232f6-9949-4407-b845-1b535904508b">� 1191<div data-widget-id="47b0cab9-d485-489f-819b-6523f0eab673" data-widget-controller-path="/GraphicLinks/Widget"> 1192 1193 1194 1195 1196<div id="graphicLinkWidget47b0cab9-d485-489f-819b-6523f0eab673" class="widget widgetGraphicLinks skin94 widgetOptionSet47 wide" data-elementqueryclasses='{"wide-narrow":"min-width:20em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' data-modulewidgettype="graphicLinks"> 1197 <div class="widgetHeader"> 1198 <div class="">
1199 </div> 1200 </div> 1201 <div class="widgetBody cpGrid cpGrid2 "> 1202 <nav class="widgetGraphicLinksNav" aria-labelledby="GraphicLinkHeaderText"> 1203 <div class="row wide"> 1204 <!-- 1205--><div class="col col1 first "><ul class="semanticList"><!-- 1206 --><li class="widgetItem GraphicLinks"> 1207 1208<div> 1209 <a href="/139/Carrboro-Town-Code" target="_self" class="fancyButton fancyButton488 " > 1210 <span> 1211 <span><span class="text">Town Code</span></span> 1212 </span> 1213 </a> 1214</div> 1215 <style scoped="scoped">.fancyButton488.fancyButton:link,.fancyButton488.fancyButton:visited, .fancyButton488div.fancyButton{ 1216 background-image: url('/ImageRepository/Document?documentID=17401'); 1217 background-repeat: no-repeat; 1218 background-position: center 13px ; 1219transition:all .3s ease-in-out; 1220position:relative; 1221} 1222.fancyButton488::after{ 1223position:absolute; 1224content:""; 1225left:50%; 1226top:3px; 1227transform:translateX(-50%) rotate(0deg); 1228height:130px; 1229width:130px; 1230transition:all .3s ease-in-out; 1231background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1232background-size:contain;} 1233.fancyButton488.fancyButton:hover,.fancyButton488.fancyButton:focus,.fancyButton488.fancyButton:active,.fancyButton488.fancyButton.hover{ 1234 background-repeat: no-repeat; 1235 background-position: center 10px ; 1236} 1237.fancyButton488:is(:hover, :focus, :active)::after{ 1238top:0; 1239transform:translateX(-50%) rotate(-90deg);} 1240.fancyButton488.fancyButton:link > span,.fancyButton488.fancyButton:visited > span, .fancyButton488div.fancyButton > span{ 1241} 1242.fancyButton488.fancyButton:hover > span,.fancyButton488.fancyButton:focus > span,.fancyButton488.fancyButton:active > span,.fancyButton488.fancyButton.hover > span{ 1243} 1244.fancyButton488.fancyButton .text{ 1245 color: rgb(0, 0, 0); 1246 font-size: 1.1em; 1247 font-family: "Open Sans"; 1248 padding-top: 140px; 1249 font-weight: 600; 1250 text-decoration: none; 1251 padding-top: 140px; 1252 background-image: url('/ImageRepository/Document?documentID=17407'); 1253 background-repeat: no-repeat; 1254 background-position: center 38px ; 1255transition:all .3s ease-in-out; 1256position:relative; 1257} 1258.fancyButton488 .text::after{ 1259position:absolute; 1260content:""; 1261left:50%; 1262bottom:-5px; 1263transform:translateX(-50%); 1264height:3px; 1265width:32px; 1266transition:all .3s ease-in-out; 1267border-radius:3px; 1268background:#7F4312; 1269} 1270.fancyButton488.fancyButton:hover .text,.fancyButton488.fancyButton:focus .text,.fancyButton488.fancyButton:active .text,.fancyButton488.fancyButton.hover .text{ 1271 text-decoration: underline; 1272 background-image: url('/ImageRepository/Document?documentID=17407'); 1273 background-repeat: no-repeat; 1274 background-position: center 35px ; 1275} 1276.fancyButton488:is(:hover, :focus, :active) .text::after{ 1277width:60px; 1278} 1279</style> 1280 1281 </li><!-- 1282--></ul></div><!----><div class="col col1 last"><ul class="semanticList"><!-- 1283 --><li class="widgetItem GraphicLinks"> 1284 1285<div> 1286 <a href="/162/Inspections-Division" target="_self" class="fancyButton fancyButton489 " > 1287 <span> 1288 <span><span class="text">Permits</span></span> 1289 </span> 1290 </a> 1291</div> 1292 <style scoped="scoped">.fancyButton489.fancyButton:link,.fancyButton489.fancyButton:visited, .fancyButton489div.fancyButton{ 1293 background-image: url('/ImageRepository/Document?documentID=17401'); 1294 background-repeat: no-repeat; 1295 background-position: center 13px ; 1296transition:all .3s ease-in-out; 1297position:relative; 1298} 1299.fancyButton489::after{ 1300position:absolute; 1301content:""; 1302left:50%; 1303top:3px; 1304transform:translateX(-50%) rotate(0deg); 1305height:130px; 1306width:130px; 1307transition:all .3s ease-in-out; 1308background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1309background-size:contain;} 1310.fancyButton489.fancyButton:hover,.fancyButton489.fancyButton:focus,.fancyButton489.fancyButton:active,.fancyButton489.fancyButton.hover{ 1311 background-repeat: no-repeat; 1312 background-position: center 10px ; 1313} 1314.fancyButton489:is(:hover, :focus, :active)::after{ 1315top:0; 1316transform:translateX(-50%) rotate(-90deg);} 1317.fancyButton489.fancyButton:link > span,.fancyButton489.fancyButton:visited > span, .fancyButton489div.fancyButton > span{ 1318} 1319.fancyButton489.fancyButton:hover > span,.fancyButton489.fancyButton:focus > span,.fancyButton489.fancyButton:active > span,.fancyButton489.fancyButton.hover > span{ 1320} 1321.fancyButton489.fancyButton .text{ 1322 color: rgb(0, 0, 0); 1323 font-size: 1.1em; 1324 font-family: "Open Sans"; 1325 padding-top: 140px; 1326 font-weight: 600; 1327 text-decoration: none; 1328 padding-top: 140px; 1329 background-image: url('/ImageRepository/Document?documentID=17405'); 1330 background-repeat: no-repeat; 1331 background-position: center 38px ; 1332transition:all .3s ease-in-out; 1333position:relative; 1334} 1335.fancyButton489 .text::after{ 1336position:absolute; 1337content:""; 1338left:50%;
1339bottom:-5px; 1340transform:translateX(-50%); 1341height:3px; 1342width:32px; 1343transition:all .3s ease-in-out; 1344border-radius:3px; 1345background:#7F4312; 1346} 1347.fancyButton489.fancyButton:hover .text,.fancyButton489.fancyButton:focus .text,.fancyButton489.fancyButton:active .text,.fancyButton489.fancyButton.hover .text{ 1348 text-decoration: underline; 1349 background-repeat: no-repeat; 1350 background-position: center 35px ; 1351} 1352.fancyButton489:is(:hover, :focus, :active) .text::after{ 1353width:60px; 1354} 1355</style> 1356 1357 </li><!-- 1358--></ul></div><!-- --> 1359 </div> 1360 </nav> 1361 </div> 1362 <div class="widgetFooter"> 1363 </div> 1364</div> 1365</div> 1366 1367 </div> <!-- inner column --> 1368 1369 </div> <!-- inner row --> 1370 1371 </div><!-- outer column --><!----><div class="outer col col8" style="" data-widgetcontainerid="46bd889f-29c3-4fca-b1dc-41b3c0db1eb3">� 1372 <div class="row nest first last wide">� 1373 1374 <div class="inner col col8 first last ide276ed72-7f05-4005-a77a-6edefe0dd02e" style="" data-widgetcontainerid="e276ed72-7f05-4005-a77a-6edefe0dd02e">� 1375<div data-widget-id="7de0e82d-b13a-4451-9391-52805d631ee3" data-widget-controller-path="/GraphicLinks/Widget"> 1376 1377 1378 1379 1380<div id="graphicLinkWidget7de0e82d-b13a-4451-9391-52805d631ee3" class="widget widgetGraphicLinks skin94 widgetOptionSet47 wide" data-elementqueryclasses='{"wide-narrow":"min-width:20em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' data-modulewidgettype="graphicLinks"> 1381 <div class="widgetHeader"> 1382 <div class=""> 1383 </div> 1384 </div> 1385 <div class="widgetBody cpGrid cpGrid2 "> 1386 <nav class="widgetGraphicLinksNav" aria-labelledby="GraphicLinkHeaderText"> 1387 <div class="row wide"> 1388 <!-- 1389--><div class="col col1 first "><ul class="semanticList"><!-- 1390 --><li class="widgetItem GraphicLinks"> 1391 1392<div> 1393 <a href="/348/Recreation-Programs" target="_self" class="fancyButton fancyButton490 " > 1394 <span> 1395 <span><span class="text">Recreation</span></span> 1396 </span> 1397 </a> 1398</div> 1399 <style scoped="scoped">.fancyButton490.fancyButton:link,.fancyButton490.fancyButton:visited, .fancyButton490div.fancyButton{ 1400 background-image: url('/ImageRepository/Document?documentID=17401'); 1401 background-repeat: no-repeat; 1402 background-position: center 13px ; 1403transition:all .3s ease-in-out; 1404position:relative; 1405} 1406.fancyButton490::after{ 1407position:absolute; 1408content:""; 1409left:50%; 1410top:3px; 1411transform:translateX(-50%) rotate(0deg); 1412height:130px; 1413width:130px; 1414transition:all .3s ease-in-out; 1415background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1416background-size:contain;} 1417.fancyButton490.fancyButton:hover,.fancyButton490.fancyButton:focus,.fancyButton490.fancyButton:active,.fancyButton490.fancyButton.hover{ 1418 background-repeat: no-repeat; 1419 background-position: center 10px ; 1420} 1421.fancyButton490:is(:hover, :focus, :active)::after{ 1422top:0; 1423transform:translateX(-50%) rotate(-90deg);} 1424.fancyButton490.fancyButton:link > span,.fancyButton490.fancyButton:visited > span, .fancyButton490div.fancyButton > span{ 1425} 1426.fancyButton490.fancyButton:hover > span,.fancyButton490.fancyButton:focus > span,.fancyButton490.fancyButton:active > span,.fancyButton490.fancyButton.hover > span{ 1427} 1428.fancyButton490.fancyButton .text{ 1429 color: rgb(0, 0, 0); 1430 font-size: 1.1em; 1431 font-family: "Open Sans"; 1432 padding-top: 140px; 1433 font-weight: 600; 1434 text-decoration: none; 1435 padding-top: 140px; 1436 background-image: url('/ImageRepository/Document?documentID=17406'); 1437 background-repeat: no-repeat; 1438 background-position: center 38px ; 1439transition:all .3s ease-in-out; 1440position:relative; 1441} 1442.fancyButton490 .text::after{ 1443position:absolute; 1444content:""; 1445left:50%; 1446bottom:-5px; 1447transform:translateX(-50%); 1448height:3px; 1449width:32px; 1450transition:all .3s ease-in-out; 1451border-radius:3px; 1452background:#7F4312; 1453} 1454.fancyButton490.fancyButton:hover .text,.fancyButton490.fancyButton:focus .text,.fancyButton490.fancyButton:active .text,.fancyButton490.fancyButton.hover .text{ 1455 text-decoration: underline; 1456 background-repeat: no-repeat; 1457 background-position: center 35px ; 1458} 1459.fancyButton490:is(:hover, :focus, :active) .text::after{ 1460width:60px; 1461} 1462</style> 1463 1464 </li><!-- 1465--></ul></div><!----><div class="col col1 last"><ul class="semanticList"><!-- 1466 --><li class="widgetItem GraphicLinks"> 1467 1468<div> 1469 <a href="/2232/Single-Family-Duplexes" target="_self" class="fancyButton fancyButton491 " > 1470 <span> 1471 <span><span class="text">Trash</span></span> 1472 </span> 1473 </a> 1474</div> 1475 <style scoped="scoped">.fancyButton491.fancyButton:link,.fancyButton491.fancyButton:visited, .fancyButton491div.fancyButton{ 1476 background-image: url('/ImageRepository/Document?documentID=17401'); 1477 background-repeat: no-repeat; 1478 background-position: center 13px ; 1479transition:all .3s ease-in-out; 1480position:relative; 1481} 1482.fancyButton491::after{ 1483position:absolute; 1484content:""; 1485left:50%; 1486top:3px; 1487transform:translateX(-50%) rotate(0deg); 1488height:130px; 1489width:130px; 1490transition:all .3s ease-in-out; 1491background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1492background-size:contain;} 1493.fancyButton491.fancyButton:hover,.fancyButton491.fancyButton:focus,.fancyButton491.fancyButton:active,.fancyButton491.fancyButton.hover{ 1494 background-repeat: no-repeat; 1495 background-position: center 10px ; 1496} 1497.fancyButton491:is(:hover, :focus, :active)::after{ 1498top:0; 1499transform:translateX(-50%) rotate(-90deg);} 1500.fancyButton491.fancyButton:link > span,.fancyButton491.fancyButton:visited > span, .fancyButton491div.fancyButton > span{ 1501} 1502.fancyButton491.fancyButton:hover > span,.fancyButton491.fancyButton:focus > span,.fancyButton491.fancyButton:active > span,.fancyButton491.fancyButton.hover > span{ 1503} 1504.fancyButton491.fancyButton .text{ 1505 color: rgb(0, 0, 0); 1506 font-size: 1.1em; 1507 font-family: "Open Sans"; 1508 padding-top: 140px; 1509 font-weight: 600; 1510 text-decoration: none; 1511 padding-top: 140px; 1512 background-image: url('/ImageRepository/Document?documentID=17400'); 1513 background-repeat: no-repeat; 1514 background-position: center 38px ; 1515transition:all .3s ease-in-out; 1516position:relative; 1517} 1518.fancyButton491 .text::after{ 1519position:absolute; 1520content:""; 1521left:50%;
1522bottom:-5px; 1523transform:translateX(-50%); 1524height:3px; 1525width:32px; 1526transition:all .3s ease-in-out; 1527border-radius:3px; 1528background:#7F4312; 1529} 1530.fancyButton491.fancyButton:hover .text,.fancyButton491.fancyButton:focus .text,.fancyButton491.fancyButton:active .text,.fancyButton491.fancyButton.hover .text{ 1531 text-decoration: underline; 1532 background-repeat: no-repeat; 1533 background-position: center 35px ; 1534} 1535.fancyButton491:is(:hover, :focus, :active) .text::after{ 1536width:60px; 1537} 1538</style> 1539 1540 </li><!-- 1541--></ul></div><!-- --> 1542 </div> 1543 </nav> 1544 </div> 1545 <div class="widgetFooter"> 1546 </div> 1547</div> 1548</div> 1549 1550 </div> <!-- inner column --> 1551 1552 </div> <!-- inner row --> 1553 1554 </div><!-- outer column --><!----><div class="outer col col8 last" style="" data-widgetcontainerid="62b978c9-9b25-45f4-9857-b6f3885c8e10">� 1555 <div class="row nest first last wide">� 1556 1557 <div class="inner col col8 first last id0fb89438-f043-489f-b210-f657599ec855" style="" data-widgetcontainerid="0fb89438-f043-489f-b210-f657599ec855">� 1558<div data-widget-id="29cd3faa-7516-4053-96c8-4c9e464116c8" data-widget-controller-path="/GraphicLinks/Widget"> 1559 1560 1561 1562 1563<div id="graphicLinkWidget29cd3faa-7516-4053-96c8-4c9e464116c8" class="widget widgetGraphicLinks skin94 widgetOptionSet47 wide" data-elementqueryclasses='{"wide-narrow":"min-width:20em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' data-modulewidgettype="graphicLinks"> 1564 <div class="widgetHeader"> 1565 <div class=""> 1566 </div> 1567 </div> 1568 <div class="widgetBody cpGrid cpGrid2 "> 1569 <nav class="widgetGraphicLinksNav" aria-labelledby="GraphicLinkHeaderText"> 1570 <div class="row wide"> 1571 <!-- 1572--><div class="col col1 first "><ul class="semanticList"><!-- 1573 --><li class="widgetItem GraphicLinks"> 1574 1575<div> 1576 <a href="/2774/Downtown-Parking" target="_self" class="fancyButton fancyButton492 " > 1577 <span> 1578 <span><span class="text">Parking</span></span> 1579 </span> 1580 </a> 1581</div> 1582 <style scoped="scoped">.fancyButton492.fancyButton:link,.fancyButton492.fancyButton:visited, .fancyButton492div.fancyButton{ 1583 background-image: url('/ImageRepository/Document?documentID=17401'); 1584 background-repeat: no-repeat; 1585 background-position: center 13px ; 1586transition:all .3s ease-in-out; 1587position:relative; 1588} 1589.fancyButton492::after{ 1590position:absolute; 1591content:""; 1592left:50%; 1593top:3px; 1594transform:translateX(-50%) rotate(0deg); 1595height:130px; 1596width:130px; 1597transition:all .3s ease-in-out; 1598background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1599background-size:contain;} 1600.fancyButton492.fancyButton:hover,.fancyButton492.fancyButton:focus,.fancyButton492.fancyButton:active,.fancyButton492.fancyButton.hover{ 1601 background-repeat: no-repeat; 1602 background-position: center 10px ; 1603} 1604.fancyButton492:is(:hover, :focus, :active)::after{ 1605top:0; 1606transform:translateX(-50%) rotate(-90deg);} 1607.fancyButton492.fancyButton:link > span,.fancyButton492.fancyButton:visited > span, .fancyButton492div.fancyButton > span{ 1608} 1609.fancyButton492.fancyButton:hover > span,.fancyButton492.fancyButton:focus > span,.fancyButton492.fancyButton:active > span,.fancyButton492.fancyButton.hover > span{ 1610} 1611.fancyButton492.fancyButton .text{ 1612 color: rgb(0, 0, 0); 1613 font-size: 1.1em; 1614 font-family: "Open Sans"; 1615 padding-top: 140px; 1616 font-weight: 600; 1617 text-decoration: none; 1618 padding-top: 140px; 1619 background-image: url('/ImageRepository/Document?documentID=17404'); 1620 background-repeat: no-repeat; 1621 background-position: center 38px ; 1622transition:all .3s ease-in-out; 1623position:relative; 1624} 1625.fancyButton492 .text::after{ 1626position:absolute; 1627content:""; 1628left:50%; 1629bottom:-5px; 1630transform:translateX(-50%); 1631height:3px; 1632width:32px; 1633transition:all .3s ease-in-out; 1634border-radius:3px; 1635background:#7F4312; 1636} 1637.fancyButton492.fancyButton:hover .text,.fancyButton492.fancyButton:focus .text,.fancyButton492.fancyButton:active .text,.fancyButton492.fancyButton.hover .text{ 1638 text-decoration: underline; 1639 background-repeat: no-repeat; 1640 background-position: center 35px ; 1641} 1642.fancyButton492:is(:hover, :focus, :active) .text::after{ 1643width:60px; 1644} 1645</style> 1646 1647 </li><!-- 1648--></ul></div><!----><div class="col col1 last"><ul class="semanticList"><!-- 1649 --><li class="widgetItem GraphicLinks"> 1650 1651<div> 1652 <a href="https://www.governmentjobs.com/careers/carrboro" target="_blank" class="fancyButton fancyButton493 " aria-label="Jobs Opens in new window"> 1653 <span> 1654 <span><span class="text">Jobs</span></span> 1655 </span> 1656 </a> 1657</div> 1658 <style scoped="scoped">.fancyButton493.fancyButton:link,.fancyButton493.fancyButton:visited, .fancyButton493div.fancyButton{ 1659 background-image: url('/ImageRepository/Document?documentID=17401'); 1660 background-repeat: no-repeat; 1661 background-position: center 13px ; 1662transition:all .3s ease-in-out; 1663position:relative; 1664} 1665.fancyButton493::after{ 1666position:absolute; 1667content:""; 1668left:50%; 1669top:3px; 1670transform:translateX(-50%) rotate(0deg); 1671height:130px; 1672width:130px; 1673transition:all .3s ease-in-out; 1674background:url(/ImageRepository/Document?documentID=17403) center center no-repeat; 1675background-size:contain;} 1676.fancyButton493.fancyButton:hover,.fancyButton493.fancyButton:focus,.fancyButton493.fancyButton:active,.fancyButton493.fancyButton.hover{ 1677 background-repeat: no-repeat; 1678 background-position: center 10px ; 1679} 1680.fancyButton493:is(:hover, :focus, :active)::after{ 1681top:0; 1682transform:translateX(-50%) rotate(-90deg);} 1683.fancyButton493.fancyButton:link > span,.fancyButton493.fancyButton:visited > span, .fancyButton493div.fancyButton > span{ 1684} 1685.fancyButton493.fancyButton:hover > span,.fancyButton493.fancyButton:focus > span,.fancyButton493.fancyButton:active > span,.fancyButton493.fancyButton.hover > span{ 1686} 1687.fancyButton493.fancyButton .text{ 1688 color: rgb(0, 0, 0); 1689 font-size: 1.1em; 1690 font-family: "Open Sans"; 1691 padding-top: 140px; 1692 font-weight: 600; 1693 text-decoration: none; 1694 padding-top: 140px; 1695 background-image: url('/ImageRepository/Document?documentID=17402'); 1696 background-repeat: no-repeat; 1697 background-position: center 38px ; 1698transition:all .3s ease-in-out; 1699position:relative; 1700} 1701.fancyButton493 .text::after{ 1702position:absolute; 1703content:""; 1704left:50%;
1705bottom:-5px; 1706transform:translateX(-50%); 1707height:3px; 1708width:32px; 1709transition:all .3s ease-in-out; 1710border-radius:3px; 1711background:#7F4312; 1712} 1713.fancyButton493.fancyButton:hover .text,.fancyButton493.fancyButton:focus .text,.fancyButton493.fancyButton:active .text,.fancyButton493.fancyButton.hover .text{ 1714 text-decoration: underline; 1715 background-repeat: no-repeat; 1716 background-position: center 35px ; 1717} 1718.fancyButton493:is(:hover, :focus, :active) .text::after{ 1719width:60px; 1720} 1721</style> 1722 1723 </li><!-- 1724--></ul></div><!-- --> 1725 </div> 1726 </nav> 1727 </div> 1728 <div class="widgetFooter"> 1729 </div> 1730</div> 1731</div> 1732 1733 </div> <!-- inner column --> 1734 1735 </div> <!-- inner row --> 1736 1737 </div><!-- outer column --><!-- --></div> <!-- outer row --> 1738 1739 1740 </div> 1741</div></div> 1742</div><!-- Calendar/Carousel --><!-- <div data-cpRole="structuralContainer" id="homeContainer1"> 1743 <div class="siteWrap4"> 1744 <div data-cpRole="contentContainer" id="homeContent1a"></div> 1745 </div> 1746 </div> --><!-- Footer --><footer data-cpRole="structuralContainer" id="footerContainerTS"><div class="inner"> 1747<div class="siteWrap4"><div data-cpRole="contentContainer" id="footerTS"> <div id="cc50cf9b6f-4565-4df9-8dd5-ea1cd5ba3e02" data-containerid="50cf9b6f-4565-4df9-8dd5-ea1cd5ba3e02" class="pageContent cpGrid cpGrid24 isLockedContainer showInMobile" data-contentcontainerbreakpoint="50"> 1748 1749 1750 <div class="row outer wide"><!-- 1751--><div class="outer col col5 first" style="" data-widgetcontainerid="909608ca-e589-402f-992b-3d4b1dba6ebe">� 1752 <div class="row nest first wide">� 1753 1754 <div class="inner col col5 first last ide23284dc-056e-4944-adf0-31d2ae800616" style="" data-widgetcontainerid="e23284dc-056e-4944-adf0-31d2ae800616">� 1755 <div data-widget-id="b5983d2f-1e05-40fd-8883-fb85ccc85c36" data-widget-controller-path="/InfoAdvanced/Widget"> 1756 1757 1758 1759 1760 1761 <section id="divInfoAdvb5983d2f-1e05-40fd-8883-fb85ccc85c36" class="widget widgetInfoAdvanced skin91 widgetOptionSet5 wide" data-modulewidgettype="infoAdv" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-label="Info Advanced"> 1762 <header class="widgetHeader" id="headerb5983d2f-1e05-40fd-8883-fb85ccc85c36"> 1763 <div class=""> 1764 </div> 1765 </header> 1766 <div class="widgetBody cpGrid cpGrid1 "> 1767 <div class="row wide"> 1768 <div class="col col1 first last"> 1769 <ol class="pageStyles semanticList"> 1770 1771<li class="InfoAdvanced widgetItem fr-view"> 1772 <p><a href="/"><img src="/ImageRepository/Document?documentId=17414" class="fr-dib" alt="Carrboro North Carolina Homepage"></a></p> 1773</li> </ol> 1774 </div> 1775 </div> 1776 </div> 1777 <div class="widgetFooter"> 1778 1779 </div> 1780 1781 </section> 1782 1783 1784
1785<script type="text/javascript"> 1786 //Render slideshow if info advacned items contain one. 1787 $(document).ready(function (e) { 1788 $('#divInfoAdvb5983d2f-1e05-40fd-8883-fb85ccc85c36 .InfoAdvanced.widgetItem').each(function () { 1789 renderSlideshowIfApplicable($(this)); 1790 }); 1791 }); 1792</script>
1792</div> 1793 </div> <!-- inner column --> 1794 1795 </div> <!-- inner row --> 1796 <div class="row nest last wide">� 1797 1798 <div class="inner col col5 first last ide862b211-e88a-49a3-bf08-3254c5852685" style="" data-widgetcontainerid="e862b211-e88a-49a3-bf08-3254c5852685">� 1799<div data-widget-id="5433e49d-8a5f-49f6-a477-0f9aa1a5602e" data-widget-controller-path="/GraphicLinks/Widget"> 1800 1801 1802 1803 1804<div id="graphicLinkWidget5433e49d-8a5f-49f6-a477-0f9aa1a5602e" class="widget widgetGraphicLinks skin96 widgetOptionSet50 wide" data-elementqueryclasses='{"wide-narrow":"min-width:1em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' data-modulewidgettype="graphicLinks"> 1805 <div class="widgetHeader"> 1806 <div class=""> 1807 </div> 1808 </div> 1809 <div class="widgetBody cpGrid cpGrid5 "> 1810 <nav class="widgetGraphicLinksNav" aria-labelledby="GraphicLinkHeaderText"> 1811 <div class="row autoWidths center wide"> 1812 <!-- 1813--><div class="col col1 first "><ul class="semanticList"><!-- 1814 --><li class="widgetItem GraphicLinks"><a class="widgetDesc widgetGraphicLinksLink" href="/facebook" target="_self"> 1815 1816<img src="/ImageRepository/Document?documentID=17409" 1817 class="graphicButtonLink" alt="Facebook" 1818 onmouseover="this.src='/ImageRepository/Document?documentID=17409'" 1819 onmouseout="this.src='/ImageRepository/Document?documentID=17409'" 1820 onfocus="this.src='/ImageRepository/Document?documentID=17409'" 1821 onblur="this.src='/ImageRepository/Document?documentID=17409'"> 1822</a></li><!-- 1823--></ul></div><!----><div class="col col1 "><ul class="semanticList"><!-- 1824 --><li class="widgetItem GraphicLinks"><a class="widgetDesc widgetGraphicLinksLink" href="https://www.instagram.com/townofcarrboro/" target="_self"> 1825 1826<img src="/ImageRepository/Document?documentID=17410" 1827 class="graphicButtonLink" alt="Instagram" 1828 onmouseover="this.src='/ImageRepository/Document?documentID=17410'" 1829 onmouseout="this.src='/ImageRepository/Document?documentID=17410'" 1830 onfocus="this.src='/ImageRepository/Document?documentID=17410'" 1831 onblur="this.src='/ImageRepository/Document?documentID=17410'"> 1832</a></li><!-- 1833--></ul></div><!----><div class="col col1 "><ul class="semanticList"><!-- 1834 --><li class="widgetItem GraphicLinks"><a class="widgetDesc widgetGraphicLinksLink" href="https://www.youtube.com/CarrboroNC" target="_self"> 1835 1836<img src="/ImageRepository/Document?documentID=17412" 1837 class="graphicButtonLink" alt="YouTube" 1838 onmouseover="this.src='/ImageRepository/Document?documentID=17412'" 1839 onmouseout="this.src='/ImageRepository/Document?documentID=17412'" 1840 onfocus="this.src='/ImageRepository/Document?documentID=17412'" 1841 onblur="this.src='/ImageRepository/Document?documentID=17412'"> 1842</a></li><!-- 1843--></ul></div><!----><div class="col col1 "><ul class="semanticList"><!-- 1844 --><li class="widgetItem GraphicLinks"><a class="widgetDesc widgetGraphicLinksLink" href="https://tt.linkedin.com/company/carrboro-town-of" target="_self"> 1845 1846<img src="/ImageRepository/Document?documentID=17411" 1847 class="graphicButtonLink" alt="Linkedin" 1848 onmouseover="this.src='/ImageRepository/Document?documentID=17411'" 1849 onmouseout="this.src='/ImageRepository/Document?documentID=17411'" 1850 onfocus="this.src='/ImageRepository/Document?documentID=17411'" 1851 onblur="this.src='/ImageRepository/Document?documentID=17411'"> 1852</a></li><!-- 1853--></ul></div><!----><div class="col col1 last"><ul class="semanticList"><!-- 1854 --><li class="widgetItem GraphicLinks"><a class="widgetDesc widgetGraphicLinksLink" href="https://bsky.app/profile/carrboronc.bsky.social" target="_self"> 1855 1856<img src="/ImageRepository/Document?documentID=18217" 1857 class="graphicButtonLink" alt="Bluesky" 1858 onmouseover="this.src='/ImageRepository/Document?documentID=18217'" 1859 onmouseout="this.src='/ImageRepository/Document?documentID=18217'" 1860 onfocus="this.src='/ImageRepository/Document?documentID=18217'" 1861 onblur="this.src='/ImageRepository/Document?documentID=18217'"> 1862</a></li><!-- 1863--></ul></div><!-- --> 1864 </div> 1865 </nav> 1866 </div> 1867 <div class="widgetFooter"> 1868 </div> 1869</div> 1870</div> 1871 1872 </div> <!-- inner column --> 1873 1874 </div> <!-- inner row --> 1875 1876 </div><!-- outer column --><!----><div class="outer col col1" style="" data-widgetcontainerid="6930a685-a250-439d-b829-eacb1e2b3824">� 1877 <div class="row nest first last wide">� 1878
1879 <div class="inner col col1 first last id0721f010-e5aa-4d75-b1d4-64e13d761078" style="" data-widgetcontainerid="0721f010-e5aa-4d75-b1d4-64e13d761078">� 1880 1881<div class="widget widgetSpacer" id="8b831561-02db-493b-817a-ffabea40153b"></div> 1882 </div> <!-- inner column --> 1883 1884 </div> <!-- inner row --> 1885 1886 </div><!-- outer column --><!----><div class="outer col col5" style="" data-widgetcontainerid="9add9bdc-218c-4405-95f1-746e628ea829">� 1887 <div class="row nest first last wide">� 1888 1889 <div class="inner col col5 first last id06359958-0bac-4905-9137-b343e02502ac" style="" data-widgetcontainerid="06359958-0bac-4905-9137-b343e02502ac">� 1890 <div data-widget-id="49bcbfa1-5a3f-4baf-aec3-810201c4ae94" data-widget-controller-path="/InfoAdvanced/Widget"> 1891 1892 1893 1894 1895 1896 <section id="divInfoAdv49bcbfa1-5a3f-4baf-aec3-810201c4ae94" class="widget widgetInfoAdvanced skin95 widgetOptionSet5 wide" data-modulewidgettype="infoAdv" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-labelledby="header49bcbfa1-5a3f-4baf-aec3-810201c4ae94"> 1897 <header class="widgetHeader" id="header49bcbfa1-5a3f-4baf-aec3-810201c4ae94"> 1898 <div class=""> 1899 <h3 >Contact Us</h3> 1900 </div> 1901 </header> 1902 <div class="widgetBody cpGrid cpGrid1 "> 1903 <div class="row wide"> 1904 <div class="col col1 first last"> 1905 <ol class="pageStyles semanticList"> 1906 1907<li class="InfoAdvanced widgetItem fr-view"> 1908 <p>301 W Main Street</p> 1909</li> 1910<li class="InfoAdvanced widgetItem fr-view"> 1911 <p>Carrboro, NC 27510</p> 1912</li> 1913<li class="InfoAdvanced widgetItem fr-view"> 1914 <p>Administrative Offices hours are</p> 1915</li> 1916<li class="InfoAdvanced widgetItem fr-view"> 1917 <p>8:30 a.m. to 5 p.m.</p> 1918</li> 1919<li class="InfoAdvanced widgetItem fr-view"> 1920 <p>Monday through Friday</p><p><br></p> 1921</li> 1922<li class="InfoAdvanced widgetItem fr-view"> 1923 <p> Main Telephone: <a href="tel:9199428541">919-942-8541</a></p> 1924</li> 1925<li class="InfoAdvanced widgetItem fr-view"> 1926 <p>Police (Non-Emergency): <a href="tel:9199187397">919-918-7397</a></p> 1927</li> </ol> 1928 </div> 1929 </div> 1930 </div> 1931 <div class="widgetFooter"> 1932 1933 </div> 1934 1935 </section> 1936 1937 1938
1939<script type="text/javascript"> 1940 //Render slideshow if info advacned items contain one. 1941 $(document).ready(function (e) { 1942 $('#divInfoAdv49bcbfa1-5a3f-4baf-aec3-810201c4ae94 .InfoAdvanced.widgetItem').each(function () { 1943 renderSlideshowIfApplicable($(this)); 1944 }); 1945 }); 1946</script>
1946</div> 1947 </div> <!-- inner column --> 1948 1949 </div> <!-- inner row --> 1950 1951 </div><!-- outer column --><!----><div class="outer col col1" style="" data-widgetcontainerid="c8164602-5177-437f-a327-a93658f21b12">� 1952 <div class="row nest first last wide">� 1953 1954 <div class="inner col col1 first last id2c51a3de-89f7-4941-b1d8-1686f2926a1e" style="" data-widgetcontainerid="2c51a3de-89f7-4941-b1d8-1686f2926a1e">� 1955 1956<div class="widget widgetSpacer" id="32639115-3d75-4d54-b9b6-20184da44737"></div> 1957 </div> <!-- inner column --> 1958 1959 </div> <!-- inner row --> 1960 1961 </div><!-- outer column --><!----><div class="outer col col5" style="" data-widgetcontainerid="7afb31d2-89f4-4390-b64f-c2efc7e9cd6e">� 1962 <div class="row nest first last wide">� 1963 1964 <div class="inner col col5 first last id40cbed01-52ba-4f22-84cf-afb8ddb0655c" style="" data-widgetcontainerid="40cbed01-52ba-4f22-84cf-afb8ddb0655c">� 1965 <div data-widget-id="2751bd12-7587-4fa7-b880-bc31fc827b90" data-widget-controller-path="/QuickLinks/Widget"> 1966 1967 1968 1969 1970 1971 1972 1973 1974 <section id="widgetQuicklink2751bd12-7587-4fa7-b880-bc31fc827b90" class="widget widgetQuickLinks skin95 widgetOptionSet30 narrow" data-modulewidgettype="quickLinks" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-labelledby="quickLinksHeader2751bd12-7587-4fa7-b880-bc31fc827b90"> 1975 <header class="widgetHeader" id="quickLinksHeader2751bd12-7587-4fa7-b880-bc31fc827b90"> 1976 <div class=""> 1977 <h3><a style="" href="/QuickLinks.aspx?CID=5" >Helpful Links</a></h3> 1978 </div> 1979 </header> 1980 <div class="widgetBody cpGrid cpGrid1 "> 1981 <div class="row narrow"> 1982 <div class="col col1 first last"> 1983 <ol class="semanticList"> 1984 1985 <li style="position:relative" class="widgetItem QuickLinks"> 1986 <a class="widgetDesc widgetQuickLinksLink" href="/FAQ.aspx" target="_self" >FAQ</a> 1987 <div class="widgetMeta"></div> 1988 </li> 1989 1990 <li style="position:relative" class="widgetItem QuickLinks"> 1991 <a class="widgetDesc widgetQuickLinksLink" href="/139/Carrboro-Town-Code" target="_blank" aria-label="Town Code opens in new window">Town Code</a> 1992 <div class="widgetMeta"></div> 1993 </li> 1994 1995 <li style="position:relative" class="widgetItem QuickLinks"> 1996 <a class="widgetDesc widgetQuickLinksLink" href="https://carrboro.legistar.com/Calendar.aspx" target="_self" >Council Meeting Agendas, Minutes & Videos</a> 1997 <div class="widgetMeta"></div> 1998 </li> 1999 2000 <li style="position:relative" class="widgetItem QuickLinks"> 2001 <a class="widgetDesc widgetQuickLinksLink" href="/824/Emergency-Notifications" target="_self" >Emergency Notifications</a> 2002 <div class="widgetMeta"></div> 2003 </li> 2004 2005 <li style="position:relative" class="widgetItem QuickLinks"> 2006 <a class="widgetDesc widgetQuickLinksLink" href="/FormCenter/Communication-and-Engagement-Department-31/Website-Feedback-174" target="_self" >Site Feedback</a> 2007 <div class="widgetMeta"></div> 2008 </li> 2009 </ol> 2010 </div> 2011 </div> 2012 2013 </div> 2014 <div class="widgetFooter"> 2015 </div> 2016 <div class="addItemModal hidden"> 2017 <div class="url hidden">/QuickLinks.aspx</div> 2018 </div> 2019 2020 </section> 2021</div> 2022 2023 </div> <!-- inner column --> 2024 2025 </div> <!-- inner row --> 2026 2027 </div><!-- outer column --><!----><div class="outer col col1" style="" data-widgetcontainerid="ce5b4208-9908-4e32-bd2b-08d7525c0ce4">� 2028 <div class="row nest first last wide">� 2029 2030 <div class="inner col col1 first last idaf5ca00e-0fee-469a-b199-f6df14175755" style="" data-widgetcontainerid="af5ca00e-0fee-469a-b199-f6df14175755">� 2031 2032<div class="widget widgetSpacer" id="ebd1b0f5-13c7-495f-9d41-2cafee1da108"></div> 2033 </div> <!-- inner column --> 2034 2035 </div> <!-- inner row --> 2036 2037 </div><!-- outer column --><!----><div class="outer col col3" style="" data-widgetcontainerid="b259c7d2-7211-4d41-a274-c5ec9bf26792">� 2038 <div class="row nest first last wide">� 2039 2040 <div class="inner col col3 first last id1b9fb185-6eeb-4653-bac1-97bc693e6a1c" style="" data-widgetcontainerid="1b9fb185-6eeb-4653-bac1-97bc693e6a1c">�
2041 <div data-widget-id="5503ba98-235c-4c8b-bc80-003eba90c409" data-widget-controller-path="/QuickLinks/Widget"> 2042 2043 2044 2045 2046 2047 2048 2049 2050 <section id="widgetQuicklink5503ba98-235c-4c8b-bc80-003eba90c409" class="widget widgetQuickLinks skin95 widgetOptionSet30 narrow" data-modulewidgettype="quickLinks" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-labelledby="quickLinksHeader5503ba98-235c-4c8b-bc80-003eba90c409"> 2051 <header class="widgetHeader" id="quickLinksHeader5503ba98-235c-4c8b-bc80-003eba90c409"> 2052 <div class=""> 2053 <h3><a style="" href="/QuickLinks.aspx?CID=116" >Site Links</a></h3> 2054 </div> 2055 </header> 2056 <div class="widgetBody cpGrid cpGrid1 "> 2057 <div class="row narrow"> 2058 <div class="col col1 first last"> 2059 <ol class="semanticList"> 2060 2061 <li style="position:relative" class="widgetItem QuickLinks"> 2062 <a class="widgetDesc widgetQuickLinksLink" href="/" target="_self" >Home</a> 2063 <div class="widgetMeta"></div> 2064 </li> 2065 2066 <li style="position:relative" class="widgetItem QuickLinks"> 2067 <a class="widgetDesc widgetQuickLinksLink" href="/accessibility" target="_self" >Accessibility</a> 2068 <div class="widgetMeta"></div> 2069 </li> 2070 2071 <li style="position:relative" class="widgetItem QuickLinks"> 2072 <a class="widgetDesc widgetQuickLinksLink" href="/site/copyright" target="_self" >Copyright Notices</a> 2073 <div class="widgetMeta"></div> 2074 </li> 2075 2076 <li style="position:relative" class="widgetItem QuickLinks"> 2077 <a class="widgetDesc widgetQuickLinksLink" href="/directory" target="_self" >Staff Directory</a> 2078 <div class="widgetMeta"></div> 2079 </li> 2080 2081 <li style="position:relative" class="widgetItem QuickLinks"> 2082 <a class="widgetDesc widgetQuickLinksLink" href="/directory.aspx?EID=126" target="_blank" aria-label="Email the Webmaster opens in new window">Email the Webmaster</a> 2083 <div class="widgetMeta"></div> 2084 </li> 2085 </ol> 2086 </div> 2087 </div> 2088 2089 </div> 2090 <div class="widgetFooter"> 2091 </div> 2092 <div class="addItemModal hidden"> 2093 <div class="url hidden">/QuickLinks.aspx</div> 2094 </div> 2095 2096 </section> 2097</div> 2098 2099 </div> <!-- inner column --> 2100 2101 </div> <!-- inner row --> 2102 2103 </div><!-- outer column --><!----><div class="outer col col1" style="" data-widgetcontainerid="828b4d4f-d6d8-4d1c-a388-07ab3ece568c">� 2104 <div class="row nest first last wide">� 2105 2106 <div class="inner col col1 first last id4befb581-e7e4-4e72-bf34-77e5488c9633" style="" data-widgetcontainerid="4befb581-e7e4-4e72-bf34-77e5488c9633">� 2107 2108<div class="widget widgetSpacer" id="12dfd21c-9b8b-4666-9619-454251fc8ee2"></div> 2109 </div> <!-- inner column --> 2110 2111 </div> <!-- inner row --> 2112 2113 </div><!-- outer column --><!----><div class="outer col col2 last" style="" data-widgetcontainerid="73503c2a-2dea-4f05-8333-4adf215a24b8">� 2114 <div class="row nest first last wide">� 2115 2116 <div class="inner col col2 first last idda3e041d-5529-4f66-8057-dccf845aec2b" style="" data-widgetcontainerid="da3e041d-5529-4f66-8057-dccf845aec2b">� 2117 <div data-widget-id="c4bb83e6-6a98-4423-948e-3c20e0108f78" data-widget-controller-path="/InfoAdvanced/Widget"> 2118 2119 2120 2121 2122 2123 <section id="divInfoAdvc4bb83e6-6a98-4423-948e-3c20e0108f78" class="widget widgetInfoAdvanced skin91 widgetOptionSet5 wide" data-modulewidgettype="infoAdv" data-elementqueryclasses='{"wide-narrow":"min-width:25em"}' data-elementquerymatch='matchMultiColumn' data-elementqueryunmatch='unmatchMultiColumn' aria-label="Info Advanced"> 2124 <header class="widgetHeader" id="headerc4bb83e6-6a98-4423-948e-3c20e0108f78"> 2125 <div class=""> 2126 </div> 2127 </header> 2128 <div class="widgetBody cpGrid cpGrid1 "> 2129 <div class="row wide"> 2130 <div class="col col1 first last"> 2131 <ol class="pageStyles semanticList"> 2132 2133<li class="InfoAdvanced widgetItem fr-view"> 2134 <p><img src="/ImageRepository/Document?documentId=18221" class="fr-dib" alt="Carrboro 2025 All-America City" style="width: 175px;"></p> 2135</li> </ol> 2136 </div> 2137 </div> 2138 </div> 2139 <div class="widgetFooter"> 2140 2141 </div> 2142 2143 </section> 2144 2145 2146
2147<script type="text/javascript"> 2148 //Render slideshow if info advacned items contain one. 2149 $(document).ready(function (e) { 2150 $('#divInfoAdvc4bb83e6-6a98-4423-948e-3c20e0108f78 .InfoAdvanced.widgetItem').each(function () { 2151 renderSlideshowIfApplicable($(this)); 2152 }); 2153 }); 2154</script>
2154</div> 2155 </div> <!-- inner column --> 2156 2157 </div> <!-- inner row --> 2158 2159 </div><!-- outer column --><!-- --></div> <!-- outer row --> 2160 2161 2162 </div> 2163</div></div></div> 2164</footer><!-- Powered By --><div data-cpRole="structuralContainer" id="poweredByContainerTS"> 2165<div class="siteWrap4"><div data-cpRole="contentContainer" id="poweredByTS"> <div id="cc88fea536-29d8-4ca9-96b4-20ec1e8cc555" data-containerid="88fea536-29d8-4ca9-96b4-20ec1e8cc555" class="pageContent cpGrid cpGrid24 isLockedContainer showInMobile"> 2166 2167 2168 <div class="row outer wide"><!-- 2169--><div class="outer col col24 first last" style="" data-widgetcontainerid="36bac517-5095-444c-b85f-a022e1d0680e">� 2170 <div class="row nest first last wide">� 2171 2172 <div class="inner col col24 first last id7c14d4a1-5c98-47c0-bbd2-43c3494158d1" style="" data-widgetcontainerid="7c14d4a1-5c98-47c0-bbd2-43c3494158d1">� 2173 2174 <div data-widget-id='a8dacd12-aa56-401d-8c79-233bac54ee6b' data-moduleName="customHtml" id='widgetCustomHtmla8dacd12-aa56-401d-8c79-233bac54ee6b' class="widget widgetCustomHtml skin97 narrow" > 2175 <div class="widgetBody pageStyles" id="widgetBodya8dacd12-aa56-401d-8c79-233bac54ee6b"> 2176 <div id="customHtmla8dacd12-aa56-401d-8c79-233bac54ee6b"><div><style> 2177 /* CP icon */ 2178 .cpBylineIconTS { 2179 2180 } 2181 /* CP Text */ 2182 .cpBylineTextTS, 2183 .cpBylineTextTS a:link { 2184 2185 } 2186 2187 .cpBylineTS { 2188 text-align: center; 2189 } 2190 2191 .cpBylineIconTS { 2192 fill: currentColor; 2193 width: 39px; 2194 height: 26px; 2195 display: inline; 2196 vertical-align: middle; 2197 } 2198.p{ 2199color:#D12528; 2200} 2201.c{ 2202color:#333333; 2203} 2204</style> 2205 2206<div class="widgetItem cpBylineTS"> 2207 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 100 100" class="cpBylineIconTS"> 2208 <path class="c" d="M73.4,23.2h-19v16.7h19c2.8,0,5,2.2,5,5c0,2.8-2.2,5-5,5h-19v28.4h5.5l11.3-11.7h2.2c11.9,0,21.6-9.7,21.6-21.6C95,33,85.3,23.2,73.4,23.2"></path> 2209 <path class="p" d="M45.8,66.5H26.6C14.7,66.5,5,56.8,5,44.9C5,33,14.7,23.2,26.6,23.2h19.1v16.7H26.6c-2.8,0-5,2.2-5,5c0,2.8,2.2,5,5,5h19.1V66.5z"></path> 2210 </svg> 2211 <span class="cpBylineTextTS">Government Websites by <a href="https://connect.civicplus.com/referral">CivicPlus®</a></span> 2212</div> 2213</div></div> 2214 </div> 2215 2216 </div> 2217 2218 </div> <!-- inner column --> 2219 2220 </div> <!-- inner row --> 2221 2222 </div><!-- outer column --><!-- --></div> <!-- outer row --> 2223 2224 2225 </div> 2226</div></div> 2227</div> 2228</div> 2229 2230 </div> 2231 </div> 2232 </div> 2233 2234<link href="/745732998.css" rel="stylesheet" type="text/css" /> 2235 2236<div id="SplashMessageWrapper" class="cp-Splash-wrapper"> 2237 <div role="dialog" aria-labelledby="cp-Splash-title" aria-describedby="editorContentDesc" aria-modal="true" tabindex="-1" id="SplashMessage" class="hidden cp-Splash cp-Splash--modal is-open"> 2238 <div class="cp-Splash-header"> 2239 <h2 class="cp-Splash-title" id="cp-Splash-title">Loading</h2> 2240 <button class="cp-Splash-Btn cp-Splash-close" aria-label="Close this modal" title="Close this window"> 2241 <svg id="iconClose" viewBox="0 0 25 25"> 2242 <polygon style="fill:currentcolor" 2243 points="18.806,6.98 18.075,6.248 12.532,11.792 6.989,6.248 6.257,6.98 11.786,12.508 6.212,18.084 6.943,18.815 12.532,13.224 18.12,18.815 18.851,18.084 13.277,12.508"></polygon> 2244 </svg> 2245 </button>
2246 </div> 2247 <div class="cp-Splash-body"> 2248 <div class="cp-Splash-Prose editorContent fr-view" id="editorContentDesc"> 2249 <!-- Content from the Froala Editor will go here. --> 2250 Loading 2251 </div> 2252 </div> 2253 <div class="cp-Splash-footer"> 2254 <button class="cp-Splash-Btn cp-Splash-Btn--NoShow">Do Not Show Again</button> 2255 <button class="cp-Splash-Btn cp-Splash-Btn--Close">Close</button> 2256 </div> 2257 </div> 2258</div> 2259
2260<script src="/Assets/Scripts/APIClient.js"></script>
vendor: 2 bytes, line 2260
2260
2261<script src="/Assets/Mystique/Shared/Scripts/Moment/Moment.min.js"></script>
vendor: 2 bytes, line 2261
2261
2262<script src="/Assets/Scripts/SplashModal/SplashModalRender.js"></script>
vendor: 2 bytes, line 2262
2262
2263<script> 2264 2265 $(document).ready(function () { 2266 var filter = { 2267 targetId: '35', 2268 targetType: 1 2269 } 2270 2271 new SplashModalRender().triggerRender(filter); 2272 }); 2273</script>
2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290
2290<script src="/-1442400649.js" type="text/javascript"></script>
2290 2291 <!-- Move banner to outer wrap -->
2292<script> 2293 function moveBannerToOuterWrap() { 2294 if ($(".fixedBannerTS #bannerDivbanner2").length) { 2295 $(".fixedBannerTS #bannerDivbanner2").appendTo("#outer-wrap"); 2296 } else { 2297 setTimeout(function () { 2298 moveBannerToOuterWrap(); 2299 }, 500); 2300 } 2301 } 2302 2303 moveBannerToOuterWrap(); 2304</script>
2304 2305 2306<!----------Google Translate (Mobile Friendly)---------> 2307 2308<style> 2309 #google-translate-container { 2310 float: right; 2311 padding: 3px 5px 0px 0px; 2312 position: fixed; 2313 bottom: 16px; 2314 right: 10px; 2315 z-index: 5; 2316 } 2317 2318 .goog-te-combo, .goog-te-banner *, .goog-te-ftab *, .goog-te-menu *, .goog-te-menu2 *, .goog-te-balloon * { 2319 font-family: arial; 2320 font-size: 10pt; 2321 background-image: url("https://www.gstatic.com/images/branding/product/2x/translate_24dp.png"); 2322 background-position: 5px 5px; 2323 background-size: 18px; 2324 background-repeat: no-repeat; 2325 text-indent: 16px; 2326 background-color: #fff; 2327 color: #000 !important; 2328 } 2329 2330 .goog-logo-link { 2331 display: none !important; 2332 } 2333 2334 .goog-te-gadget { 2335 color: transparent !important; 2336 } 2337 2338 .goog-te-gadget .goog-te-combo { 2339 margin: 2px 0 !important; 2340 border-radius: 15px !important; 2341 } 2342 2343 .goog-te-combo{ 2344 border: 1px solid !important; 2345 border-color: #bcc9d7 #96a3b1 #96a3b1 #bcc9d7 !important; 2346 border-radius: 50px !important; 2347 height:31px !important; 2348 padding: 0 1px 0 .25rem !important; 2349 width: 156px; 2350 } 2351 2352 #launcher-wrapper { 2353 bottom: 50px !important; 2354 } 2355 2356</style> 2357 2358<div id="google-translate-container"> 2359 <div id="google_translate_element"> 2360 </div> 2361</div> 2362
2363<script> 2364 2365 function googleTranslateElementInit() { 2366 new google.translate.TranslateElement({ pageLanguage: "en" }, "google_translate_element"); 2367 // begin accessibility compliance 2368 $('img.goog-te-gadget-icon').attr('alt','Google Translate'); 2369 $('div#goog-gt-tt div.logo img').attr('alt','translate'); 2370 $('div#goog-gt-tt .original-text').css('text-align','left'); 2371 $('.goog-te-gadget-simple .goog-te-menu-value span').css('color','#000000'); 2372 $('.goog-te-combo').attr('aria-label','google translate languages'); 2373 $('svg.goog-te-spinner').attr('title','Google Translate Spinner'); 2374 $('.goog-te-gadget-simple .goog-te-menu-value span').css('color','#000000'); 2375 } 2376 2377 $(function() { 2378 $.getScript("//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"); 2379 }); 2380 2381</script>
2381 2382 2383<!--------------End Google Translate-----------------> 2384 2385<!-- Fixed Nav Adjustment (updated: respect body live-edit class -> relative header) -->
2386<script> 2387 // ----- helpers ----- 2388 function getValueTS(elem, attr) { 2389 if (!elem || !elem.css) return undefined; 2390 const val = elem.css(attr); 2391 if (val === undefined) return undefined; 2392 const num = parseInt(val, 10); 2393 if (Number.isNaN(num)) return undefined; 2394 return num; 2395 } 2396 2397 function clampTS(number, min, max) { 2398 return Math.min(Math.max(number, min), max); 2399 } 2400 2401 function isPageEditingTS() { 2402 return ( 2403 $("#doneEditing").length > 0 || // In live edit (legacy marker) 2404 typeof DesignCenter !== "undefined" // In theme manager 2405 ); 2406 } 2407 2408 const bgColorRegexTS = /rgba\((\d+), (\d+), (\d+), (\d*\.?\d*)\)/; 2409 function isTransparentTS(elem) { 2410 if (!elem || !elem.css) return false; 2411 const bg = elem.css('background-color'); 2412 if (typeof bg !== "string" || !bg.startsWith('rgba(')) return false; 2413 const matchState = bg.match(bgColorRegexTS); 2414 if (!matchState || matchState.length !== 5) return false; 2415 const alpha = parseFloat(matchState[4], 10); 2416 if (!(alpha >= 0 && alpha < 1)) return false; 2417 return true; 2418 } 2419 2420 function iterateRightpads(cb) { 2421 const containersTS = $("[class^='siteWrap'],[class*=' siteWrap']"); 2422 for (let i = 0; i < containersTS.length; i++) { 2423 const containerTS = containersTS[i]; 2424 if ( 2425 containerTS.id !== "bodyContainerTS" && 2426 containerTS.getAttribute('data-skip-rightpad') === null 2427 ) { 2428 cb(containerTS); 2429 } 2430 } 2431 } 2432 2433 // ----- DOM refs ----- 2434 const anchor = $("#divToolbars"); // READ ONLY (do not style) 2435 const headerContainer = $("#headerContainerTS"); 2436 const headerLinksTS = $("#headerLinksTS"); // may or may not exist 2437 2438 const outerSizingTS = $("#bannerContainerTS"); 2439 const innerSizingTS = $("#bannerSizingTS"); 2440 const bodyContainerTS = $("#bodyContainerTS"); 2441 2442 const forceUnfixClassTS = "forceUnfixTS"; 2443 2444 const fixedTopTS = $(".fixedTopTS"); 2445 const fixedBottomTS = $(".fixedBottomTS"); 2446 const fixedRightTS = $(".fixedRightTS"); 2447 2448 // ----- initial vars ----- 2449 var initialTopTS; 2450 var topAttachTS; 2451 if (fixedTopTS && fixedTopTS.length === 1) { 2452 initialTopTS = getValueTS(fixedTopTS, 'top'); 2453 const attachment = fixedTopTS.attr('data-attach');
2454 if (attachment) topAttachTS = $("#" + attachment); 2455 if (!topAttachTS || topAttachTS.length !== 1) topAttachTS = undefined; 2456 } 2457 if (initialTopTS === undefined) initialTopTS = 0; 2458 2459 // ----- sticky detection and usability check ----- 2460 function browserSupportsSticky() { 2461 const test = document.createElement('div'); 2462 test.style.position = 'sticky'; 2463 return test.style.position === 'sticky' || test.style.position === '-webkit-sticky'; 2464 } 2465 2466 function stickyUsable(elem) { 2467 if (!elem || !browserSupportsSticky()) return false; 2468 // prefer fixed fallback when header has attach behavior 2469 if (elem.attr && elem.attr('data-attach')) return false; 2470 2471 // walk ancestors to detect overflow/transform/perspective that break sticky 2472 var p = elem && elem.length ? elem[0].parentElement : null; 2473 while (p && p !== document.documentElement) { 2474 var cs = window.getComputedStyle(p); 2475 if (/(auto|scroll|hidden)/.test((cs.overflow || '') + (cs.overflowX || '') + (cs.overflowY || ''))) return false; 2476 if ((cs.transform && cs.transform !== 'none') || (cs.filter && cs.filter !== 'none') || (cs.perspective && cs.perspective !== 'none')) return false; 2477 p = p.parentElement; 2478 } 2479 return true; 2480 } 2481 2482 var preferStickyMode = false; 2483 if (headerContainer && headerContainer.length === 1) { 2484 preferStickyMode = stickyUsable(headerContainer); 2485 } 2486 2487 // ----- helper to detect live-edit class on body (defensive: checks both cases) ----- 2488 function bodyHasLiveEditClass() { 2489 try { 2490 var cls = (document.body && document.body.className) ? document.body.className : ''; 2491 // check both 'LiveEditOn' and 'liveEditOn' per environment variance 2492 return /\bLiveEditOn\b/.test(cls) || /\bliveEditOn\b/.test(cls) || isPageEditingTS(); 2493 } catch (e) { 2494 return isPageEditingTS(); 2495 } 2496 } 2497 2498 // ----- helper: headerLinks is considered visible to the user only if it's below toolbar bottom ----- 2499 function computeHeaderLinksUserVisibleFallback() { 2500 if (!headerLinksTS || headerLinksTS.length !== 1) return false; 2501 const el = headerLinksTS[0]; 2502 if (!el.offsetParent) return false; // hidden via display:none or removed 2503 const rect = el.getBoundingClientRect(); 2504 if (!anchor || anchor.length !== 1) { 2505 return rect.bottom > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight); 2506 } 2507 const aRect = anchor[0].getBoundingClientRect(); 2508 const inViewport = rect.bottom > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight); 2509 const belowToolbar = rect.bottom > aRect.bottom; 2510 return inViewport && belowToolbar; 2511 } 2512 2513 var headerLinksUserVisible = computeHeaderLinksUserVisibleFallback(); 2514 2515 (function setupHeaderLinksVisibilityWatcher() { 2516 if (!headerLinksTS || headerLinksTS.length !== 1) { 2517 headerLinksUserVisible = false; 2518 return; 2519 } 2520 headerLinksUserVisible = computeHeaderLinksUserVisibleFallback(); 2521 2522 if ('IntersectionObserver' in window) { 2523 const io = new IntersectionObserver((entries) => { 2524 const now = computeHeaderLinksUserVisibleFallback(); 2525 if (now !== headerLinksUserVisible) { 2526 headerLinksUserVisible = now; 2527 resizeAdjustmentTS(); 2528 } 2529 }, { root: null, threshold: 0 }); 2530 io.observe(headerLinksTS[0]); 2531 2532 if ('ResizeObserver' in window) { 2533 try { 2534 const ro = new ResizeObserver(function () { 2535 const now = computeHeaderLinksUserVisibleFallback(); 2536 if (now !== headerLinksUserVisible) { 2537 headerLinksUserVisible = now; 2538 resizeAdjustmentTS(); 2539 } 2540 }); 2541 if (anchor && anchor.length === 1) ro.observe(anchor[0]); 2542 ro.observe(headerLinksTS[0]); 2543 } catch (e) { /* noop */ } 2544 } 2545 } else { 2546 var visTimer; 2547 function onViewportChange() { 2548 clearTimeout(visTimer); 2549 visTimer = setTimeout(function () { 2550 const newVal = computeHeaderLinksUserVisibleFallback(); 2551 if (newVal !== headerLinksUserVisible) { 2552 headerLinksUserVisible = newVal; 2553 resizeAdjustmentTS(); 2554 } 2555 }, 50); 2556 } 2557 window.addEventListener('scroll', onViewportChange, { passive: true });
2558 window.addEventListener('resize', onViewportChange); 2559 } 2560 })(); 2561 2562 // ---------- toolbar CSS var + explicit header top ---------- 2563 function updateToolbarCssVarAndHeaderTop() { 2564 const toolbarH = (anchor && anchor.length === 1) ? (anchor.outerHeight() - 1) : 0; 2565 try { 2566 document.documentElement.style.setProperty('--civic-toolbar-height', toolbarH + 'px'); 2567 } catch (e) { /* noop */ } 2568 2569 var explicitTopPx = (toolbarH + (initialTopTS || 0)); 2570 try { 2571 if (headerContainer && headerContainer.length === 1) { 2572 headerContainer.css('top', explicitTopPx + 'px'); 2573 headerContainer.attr('data-expected-top', explicitTopPx + 'px'); 2574 } 2575 } catch (e) { /* noop */ } 2576 } 2577 2578 // MutationObserver: restore header top if overwritten by other scripts 2579 (function ensureHeaderTopPersistence() { 2580 if (!headerContainer || headerContainer.length !== 1 || typeof MutationObserver === 'undefined') return; 2581 2582 const targetNode = headerContainer[0]; 2583 var handlingMutation = false; 2584 2585 const mo = new MutationObserver(function (mutationsList) { 2586 if (handlingMutation) return; 2587 mutationsList.forEach(function (m) { 2588 if (m.type === 'attributes' && m.attributeName === 'style') { 2589 try { 2590 const expected = headerContainer.attr('data-expected-top'); 2591 const currentTop = headerContainer.css('top'); 2592 if (expected && currentTop !== expected) { 2593 handlingMutation = true; 2594 headerContainer.css('top', expected); 2595 setTimeout(function () { handlingMutation = false; }, 50); 2596 } 2597 } catch (e) { 2598 // ignore 2599 } 2600 } 2601 }); 2602 }); 2603 2604 try { 2605 mo.observe(targetNode, { attributes: true, attributeFilter: ['style'] }); 2606 } catch (e) { /* noop */ } 2607 })(); 2608 2609 function enableStickyInline() { 2610 if (!headerContainer || headerContainer.length !== 1) return; 2611 try { 2612 headerContainer.css('position', 'sticky'); 2613 headerContainer.removeClass('not-sticky'); 2614 headerContainer.addClass('sticky'); 2615 } catch (e) { /* noop */ } 2616 } 2617 2618 function disableStickyInline() { 2619 if (!headerContainer || headerContainer.length !== 1) return; 2620 try { 2621 headerContainer.css('position', ''); 2622 headerContainer.removeClass('sticky'); 2623 headerContainer.addClass('not-sticky'); 2624 } catch (e) { /* noop */ } 2625 } 2626 2627 function computeAnchorHeightFixed() { 2628 return (anchor && anchor.length === 1) ? anchor.outerHeight() - 1 : 0; 2629 } 2630 2631 function getComputedPositionFor(elem) { 2632 if (!elem || elem.length !== 1) return ''; 2633 try { 2634 return window.getComputedStyle(elem[0]).position || ''; 2635 } catch (e) { 2636 return elem.css('position') || ''; 2637 } 2638 } 2639 2640 // ----- main resizeAdjustmentTS (merged logic) ----- 2641 function resizeAdjustmentTS() { 2642 const editing = isPageEditingTS(); 2643 const bodyLiveEdit = bodyHasLiveEditClass(); 2644 2645 // Always refresh toolbar var and set header top calc to avoid top:0 race 2646 updateToolbarCssVarAndHeaderTop(); 2647 2648 // If body is in LiveEdit mode -> force header relative and disable fixed/sticky behavior 2649 if (bodyLiveEdit) { 2650 if (headerContainer && headerContainer.length === 1) { 2651 try { 2652 // ensure header is relative (no sticky/fixed) 2653 headerContainer.css('position', 'relative'); 2654 headerContainer.removeClass('sticky'); 2655 headerContainer.removeClass('forceUnfixTS'); 2656 headerContainer.addClass('not-sticky'); 2657 headerContainer.css('top', '0px'); 2658 headerContainer.attr('data-expected-top', '0px'); 2659 } catch (e) { /* noop */ } 2660 } 2661 // ensure fixedTopTS does not become fixed while live-editing 2662 if (fixedTopTS && fixedTopTS.length === 1) { 2663 try { fixedTopTS[0].classList.add(forceUnfixClassTS); } catch (e) { /* noop */ } 2664 } 2665 // skip other fixed adjustments (we still keep bottom/right logic) 2666 } else { 2667 // when not live-editing, ensure fixedTopTS can behave normally 2668 if (fixedTopTS && fixedTopTS.length === 1) { 2669 try { fixedTopTS[0].classList.remove(forceUnfixClassTS); } catch (e) { /* noop */ } 2670 } 2671 2672 // Detect computed position of fixedTopTS and handle sticky-first behavior 2673 const computedTopPosition = getComputedPositionFor(fixedTopTS); 2674 2675 // If fixedTopTS explicitly became 'relative' per CSS rules -> set header relative, top 0 2676 if (computedTopPosition === 'relative') { 2677 if (headerContainer && headerContainer.length === 1) { 2678 try { 2679 headerContainer.css('position', 'relative'); 2680 headerContainer.removeClass('sticky');
2681 headerContainer.removeClass('forceUnfixTS'); 2682 headerContainer.css('top', '0px'); 2683 headerContainer.attr('data-expected-top', '0px'); 2684 } catch (e) { /* noop */ } 2685 } 2686 } else { 2687 // normal sticky-first logic 2688 if (computedTopPosition === 'fixed') { 2689 if (preferStickyMode) { 2690 enableStickyInline(); 2691 } else { 2692 disableStickyInline(); 2693 } 2694 } else { 2695 if (preferStickyMode) enableStickyInline(); 2696 else disableStickyInline(); 2697 } 2698 } 2699 } 2700 2701 // ----- Fixed top script (unchanged core logic) ----- 2702 (function () { 2703 if (!fixedTopTS || fixedTopTS.length !== 1 || initialTopTS === undefined) return; 2704 2705 if (editing) { 2706 fixedTopTS[0].classList.add(forceUnfixClassTS); 2707 } else { 2708 // don't remove forceUnfixClassTS if bodyLiveEdit is true (we already set it) 2709 if (!bodyHasLiveEditClass()) fixedTopTS[0].classList.remove(forceUnfixClassTS); 2710 } 2711 2712 const topPosition = fixedTopTS.css('position'); 2713 const anchorHeight = computeAnchorHeightFixed(); 2714 2715 const headerLinksHeightForTop = (headerLinksUserVisible) ? (headerLinksTS.outerHeight() || 0) : 0; 2716 2717 if (topPosition === 'fixed') { 2718 if (topAttachTS) { 2719 scrollAdjustmentTS(); 2720 } else { 2721 var includeHeaderLinks = !preferStickyMode && headerLinksUserVisible; 2722 var linksHeight = includeHeaderLinks ? (headerLinksTS && headerLinksTS.length ? headerLinksTS.outerHeight() : 0) : 0; 2723 fixedTopTS.css('top', anchorHeight + linksHeight + initialTopTS); 2724 } 2725 } else { 2726 fixedTopTS.css('top', initialTopTS); 2727 } 2728 2729 // Banner spacing logic 2730 if (topPosition === 'fixed' || topPosition === 'absolute') { 2731 if (isTransparentTS(fixedTopTS)) { 2732 innerSizingTS.css('padding-top', initialTopTS + fixedTopTS.outerHeight() - 1); 2733 outerSizingTS.css('padding-top', ''); 2734 try { 2735 window.Pages.onResizeHandlersExecute(); 2736 } catch (e) { } 2737 } else { 2738 outerSizingTS.css('padding-top', fixedTopTS.outerHeight() - 1); 2739 innerSizingTS.css('padding-top', ''); 2740 } 2741 } else { 2742 innerSizingTS.css('padding-top', ''); 2743 outerSizingTS.css('padding-top', ''); 2744 } 2745 })(); 2746 2747 // ----- Fixed bottom script ----- 2748 (function () { 2749 if (!fixedBottomTS || fixedBottomTS.length === 0) return; 2750 if (editing || fixedBottomTS.outerHeight() > 200) { 2751 fixedBottomTS[0].classList.add(forceUnfixClassTS); 2752 } else { 2753 fixedBottomTS[0].classList.remove(forceUnfixClassTS); 2754 } 2755 2756 if (fixedBottomTS.css('position') === 'fixed') { 2757 bodyContainerTS.css('padding-bottom', fixedBottomTS.outerHeight()); 2758 } else { 2759 bodyContainerTS.css('padding-bottom', ''); 2760 } 2761 })(); 2762 2763 // ----- Fixed Right script ----- 2764 (function () { 2765 if (!fixedRightTS || fixedRightTS.length === 0) return; 2766 2767 if (editing) { 2768 fixedRightTS[0].classList.add(forceUnfixClassTS); 2769 } else { 2770 fixedRightTS[0].classList.remove(forceUnfixClassTS); 2771 } 2772 2773 if (fixedRightTS.css('position') === 'fixed') { 2774 const anchorHeight = computeAnchorHeightFixed(); 2775 fixedRightTS.css('top', anchorHeight); 2776 const rightBoundingTS = fixedRightTS[0].getBoundingClientRect(); 2777 iterateRightpads(function (containerTS) { 2778 const containerBoundingTS = containerTS.getBoundingClientRect(); 2779 if (containerBoundingTS.right <= rightBoundingTS.right) { 2780 $(containerTS).css('padding-right', rightBoundingTS.width + 16); 2781 } 2782 }); 2783 } else { 2784 fixedRightTS.css('top', ''); 2785 iterateRightpads(function (containerTS) { 2786 $(containerTS).css('padding-right', ''); 2787 }); 2788 } 2789 })(); 2790 } // end resizeAdjustmentTS 2791 2792 // ----- attach-aware scroll logic (merged) ----- 2793 function scrollAdjustmentTS() {
2794 if (!fixedTopTS || fixedTopTS.length !== 1 || !topAttachTS || topAttachTS.length !== 1) return; 2795 const topPosition = fixedTopTS.css('position'); 2796 if (topPosition === 'fixed' || topPosition === 'absolute') { 2797 const anchorBounding = anchor[0].getBoundingClientRect(); 2798 const attachBounding = topAttachTS[0].getBoundingClientRect(); 2799 2800 const headerLinksOffset = (!preferStickyMode && headerLinksUserVisible) ? (headerLinksTS.outerHeight() || 0) : 0; 2801 2802 fixedTopTS.css('top', Math.max(anchorBounding.bottom - 1, attachBounding.bottom) + headerLinksOffset); 2803 } else { 2804 fixedTopTS.css('top', initialTopTS); 2805 } 2806 } 2807 2808 // ----- media query watcher for (min-width:1200px) ----- 2809 (function watch1200pxMedia() { 2810 try { 2811 var mql = window.matchMedia('(min-width: 1200px)'); 2812 function mqHandler(e) { 2813 if (!e.matches) { 2814 if (headerContainer && headerContainer.length === 1) { 2815 try { 2816 headerContainer.removeClass('sticky'); 2817 headerContainer.addClass('not-sticky'); 2818 headerContainer.css('position', 'relative'); 2819 headerContainer.css('top', '0px'); 2820 headerContainer.attr('data-expected-top', '0px'); 2821 } catch (err) { /* noop */ } 2822 } 2823 } else { 2824 try { 2825 if (preferStickyMode) enableStickyInline(); 2826 else disableStickyInline(); 2827 updateToolbarCssVarAndHeaderTop(); 2828 } catch (err) { /* noop */ } 2829 } 2830 } 2831 mqHandler(mql); 2832 if (typeof mql.addEventListener === 'function') mql.addEventListener('change', mqHandler); 2833 else if (typeof mql.addListener === 'function') mql.addListener(mqHandler); 2834 } catch (e) { /* noop */ } 2835 })(); 2836 2837 // ----- observe body class changes to react to live-edit toggles immediately ----- 2838 (function observeBodyClassChanges() { 2839 if (typeof MutationObserver === 'undefined' || !document.body) return; 2840 try { 2841 var bodyObserver = new MutationObserver(function (mutations) { 2842 var triggered = false; 2843 mutations.forEach(function (m) { 2844 if (m.type === 'attributes' && m.attributeName === 'class') triggered = true; 2845 }); 2846 if (triggered) { 2847 // re-run adjustments immediately 2848 try { resizeAdjustmentTS(); } catch (e) { /* noop */ } 2849 } 2850 }); 2851 bodyObserver.observe(document.body, { attributes: true, attributeFilter: ['class'] }); 2852 } catch (e) { /* noop */ } 2853 })(); 2854 2855 // ----- bootstrapping / event wiring ----- 2856 $(window).load(function () { 2857 updateToolbarCssVarAndHeaderTop(); 2858 2859 if (preferStickyMode) enableStickyInline(); 2860 else disableStickyInline(); 2861 2862 if ('ResizeObserver' in window && anchor && anchor.length === 1) { 2863 try { 2864 const ro = new ResizeObserver(function () { 2865 updateToolbarCssVarAndHeaderTop(); 2866 if (headerContainer && headerContainer.length === 1) { 2867 headerContainer.css('top', (document.documentElement.style.getPropertyValue('--civic-toolbar-height') || '0px').replace('px','') - 0 + initialTopTS + 'px'); 2868 } 2869 resizeAdjustmentTS(); 2870 }); 2871 ro.observe(anchor[0]); 2872 } catch (e) { /* noop */ } 2873 } 2874 2875 setTimeout(function () { 2876 resizeAdjustmentTS(); 2877 }, 350); 2878 2879 $(window).scroll(function () { 2880 scrollAdjustmentTS(); 2881 2882 if (!preferStickyMode && headerLinksTS && headerLinksTS.length === 1) { 2883 const newVis = computeHeaderLinksUserVisibleFallback(); 2884 if (newVis !== headerLinksUserVisible) { 2885 headerLinksUserVisible = newVis; 2886 resizeAdjustmentTS(); 2887 } 2888 } 2889 }); 2890 2891 var adjustTimeoutTS; 2892 $(window).resize(function () { 2893 clearTimeout(adjustTimeoutTS); 2894 adjustTimeoutTS = setTimeout(function () { 2895 updateToolbarCssVarAndHeaderTop(); 2896 2897 if (!preferStickyMode && headerLinksTS && headerLinksTS.length === 1) { 2898 headerLinksUserVisible = computeHeaderLinksUserVisibleFallback(); 2899 } 2900 2901 resizeAdjustmentTS(); 2902 }, 350); 2903 });
2904 2905 $.when(window.Pages.angularToolbarComplete).done(function () { 2906 resizeAdjustmentTS(); 2907 }); 2908 }); 2909</script>
2909 2910<!-- End Fixed Nav Adjustment --> 2911 2912 2913
2913<script type="text/javascript"> 2914 $(function () { 2915 document.cookie = "responsiveGhost=0; path=/"; 2916 }); 2917 $(window).on("load", function () { 2918 $('body').addClass('doneLoading').removeClass('hideContent'); 2919 2920 if ($('#404Content').length > 0) 2921 $('div#bodyWrapper').css('padding', '0px'); 2922 }); 2923 </script>
2923 2924 2925 <noscript> 2926 <style> 2927 body.hideContent { 2928 opacity: 1 !important; 2929 } 2930 </style> 2931 </noscript> 2932 2933 2934<div style="display: none;"> 2935 <svg xmlns="http://www.w3.org/2000/svg" style="display:none;"> 2936 2937 <symbol id="iconArrow--left" viewbox="0 0 25 25"> 2938 <title>Arrow Left</title> 2939 <polygon style="fill:currentcolor" points="18.044,25 19.498,23.545 8.409,12.454 19.408,1.455 17.954,0 5.502,12.452"></polygon> 2940 </symbol> 2941 2942 <symbol id="iconArrow--right" viewbox="0 0 25 25"> 2943 <title>Arrow Right</title> 2944 <polygon style="fill:currentcolor" points="6.957,0 5.502,1.455 16.591,12.546 5.592,23.545 7.047,25 19.498,12.548"></polygon> 2945 </symbol> 2946 2947 </svg> 2948</div> 2949
2949<script type="text/javascript">loadCSS('//fonts.googleapis.com/css?family=Alegreya+Sans:100,100italic,300,300italic,500,500italic,700,700italic,800,800italic,900,900italic,italic,regular|Alegreya+Sans+SC:100,100italic,300,300italic,500,500italic,700,700italic,800,800italic,900,900italic,italic,regular|Josefin+Sans:500,500italic,600,600italic,700,700italic,italic,regular|Lato:700,700italic,900,900italic,italic,regular|Montserrat:100,100italic,200,200italic,300,300italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic,italic,regular|Open+Sans:300,300italic,500,500italic,600,600italic,700,700italic,800,800italic,italic,regular|Poppins:100,100italic,200,200italic,300,300italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic,italic,regular|Ubuntu:500,700,700italic,regular|');</script>
2949 2950 2951 2952 <div class="hidden activeWidgetSkinComponentsOnPageJson">[]</div> 2953 <div style="display: none;"> 2954 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> 2955 <symbol id="iconSlideshowArrowLeft" viewBox="0 0 22.68 40"> 2956 <title>Slideshow Left Arrow</title> 2957 <g> 2958 <path style="fill:currentcolor;" d="M20,40a2.67,2.67,0,0,1-1.9-.79L.79,21.9a2.68,2.68,0,0,1,0-3.79L18.1.79a2.68,2.68,0,1,1,3.79,3.79L6.47,20,21.89,35.42A2.68,2.68,0,0,1,20,40Z"></path> 2959 </g> 2960 </symbol> 2961 <symbol id="iconSlideshowArrowRight" viewBox="0 0 22.68 40"> 2962 <title>Slideshow Right Arrow</title> 2963 <g> 2964 <path style="fill:currentcolor;" d="M2.68,0a2.67,2.67,0,0,1,1.9.79L21.89,18.1a2.68,2.68,0,0,1,0,3.79L4.58,39.21A2.68,2.68,0,0,1,.79,35.42L16.21,20,.79,4.58A2.68,2.68,0,0,1,2.68,0Z"></path> 2965 </g> 2966 </symbol> 2967 </svg> 2968 </div> 2969 2970 2971 2972 2973 <div id="root-picker-outlet"></div> 2974</body> 2975</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.