1<!DOCTYPE HTML> 2<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, user-scalable=1"> 7 8 <!-- Preconnect --> 9 <link rel="preconnect" href="https://www.optimizecdn.com" crossorigin> 10 <link rel="preconnect" href="https://fonts.googleapis.com"> 11 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 12 <link rel="apple-touch-icon" href="/images/fav.png"> 13 <link rel="icon" type="image/png" href="/images/fav.png"> 14 15 <!-- Site Meta Data --> 16 <title>Westminster California Businesses Directory - Find Westminster California Businesses - Westminster Chamber of Commerce</title> 17 <meta name="description" content="Search the most complete westminster california businesses directory. Find westminster california businesses."> 18 <meta name="keywords" content="Westminster California Business,Westminster California Businesses, Westminster Chamber of Commerce"> 19 <meta name="robots" content="index, follow"> 20 21 <!-- Canonical URL --> 22 <link rel="canonical" href="https://www.westminsterchamber.org/"> 23 <link rel="alternate" type="application/rss+xml" title="Westminster Chamber of Commerce RSS Feed" href="https://www.westminsterchamber.org/rss" /> 24 25 <!-- Social Media Meta Data --> 26 <meta property="og:type" content="website"> 27 <meta property="og:url" content="https://www.westminsterchamber.org"> 28 <meta property="og:site_name" content="Westminster Chamber of Commerce"> 29 <meta property="og:title" content="Westminster California Businesses Directory - Find Westminster California Businesses - Westminster Chamber of Commerce"> 30 <meta property="og:description" content="Search the most complete westminster california businesses database. Find Westminster California Businesses."> 31 <meta property="og:image" content="https://www.westminsterchamber.org/images/hero-slider/PHOTO-2022-09-21-16-51-02-(2).webp"> 32
32<script> 33 var siteInfoSpan=document.createElement('span'); 34 siteInfoSpan.style.cssText='position:absolute;color:transparent;width:100%;z-index:-1;height:50px;top:0;'; 35 siteInfoSpan.textContent='www.westminsterchamber.org - Westminster Chamber of Commerce'; 36 document.documentElement.appendChild(siteInfoSpan); 37 </script>
37 38 39 <!-- Preload --> 40 <link rel="preload" as="style" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" fetchpriority="high" crossorigin> 41 <link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap" fetchpriority="high"> 42 <link rel="preload" href="/images/bg.jpg" as="image" fetchpriority="high"> 43 44 <!-- Non-Critical Stylesheet - Render Before Critical Styles --> 45 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css?v=3.3.0" crossorigin> 46 <noscript> 47 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css" crossorigin> 48 </noscript> 49 50 <!-- Critical Stylesheet --> 51 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" crossorigin> 52 53 <!-- Google Fonts Stylesheet --> 54 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap"> 55 <noscript> 56 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap"> 57 </noscript> 58 59 <!-- FontAwesome Stylesheet --> 60 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin> 61 <noscript> 62 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin> 63 </noscript> 64 65 <!-- Bootstrap Icons Stylesheet --> 66 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin> 67 <noscript> 68 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin> 69 </noscript> 70 71 <!-- Critical JavaScript --> 72
72<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/jquery.min.js"></script>
72 73
73<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/bootstrap-3.3.5.min.js"></script>
73 74
74<script> 75 /* jQuery.event.special.touchstart = { 76 setup: function( _, ns, handle ) { 77 this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") }); 78 } 79 }; */ 80 jQuery.event.special.touchmove = { 81 setup: function( _, ns, handle ) { 82 this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") }); 83 } 84 }; 85 jQuery.event.special.wheel = { 86 setup: function( _, ns, handle ){ 87 this.addEventListener("wheel", handle, { passive: true }); 88 } 89 }; 90 jQuery.event.special.mousewheel = { 91 setup: function( _, ns, handle ){ 92 this.addEventListener("mousewheel", handle, { passive: true }); 93 } 94 }; 95 </script>
95 96 97 98 99 <!-- Prefetch --> 100 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script"> 101 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0" as="script"> 102 103 <!-- Custom Site-wide HEAD Content -->
103<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9069257265845180" 104 crossorigin="anonymous"></script>
vendor: 2 bytes, line 104
104
105<script> 106Â Â var hsscript = document.createElement("script"); 107Â Â hsscript.src = "https://cdn.jsdelivr.net/npm/hockeystack@latest/hockeystack.min.js"; 108Â Â hsscript.async = 1; 109Â Â hsscript.dataset.apikey = "880cd94d2663223a75e68d70bd2631"; 110Â Â hsscript.dataset.cookieless = 1; 111Â Â hsscript.dataset.autoIdentify = 1; 112Â Â document.getElementsByTagName('head')[0].append(hsscript); 113</script>
vendor: 2 bytes, line 113
113
114<script type="text/javascript"> 115 (function(c,l,a,r,i,t,y){ 116 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 117 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 118 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 119 })(window, document, "clarity", "script", "fr45wek0yo"); 120</script>
120 121<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 121-122
121 122<script async src="https://www.googletagmanager.com/gtag/js?id=
122G-SSCD6BSGLV
vendor: 13 bytes, line 122
122"></script>
123<script> 124
vendor: 138 bytes, lines 124-128
124window.dataLayer = window.dataLayer || []; 125 function gtag(){dataLayer.push(arguments);} 126 gtag('js', new Date()); 127 128 gtag('config', '
128G-SSCD6BSGLV
vendor: 5 bytes, line 128
128');
129</script>
129
129<script> 130 function g() { 131 window.addEventListener('load', () => { 132 if (typeof initializeG === 'function') { 133 initializeG(); 134 } else if (typeof initializeGoogleMaps === 'function') { 135 initializeGoogleMaps(); 136 } 137 }); 138 } 139 </script>
139 140
140<script src="https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places®ion=US&callback=g&language=en&key=AIzaSyDbfKV3pdAqtZWJp2D8818eBlTy7zr0DQk"></script>
140 141 142</head> 143<body> 144 <!-- Google Sitelinks Search Box --> 145
145<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Westminster Chamber of Commerce","url":"www.westminsterchamber.org","potentialAction":{"@type":"SearchAction","target":"www.westminsterchamber.org/sitesearch/?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
145 146<style type='text/css'> 147 </style><!--GOOGLE TAG MANAGER CODE--><!-- 148IMPORTANT: It is not recommended to customize this widget as it directly connects to fields in DESIGN SETTINGS. If new design settings are created and this widget is already customized, then the website will not be able to apply any new design setitngs. 149 150INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section. 151--> 152<style> 153 .upload-form-field::before { 154 content: "choose files"; 155 display: inline-block; 156 border: 1px solid #999; 157 border-radius: 3px; 158 padding: 5px 8px; 159 } 160 #first_container span.input-group-addon,#first_container .datepicker *,#first_container .input-group-addon, #first_container .input-group-addon *,#first_container .fr-action-buttons .fr-submit,.fr-popup .fr-layer.fr-color-hex-layer .fr-action-buttons button.fr-command { 161 white-space: nowrap !important; 162 } 163 /* Main Website Design */ 164 body,.modal-header,.modal-content,.modal-body,.modal-footer { 165 background: rgb(255, 255, 255); 166 color: rgb(44, 44, 44); 167 font-family: 'Cabin'; 168 font-size: 14px; 169 } 170 .select2-container .select2-choice { 171 font-family: 'Cabin'!important; 172 } 173 html{ 174 background: rgb(44, 44, 44) } 175 .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow { 176 color: #000 !important; 177 } 178 a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) { 179 color: rgb(0, 102, 153); 180 } 181 a:hover, a:focus,.pricing_menu li ul li a:not(.btn):hover,.pricing_menu li ul li a:not(.btn):focus,.btn:hover,.btn:focus { 182 color: rgb(14, 122, 176); 183 } 184 .breadcrumb a{ 185 color: rgba(118, 118, 118,0.9); 186 } 187 .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active { 188 color: rgb(118, 118, 118); 189 } 190 .help-inline, .help-block { 191 color: rgba(44, 44, 44,0.5); 192 } 193 .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { 194 font-family: 'PT Sans'; 195 } 196 /* Header Design */ 197 .header, .mobile_website_logo img { 198 background: rgb(255, 255, 255); 199 } 200 .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span { 201 color: rgb(118, 118, 118); 202 font-size: 14px; 203 } 204 .header .mini-nav li a:not(.btn):hover { 205 color: rgba(118, 118, 118,0.95); 206 } 207 .header .btn_get_listed { 208 background-color: rgb(240, 52, 52); 209 border: 1px solid rgb(240, 52, 52); 210 color: rgb(255, 255, 255)!important; 211 } 212 .header .btn_get_listed:hover, .header .btn_get_listed:focus { 213 background-color: rgba(240, 52, 52,0.97); 214 } 215 .header .btn_search { 216 background-color: rgba(0, 102, 153,0.97); 217 border: 1px solid rgb(0, 102, 153); 218 color: rgb(255, 255, 255); 219 } 220 .header .btn_search:hover, .header .btn_search:focus { 221 background-color: rgb(0, 102, 153); 222 color: rgb(255, 255, 255); 223 } 224 225 /* Logo Design */ 226 .logo,.logo:hover,.logo:focus { 227 color: rgb(44, 44, 44); 228 font-family: 'PT Sans'; 229 } 230 .logo .slogan { 231 color: rgb(118, 118, 118); 232 } 233 .logo .fa { 234 color: rgb(0, 102, 153); 235 } 236 237 /* Main Menu Design */ 238 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 239 background: rgb(221, 221, 221); 240 position: sticky; 241 z-index: 1; 242 top: 0px; 243 } 244 /* Google Translate When Main Menu Sticky Top */ 245 @media only screen and (max-width: 1100px) { 246 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 247 top: 50px; 248 } 249 } 250 .header ul.nav.navbar-nav li ul { 251 background-color: rgb(71, 134, 141); 252 } 253 .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span { 254 color: rgb(255, 255, 255); 255 font-weight: 400; 256 } 257 .header .navbar-default, .pagination > .active > a { 258 background-color: rgb(71, 134, 141); 259 } 260 .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{ 261 border-left-color: rgb(255, 255, 255); 262 background: rgb(255, 255, 255); 263 color: rgb(71, 134, 141); 264 }
265 .navbar-default .navbar-toggle .icon-bar { 266 background-color: rgb(255, 255, 255); 267 } 268 .user_sidebar, .main_menu, .compact-mobile-search { 269 color: rgb(255, 255, 255); 270 } 271 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 272 color: rgb(255, 255, 255); 273 font-weight: 400; 274 } 275 .navbar-default .navbar-nav > li:hover > a,.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus { 276 color: rgb(255, 255, 255); 277 } 278 .navbar-default .navbar-nav > li { 279 font-family: 'Cabin'; 280 } 281 282 283 284 /* Footer Design */ 285 .footer { 286 background-color: rgb(44, 44, 44); 287 display: block; 288 } 289 .footer, .footer_menu a,.footer_terms a,.footer_menu .content { 290 color: rgb(239, 239, 239); 291 } 292 .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus { 293 color: rgb(255, 255, 255); 294 } 295 .footer_menu .head { 296 color: rgb(255, 255, 255); 297 } 298 .btn_footer_get_listed { 299 background-color: rgb(240, 52, 52); 300 border: 1px solid rgb(240, 52, 52); 301 color: rgb(255, 255, 255)!important; 302 } 303 .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{ 304 background-color: rgba(240, 52, 52,0.95); 305 } 306 307 /* Homepage Design */ 308 .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 { 309 font-family: 'PT Sans'; 310 } 311 .homepage_settings h1, .homepage_map h1 { 312 color: rgb(255, 255, 255); 313 font-weight: 600; 314 text-align: center; 315 } 316 .homepage_settings h2, .homepage_map h2 { 317 color: rgb(41, 41, 41); 318 font-weight: 400; 319 text-align: center; 320 321 } 322 .homepage_settings .search_box label { 323 color: rgb(49, 49, 49); 324 } 325 .btn_home_search, .search_box input[type=submit] { 326 background-color: rgb(0, 102, 153); 327 border: 1px solid rgb(0, 102, 153); 328 color: rgb(255, 255, 255); 329 } 330 .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus { 331 background-color: rgba(0, 102, 153,0.97); 332 color: rgb(255, 255, 255); 333 } 334 .homepage_settings .search_box { 335 336 background-color: rgba( 255, 255, 255, 0.8); 337 } 338 339 /* Homepage Steps Module */ 340 .homepage_steps { 341 background: none; 342 box-shadow: none; 343 padding: 0; 344 color: rgb(255, 255, 255); 345 } 346 .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{ 347 color: rgb(255, 255, 255)!important; 348 } 349 .homepage_steps .fa { 350 color: rgb(255, 255, 255); 351 background-color: rgba(255, 255, 255,0.075); 352 } 353 .homepage_steps h2 + p { 354 opacity: .6; 355 } 356 357 /* Blog Posts Slider Settings */ 358 #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 { 359 color: rgb(71, 71, 71); 360 } 361 #myCarousel .list-group-item { 362 background-color: rgba(245, 245, 245,0.9); 363 border-color: rgba(245, 245, 245,0.80); 364 } 365 #myCarousel .carousel-caption { 366 background-color: rgba(245, 245, 245,0.8); 367 } 368 #myCarousel .list-group, #myCarousel .carousel-inner { 369 background-color: rgb(245, 245, 245) } 370 #myCarousel .list-group .active, #myCarousel .list-group-item:hover { 371 background-color: rgb(245, 245, 245) } 372 #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{ 373 color: rgb(71, 71, 71); 374 } 375 376 /* Additional Settings */ 377 .well blockquote { 378 background: rgb(255, 255, 255) none repeat scroll 0 0; 379 border-color: rgb(221, 221, 221); 380 color: rgb(44, 44, 44); 381 padding: 10px 20px; 382 } 383 .account-form-box form table tr td table { 384 background-color: transparent!important; 385 border: none!important; 386 } 387 388 .account-form-box form table tr td table td { 389 background-color: transparent!important; 390 color: rgb(44, 44, 44)!important; 391 border: none!important; 392 } 393 div.dataTables_length label, div.dataTables_filter label, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{ 394 color: rgb(44, 44, 44)!important; 395 } 396 .table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td { 397 border-color: rgba(85, 85, 85,0.1); 398 background-color: rgb(245, 245, 245); 399 color: rgb(85, 85, 85);
400 font-weight:600; 401 border-left: none; 402 border-bottom-width: 1px; 403 } 404 .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer { 405 border-color: rgba(85, 85, 85,0.1); 406 } 407 .table > tfoot > tr > td:not(:last-child) { 408 border-right: 1px solid rgba(85, 85, 85,0.1); 409 } 410 table.dataTable.no-footer, table.dataTable { 411 border: 1px solid rgb(221, 221, 221)!important; 412 } 413 .table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div { 414 border-top:1px solid rgb(221, 221, 221); 415 } 416 .table-view .table-view-group:last-child { 417 border-bottom:1px solid rgb(221, 221, 221); 418 } 419 table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped { 420 background-color: rgb(245, 245, 245)!important; 421 } 422 .table-striped.dataTable, .table-striped, .fr-view .table-striped { 423 border: 1px solid rgba(85, 85, 85,0.15); 424 border-collapse: separate; 425 overflow: hidden; 426 } 427 table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 428 overflow: visible; 429 } 430 .table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) { 431 background-color: rgba(255, 255, 255,0.5)!important; 432 } 433 .nav-tabs, hr, .account-menu-title, .modal-header { 434 border-color: rgb(221, 221, 221); 435 } 436 .sidemenu_panel .list-group-item{ 437 background-color: transparent!important; 438 color: rgb(41, 41, 41)!important; 439 } 440 .img-thumbnail { 441 background-color: rgb(245, 245, 245)!important; 442 border: 1px solid rgb(221, 221, 221); 443 } 444 .member_admin_sidemenu p, .member_admin_sidemenu h3 { 445 color: rgb(41, 41, 41)!important; 446 } 447 .close { 448 color: rgb(44, 44, 44); 449 opacity: 1; 450 } 451 .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 { 452 font-size:34px; 453 display: block; 454 } 455 .member_results_header h2, .feature_results_header h2 { 456 font-size:28px; 457 display: block; 458 } 459 .homepage_settings { 460 padding-top: 90px; 461 padding-bottom: 200px; 462 } 463 @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 464 @media only screen and (max-width: 768px) { 465 .member-profile-header .favorite {float:none} 466 } 467 468 469 @media only screen and (max-width: 1100px) { 470 } 471 .views > i.fa.activeView, .views > i.fa:hover { 472 background-color: rgb(44, 44, 44); 473 color: rgb(255, 255, 255); 474 } 475 .views > i.fa { 476 background-color: rgba(44, 44, 44,0.1); 477 color: rgb(44, 44, 44); 478 } 479 .ui-rangeSlider-label { 480 background-color: rgb(71, 134, 141)!important; 481 color: rgb(255, 255, 255)!important; 482 } 483 .pricing_menu li .title { 484 background: rgb(0, 102, 153); 485 color: rgb(255, 255, 255); 486 } 487 p.account-tip{ 488 color: rgb(44, 44, 44); 489 } 490 .circled_number { 491 background: rgb(0, 102, 153); 492 color: rgb(255, 255, 255); 493 } 494 .pic { 495 background-color: rgba(0, 102, 153,0.8); 496 color: rgb(255, 255, 255); 497 background-repeat: no-repeat; 498 background-position: center; 499 } 500 .pic .pic-caption { 501 background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(0, 102, 153,0.85) 50%); 502 color: rgb(255, 255, 255); 503 } 504 .slick-prev-fa i, .slick-next-fa i{ 505 color: rgb(0, 102, 153); 506 } 507 .module, .well, .tab-content, .nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover, .nav-tabs>li>a:focus, .nav-tabs>li>a:hover, .nav-tabs.nav-justified>li.active>a, .nav-tabs.nav-justified>li.active>a:focus, .nav-tabs.nav-justified>li.active>a:hover, .nav-tab.nav-justified>li>a:focus, .nav-tabs.nav-justified>li>a:hover, .account-form-box,.account-form-box .module .module,.account-form-box .module .well,.account-form-box .well .well,.account-form-box .well .module,.module .module .module,.module .well .well,.module .module .well,.module .well .module,.well .well .well,.well .module .module,.well .well .module,.well .module .well, .froala-table.module, .froala-table td.module { 508 background-color: rgb(245, 245, 245); 509 border-color: rgb(221, 221, 221); 510 color: rgb(41, 41, 41); 511 } 512 .nav-pills > li.active a, .nav-pills > li > a:hover { 513 background-color: rgb(0, 102, 153)!important; 514 border-color: rgb(0, 102, 153)!important; 515 color: rgb(255, 255, 255)!important; 516 } 517 .sidemenu_panel .panel-heading { 518 color: rgb(41, 41, 41)!important; 519 background-color: rgb(245, 245, 245)!important; 520 } 521 .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a { 522 background: rgba(245, 245, 245,0.5); 523 color: #616161; 524 } 525 .member-profile-tabs .nav-tabs > li:not(.active) > a:hover, .login-register-tabs.nav-tabs > li:not(.active) > a:hover, .nav-tabs > li:not(.active) > a:hover { 526 background: rgba(245, 245, 245,1); 527 color: rgb(44, 44, 44); 528 }
529 .author-snapshot .well:not(.well.bg-default) { 530 background-color: rgb(245, 245, 245)!important; 531 border-color: rgb(221, 221, 221)!important; 532 color: rgb(41, 41, 41)!important; 533 } 534 .nav-tabs>li>a, .nav-pills>li>a { 535 font-weight: 600; 536 } 537 .module .help-inline,.module .help-block,.well .help-inline,.well .help-block,.account-form-box .help-inline,.account-form-box .help-block,.account-form-box p.account-tip{ 538 color: rgba(41, 41, 41,0.5); 539 } 540 #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a { 541 color: rgb(41, 41, 41) !important; 542 } 543 .popover { 544 background-color: rgb(245, 245, 245); 545 border-color: rgb(245, 245, 245); 546 padding:0; 547 text-align:left; 548 } 549 .popover-title, .popover-content { 550 background-color: rgb(245, 245, 245); 551 color: rgb(41, 41, 41); 552 border-color: rgb(245, 245, 245); 553 text-align:left; 554 } 555 .popover-content { 556 background-color: rgba(41, 41, 41,.05); 557 border-radius: 4px; 558 transform: translate(-1px, -1px); 559 width: calc(100% + 2px); 560 margin-bottom: -2px; 561 } 562 .popover.left > .arrow::after { 563 border-left-color: rgb(245, 245, 245)!important; 564 } 565 .popover.right > .arrow::after { 566 border-right-color: rgb(245, 245, 245)!important; 567 } 568 .popover.bottom > .arrow::after { 569 border-bottom-color: rgb(245, 245, 245)!important; 570 } 571 .popover.top > .arrow::after { 572 border-top-color: rgb(245, 245, 245)!important; 573 } 574 .progress, .table-view .table-view-group:nth-child(2n-1),.tab-content .well, .tab-content .module,#account-tabs .well,#account-tabs .module,.account-form-box .module,.account-form-box .well,.module .module,.well .well,.module .well,.well .module{ 575 background-color: rgb(255, 255, 255); 576 color: rgb(44, 44, 44); 577 } 578 .module h1, .module h2, .module h3, .module h4, .module h5 { 579 color: rgb(62, 62, 62); 580 } 581 .module p:not(.fr-box.fr-basic .fr-element p) { 582 color: rgb(41, 41, 41); 583 } 584 .pagination>.active>a { 585 border-color: rgba(255, 255, 255,0.2); 586 } 587 .pagination>.active>a { 588 color: rgb(255, 255, 255); 589 } 590 .pagination > .active > a:hover, .pagination > .active > a:focus { 591 border-color: rgba(255, 255, 255,0.2); 592 background-color: rgb(71, 134, 141); 593 color: rgb(255, 255, 255); 594 } 595 .pagination > li > a { 596 color: rgb(71, 134, 141); 597 border-color: rgba(71, 134, 141,0.2); 598 background-color: rgb(255, 255, 255); 599 } 600 .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { 601 background-color: rgb(71, 134, 141); 602 border-color: rgb(71, 134, 141); 603 color: rgb(255, 255, 255); 604 } 605 606 .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{ 607 background-color: rgb(250, 250, 250)!important; 608 color: rgb(41, 41, 41)!important; 609 } 610 .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover { 611 background-color: rgb(240, 52, 52)!important; 612 border-color: rgb(240, 52, 52); 613 color: rgb(255, 255, 255); 614 } 615 .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a { 616 background-color: rgb(51, 122, 183)!important; 617 color: rgb(255, 255, 255)!important; 618 } 619 .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover { 620 background-color: rgb(71, 134, 141)!important; 621 border-color: rgb(71, 134, 141); 622 color: rgb(255, 255, 255); 623 } 624 625 .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow { 626 border-color: transparent transparent transparent rgb(51, 122, 183)!important; 627 } 628 .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{ 629 border-color: rgb(51, 122, 183) rgb(51, 122, 183) rgb(51, 122, 183) transparent!important; 630 } 631 632 li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge { 633 border-color: rgb(0, 166, 128) rgb(0, 166, 128) rgb(0, 166, 128) transparent!important; 634 } 635 636 li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge { 637 border-color: rgb(250, 250, 250) rgb(250, 250, 250) rgb(250, 250, 250) transparent!important; 638 } 639 640 .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover { 641 background-color: rgb(0, 166, 128)!important; 642 color: rgb(255, 255, 255)!important; 643 } 644 645 .member_wizard2 li { 646 color: rgb(255, 255, 255); 647 border-right: 10px solid rgb(255, 255, 255); 648 } 649 650 li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow { 651 border-color: transparent transparent transparent rgb(0, 166, 128)!important; 652 } 653 654 li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{ 655 border-color: transparent transparent transparent rgb(250, 250, 250)!important; 656 } 657 658 /* Default Colors */ 659 .btn-primary, .btn-primary.disabled, .btn-primary.disabled.active, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled:focus, .btn-primary.disabled:hover, .btn-primary[disabled], .btn-primary[disabled].active, .btn-primary[disabled].focus, .btn-primary[disabled]:active, .btn-primary[disabled]:focus, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary.active, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:hover, .btn.dropdown-toggle.btn-primary,.navbar-default .navbar-nav > li > a.btn-primary, .navbar-default .navbar-nav > li > span.btn-primary,.mobile-main-menu .sidebar-nav li a.btn-primary, .mobile-main-menu .sidebar-nav li span.btn-primary { 660 background-color: rgb(0, 102, 153); 661 border-color: rgb(0, 102, 153); 662 color: rgb(255, 255, 255); 663 } 664 .btn-primary:hover, .btn-primary:focus, .btn-primary:active,.btn-primary:active:focus, .btn-primary:active:hover, .nav > li > a.btn-primary:focus, .nav > li > a.btn-primary:hover,.btn-primary.active,.open > .dropdown-toggle.btn-primary, .btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, .btn-primary:active.focus, .open>.dropdown-toggle.btn-primary:hover, .open>.dropdown-toggle.btn-primary:focus, .open>.dropdown-toggle.btn-primary.focus,a.bg-primary:focus,a.bg-primary:hover, .panel-primary .panel-heading, .btn.dropdown-toggle.btn-primary:hover,.upload-form-field,.upload-form-field:hover,.upload-form-field:active:focus,.upload-form-field:before, .label-primary[href]:focus, .label-primary[href]:hover { 665 background-color: rgba(0, 102, 153,0.95); 666 border-color: rgb(0, 102, 153); 667 color: rgb(255, 255, 255); 668 } 669 .panel-primary { 670 background-color: #d9e8f0; 671 border-color: rgb(0, 102, 153); 672 } 673 .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .
673well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary { 674 background-color: rgb(0, 102, 153); 675 color: rgb(255, 255, 255); 676 } 677 .bg-primary .badge { 678 background-color:rgb(255, 255, 255); 679 color: rgb(0, 102, 153); 680 } 681 .btn-primary.btn-outline { 682 background: transparent; 683 color: rgb(0, 102, 153); 684 transition: all 250ms ease-in-out 0ms; 685 } 686 .btn-primary.btn-outline:hover { 687 background: rgba(0, 102, 153,0.1); 688 color: rgb(0, 102, 153); 689 } 690 .alert-primary { 691 background-color:rgba(0, 102, 153,0.7); 692 border-color:rgba(0, 102, 153,0.2); 693 color: rgba(255, 255, 255,0.9); 694 } 695 .alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle { 696 background-color: #cce0eb; 697 border-color: #cce0eb; 698 color: rgb(0, 102, 153); 699 color: color-mix(in srgb, rgb(0, 102, 153) 50%, rgb(44, 44, 44) 50%); 700 } 701 .btn.dropdown-toggle.btn-primary *, .btn-primary a { 702 color: rgb(255, 255, 255); 703 } 704 .text-primary{ 705 color: rgb(0, 102, 153); 706 } 707 .btn-info, .btn-info.disabled, .btn-info.disabled.active, .btn-info.disabled.focus, .btn-info.disabled:active, .btn-info.disabled:focus, .btn-info.disabled:hover, .btn-info[disabled], .btn-info[disabled].active, .btn-info[disabled].focus, .btn-info[disabled]:active, .btn-info[disabled]:focus, .btn-info[disabled]:hover, fieldset[disabled] .btn-info, fieldset[disabled] .btn-info.active, fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:hover, .btn.dropdown-toggle.btn-info,.navbar-default .navbar-nav > li > a.btn-info, .navbar-default .navbar-nav > li > span.btn-info,.mobile-main-menu .sidebar-nav li a.btn-info, .mobile-main-menu .sidebar-nav li span.btn-info { 708 background-color: rgb(60, 187, 222); 709 border-color: rgb(60, 187, 222); 710 color: rgb(255, 255, 255); 711 } 712 .btn-info:hover, .btn-info:focus, .btn-info:active,.btn-info:active:focus, .btn-info:active:hover, .nav > li > a.btn-info:focus, .nav > li > a.btn-info:hover,.btn-info.active,.open > .dropdown-toggle.btn-info, .btn-info.active.focus, .btn-info.active:focus, .btn-info.active:hover, .btn-info:active.focus, .open>.dropdown-toggle.btn-info:hover, .open>.dropdown-toggle.btn-info:focus, .open>.dropdown-toggle.btn-info.focus,a.bg-info:focus,a.bg-info:hover, .panel-info .panel-heading, .btn.dropdown-toggle.btn-info:hover, .label-info[href]:focus, .label-info[href]:hover { 713 background-color: rgba(60, 187, 222,0.95); 714 border-color: rgb(60, 187, 222); 715 color: rgb(255, 255, 255); 716 } 717 .panel-info { 718 background-color: #e2f5fa; 719 border-color: rgb(60, 187, 222); 720 } 721 .bg-info,.progress-bar-info,.module p.bg-info,.label-info,.badge-info,.pricing_menu .title.bg-info, .well .well.bg-info, .module .well.bg-info, .well .module.bg-info,.tab-content .module.bg-info,.tab-content .well.bg-info { 722 background-color: rgb(60, 187, 222); 723 color: rgb(255, 255, 255); 724 } 725 .bg-info .badge { 726 background-color:rgb(255, 255, 255); 727 color: rgb(60, 187, 222); 728 } 729 .btn-info.btn-outline { 730 background: transparent; 731 color: rgb(60, 187, 222); 732 transition: all 250ms ease-in-out 0ms; 733 } 734 .btn-info.btn-outline:hover { 735 background: rgba(60, 187, 222,0.1); 736 color: rgb(60, 187, 222); 737 } 738 .alert-info { 739 background-color:rgba(60, 187, 222,0.7); 740 border-color:rgba(60, 187, 222,0.2); 741 color: rgba(255, 255, 255,0.9); 742 } 743 .alert-info-subtle, .label-info-subtle, .badge-info-subtle { 744 background-color: #d8f1f8; 745 border-color: #d8f1f8; 746 color: rgb(60, 187, 222); 747 color: color-mix(in srgb, rgb(60, 187, 222) 50%, rgb(44, 44, 44) 50%); 748 } 749 .btn.dropdown-toggle.btn-info *, .btn-info a { 750 color: rgb(255, 255, 255); 751 } 752 .text-info{ 753 color: rgb(60, 187, 222); 754 } 755 .btn-success, .btn-success.disabled, .btn-success.disabled.active, .btn-success.disabled.focus, .btn-success.disabled:active, .btn-success.disabled:focus, .btn-success.disabled:hover, .btn-success[disabled], .btn-success[disabled].active, .btn-success[disabled].focus, .btn-success[disabled]:active, .btn-success[disabled]:focus, .btn-success[disabled]:hover, fieldset[disabled] .btn-success, fieldset[disabled] .btn-success.active, fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:hover, .btn.dropdown-toggle.btn-success,.navbar-default .navbar-nav > li > a.btn-success, .navbar-default .navbar-nav > li > span.btn-success,.mobile-main-menu .sidebar-nav li a.btn-success, .mobile-main-menu .sidebar-nav li span.btn-success { 756 background-color: rgb(71, 134, 141); 757 border-color: rgb(71, 134, 141); 758 color: rgb(255, 255, 255); 759 } 760 .btn-success:hover, .btn-success:focus, .btn-success:active,.btn-success:active:focus, .btn-success:active:hover, .nav > li > a.btn-success:focus, .nav > li > a.btn-success:hover,.btn-success.active,.open > .dropdown-toggle.btn-success, .btn-success.active.focus, .btn-success.active:focus, .btn-success.active:hover, .btn-success:active.focus, .open>.dropdown-toggle.btn-success:hover, .open>.dropdown-toggle.btn-success:focus, .open>.dropdown-toggle.btn-success.focus,a.bg-success:focus,a.bg-success:hover, .panel-success .panel-heading, .btn.dropdown-toggle.btn-success:hover, .label-success[href]:focus, .label-success[href]:hover { 761 background-color: rgba(71, 134, 141,0.95); 762 border-color: rgb(71, 134, 141); 763 color: rgb(255, 255, 255); 764 } 765 .panel-success { 766 background-color: #e3edee; 767 border-color: rgb(71, 134, 141); 768 } 769 .bg-success,.progress-bar-success,.module p.bg-success,.label-success,.badge-success,.pricing_menu .title.bg-success, .well .well.bg-success, .module .well.bg-success, .well .module.bg-success,.tab-content .module.bg-success,.tab-content .well.bg-success { 770 background-color: rgb(71, 134, 141); 771 color: rgb(255, 255, 255); 772 } 773 .bg-success .badge { 774 background-color: rgb(255, 255, 255); 775 color: rgb(71, 134, 141); 776 } 777 .btn-success.btn-outline { 778 background: transparent; 779 color: rgb(71, 134, 141); 780 transition: all 250ms ease-in-out 0ms; 781 } 782 .btn-success.btn-outline:hover { 783 background: rgba(71, 134, 141,0.1); 784 color: rgb(71, 134, 141); 785 } 786 .alert-success { 787 background-color:rgba(71, 134, 141,0.7); 788 border-color:rgba(71, 134, 141,0.2); 789 color: rgba(255, 255, 255,0.9); 790 } 791 .alert-success-subtle, .label-success-subtle, .badge-success-subtle { 792 background-color: #dae7e8; 793 border-color: #dae7e8; 794 color: rgb(71, 134, 141); 795 color: color-mix(in srgb, rgb(71, 134, 141) 50%, rgb(44, 44, 44) 50%); 796 } 797 .btn.dropdown-toggle.btn-success *, .btn-success a { 798 color: rgb(255, 255, 255); 799 } 800 .text-success{ 801 color: rgb(71, 134, 141); 802 } 803 .btn-warning, .btn-warning.disabled, .btn-warning.disabled.active, .btn-warning.disabled.focus, .btn-warning.disabled:active, .btn-warning.disabled:focus, .btn-warning.disabled:hover, .btn-warning[disabled], .btn-warning[disabled].active, .btn-warning[disabled].focus, .btn-warning[disabled]:active, .btn-warning[disabled]:focus, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning.active, fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:hover, .btn.dropdown-toggle.btn-warning,.navbar-default .navbar-nav > li > a.btn-warning, .navbar-default .navbar-nav > li > span.btn-warning,.mobile-main-menu .sidebar-nav li a.btn-warning, .mobile-main-menu .sidebar-nav li span.btn-warning { 804 background-color: rgb(240, 52, 52); 805 border-color: rgb(240, 52, 52); 806 color: rgb(255, 255, 255); 807 } 808 .btn-warning:hover, .btn-warning:focus, .btn-warning:active,.btn-warning:active:focus, .btn-warning:active:hover, .nav > li > a.btn-warning:focus, .nav > li > a.btn-warning:hover,.btn-warning.active,.open > .dropdown-toggle.btn-warning, .btn-warning.active.focus, .btn-warning.active:focus, .btn-warning.active:hover, .btn-warning:active.focus, .open>.dropdown-toggle.btn-warning:hover, .open>.dropdown-toggle.btn-warning:focus, .open>.dropdown-toggle.btn-warning.focus,a.bg-warning:focus,a.bg-warning:hover, .panel-warning .panel-heading, .btn.dropdown-toggle.btn-warning:hover, .label-warning[href]:focus, .label-warning[href]:hover { 809 background-color: rgba(240, 52, 52,0.95); 810 border-color: rgb(240, 52, 52); 811 color: rgb(255, 255, 255); 812 } 813 .panel-warning { 814 background-color: #fde1e1; 815 border-color: rgb(240, 52, 52); 816 } 817 .bg-warning,.progress-bar-warning,.module p.bg-warning,.label-warning,.badge-warning,.pricing_menu .title.bg-warning, .well .well.bg-warning, .module .well.bg-warning, .well .module.bg-warning,.tab-content .module.bg-warning,.tab-content .well.bg-warning { 818 background-color: rgb(240, 52, 52); 819 color: rgb(255, 255, 255); 820 } 821 .bg-warning .badge { 822 background-color: rgb(255, 255, 255); 823 color: rgb(240, 52, 52); 824 } 825 .btn-warning.btn-outline { 826 background: transparent; 827 color: rgb(240, 52, 52); 828 transition: all 250ms ease-in-out 0ms; 829 } 830 .btn-warning.btn-outline:hover { 831 background: rgba(240, 52, 52,0.1); 832 color: rgb(240, 52, 52); 833 } 834 .alert-warning { 835 background-color:rgba(240, 52, 52,0.7); 836 border-color:rgba(240, 52, 52,0.2); 837 color: rgba(255, 255, 255,0.9); 838 } 839 .alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle { 840 background-color: #fcd6d6; 841 border-color: #fcd6d6; 842 color: rgb(240, 52, 52); 843 color: color-mix(in srgb, rgb(240, 52, 52) 50%, rgb(44, 44, 44) 50%); 844 } 845 .btn.dropdown-toggle.btn-warning *, .btn-warning a { 846 color: rgb(255, 255, 255); 847 } 848 .text-warning { 849 color: rgb(240, 52, 52); 850 } 851 .btn-danger, .btn-danger.disabled, .btn-danger.disabled.active, .btn-danger.disabled.focus, .btn-danger.disabled:active, .btn-danger.disabled:focus, .btn-danger.disabled:hover, .btn-danger[disabled], .btn-danger[disabled].active, .btn-danger[disabled].focus, .btn-danger[disabled]:active, .btn-danger[disabled]:focus, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger.active, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:hover, .btn.dropdown-toggle.btn-danger,.navbar-default .navbar-nav > li > a.btn-danger, .navbar-default .navbar-nav > li > span.btn-danger,.mobile-main-menu .sidebar-nav li a.btn-danger, .mobile-main-menu .sidebar-nav li span.btn-danger { 852 background-color: rgb(240, 52, 52); 853 border-color: rgb(240, 52, 52); 854 color: rgb(255, 255, 255); 855 } 856 .btn-danger:hover, .btn-danger:focus, .btn-danger:active,.btn-danger:active:focus, .btn-danger:active:hover, .nav > li > a.btn-danger:focus, .nav > li > a.btn-danger:hover,.btn-danger.active,.open > .dropdown-toggle.btn-danger, .btn-danger.active.focus, .btn-danger.active:focus, .btn-danger.active:hover, .btn-danger:active.focus, .open>.dropdown-toggle.btn-danger:hover, .open>.dropdown-toggle.btn-danger:focus, .open>.dropdown-toggle.btn-danger.focus,a.bg-danger:focus,a.bg-danger:hover, .panel-danger .panel-heading, .btn.dropdown-toggle.btn-danger:hover, .label-danger[href]:focus, .label-danger[href]:hover { 857 background-color: rgba(240, 52, 52,0.95); 858 border-color: rgb(240, 52, 52); 859 color: rgb(255, 255, 255); 860 } 861 .has-error .form-control { 862 border-color: rgb(240, 52, 52); 863 } 864 .has-error .help-block:not(.form-field-help-block), .has-error ~ .help-block:not(.form-field-help-block),.has-error .help-block:not(.form-field-help-block) a, .has-error ~ .help-block:not(.form-field-help-block) a { 865 background: rgb(240, 52, 52); 866 color: rgb(255, 255, 255) !important; 867 } 868 .has-error .checkbox, .has-error .checkbox-inline, .has-error .control-label, .has-error .help-block, .has-error .radio, .has-error .radio-inline, .has-error.checkbox label, .has-error.checkbox-inline label, .has-error.radio label, .has-error.radio-inline label { 869 color: rgb(240, 52, 52); 870 } 871 .panel-danger { 872 background-color: #fde1e1; 873 border-color: rgb(240, 52, 52); 874 } 875 .bg-danger,.progress-bar-danger,.module p.bg-danger,.label-danger,.badge-danger,.pricing_menu .title.bg-danger, .well .well.bg-danger, .module .well.bg-danger, .well .module.bg-danger,.tab-content .module.bg-danger,.tab-content .well.bg-danger { 876 background-color: rgb(240, 52, 52); 877 color: rgb(255, 255, 255); 878 } 879 .bg-danger .badge { 880 background-color: rgb(255, 255, 255); 881 color: rgb(240, 52, 52); 882 } 883 .btn-danger.btn-outline { 884 background: transparent; 885 color: rgb(240, 52, 52); 886 transition: all 250ms ease-in-out 0ms; 887 } 888 .btn-danger.btn-outline:hover { 889 background: rgba(240, 52, 52,0.1); 890 color: rgb(240, 52, 52); 891 } 892 .alert-danger { 893 background-color:rgba(240, 52, 52,0.7); 894 border-color:rgba(240, 52, 52,0.2); 895 color: rgba(255, 255, 255,0.9); 896 } 897 .alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle { 898 background-color: #fcd6d6; 899 border-color: #fcd6d6; 900 color: rgb(240, 52, 52); 901 color: color-mix(in srgb, rgb(240, 52, 52) 50%, rgb(44, 44, 44) 50%); 902 } 903 .btn.dropdown-toggle.btn-danger *, .btn-danger a { 904 color: rgb(255, 255, 255); 905 } 906 .text-danger{ 907 color: rgb(240, 52, 52); 908 } 909 .btn-default, .tags a, .btn-default.disabled, .btn-default.disabled.active, .btn-default.disabled.focus, .btn-default.disabled:active, .btn-default.disabled:focus, .btn-default.disabled:hover, .btn-default[disabled], .btn-default[disabled].active, .btn-default[disabled].focus, .btn-default[disabled]:active, .btn-default[disabled]:focus, .btn-default[disabled]:hover, fieldset[disabled] .btn-default, fieldset[disabled] .btn-default.active, fieldset[disabled] .btn-default.focu
909s, fieldset[disabled] .btn-default:active, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:hover, .btn.dropdown-toggle.btn-default, #popover .mini_profile_pic,.navbar-default .navbar-nav > li > a.btn-default, .navbar-default .navbar-nav > li > span.btn-default,.mobile-main-menu .sidebar-nav li a.btn-default, .mobile-main-menu .sidebar-nav li span.btn-default { 910 background-color: rgb(245, 245, 245); 911 border-color: rgb(245, 245, 245); 912 color: rgb(85, 85, 85); 913 } 914 .btn-default:hover, .btn-default:focus, .btn-default:active,.btn-default:active:focus, .btn-default:active:hover,.tags a:hover, .nav > li > a.btn-default:focus, .nav > li > a.btn-default:hover,.btn-default.active,.open > .dropdown-toggle.btn-default, .btn-default.active.focus, .btn-default.active:focus, .btn-default.active:hover, .btn-default:active.focus, .open>.dropdown-toggle.btn-default:hover, .open>.dropdown-toggle.btn-default:focus, .open>.dropdown-toggle.btn-default.focus,a.bg-default:focus,a.bg-default:hover, .panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading, .btn.dropdown-toggle.btn-default:hover, #popover .mini_profile_pic, .label-default[href]:focus, .label-default[href]:hover { 915 background-color: rgba(245, 245, 245,0.95); 916 border-color: rgb(245, 245, 245); 917 color: rgb(85, 85, 85); 918 } 919 .sidemenu_panel .panel-default .panel_heading { 920 background-color: rgb(245, 245, 245)!important; 921 border-color: rgb(245, 245, 245)!important; 922 color: rgb(85, 85, 85)!important; 923 } 924 .panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading { 925 926 box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset; 927 background-color: rgb(245, 245, 245); 928 } 929 .panel-default, .member_accounts .panel-default { 930 931 background-color: rgba(245, 245, 245,0.15); 932 border-color: #fefefe; 933 border-color: color-mix(in srgb,rgb(245, 245, 245) 100%,rgba(245, 245, 245) 10%); 934 } 935 .member_admin_sidemenu .panel-default { 936 background-color: transparent; 937 } 938 .bg-default,.progress-bar-default,.module p.bg-default,.label-default,.badge-default,.pricing_menu .title.bg-default, .well .well.bg-default, .module .well.bg-default, .well .module.bg-default,.tab-content .module.bg-default,.tab-content .well.bg-default { 939 background-color: rgb(245, 245, 245); 940 color: rgb(85, 85, 85); 941 } 942 .bg-default .badge { 943 background-color: rgb(85, 85, 85); 944 color: rgb(245, 245, 245); 945 } 946 .btn-default.btn-outline { 947 background: transparent; 948 color: rgb(245, 245, 245); 949 transition: all 250ms ease-in-out 0ms; 950 } 951 .btn-default.btn-outline:hover { 952 background: rgba(245, 245, 245,0.1); 953 color: rgb(245, 245, 245); 954 } 955 .alert-default { 956 background-color:rgb(245, 245, 245); 957 border-color:rgb(245, 245, 245); 958 color: rgb(85, 85, 85); 959 } 960 .alert-default-subtle, .label-default-subtle, .badge-default-subtle { 961 background-color:rgba(245, 245, 245,0.5); 962 border-color: rgba(245, 245, 245,0.5); 963 color: rgb(85, 85, 85); 964 color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(44, 44, 44) 50%); 965 } 966 .btn.dropdown-toggle.btn-default *, .btn-default a { 967 color: rgb(85, 85, 85); 968 } 969 .text-default{ 970 color: rgb(245, 245, 245); 971 } 972 .btn-secondary, .btn.dropdown-toggle.btn-secondary,.navbar-default .navbar-nav > li > a.btn-secondary, .navbar-default .navbar-nav > li > span.btn-secondary,.mobile-main-menu .sidebar-nav li a.btn-secondary, .mobile-main-menu .sidebar-nav li span.btn-secondary { 973 background-color: rgb(44, 44, 44); 974 border: 1px solid rgb(44, 44, 44); 975 color: rgb(255, 255, 255); 976 } 977 .btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active,.btn-secondary:active:focus, .btn-secondary:active:hover, .nav > li > a.btn-secondary:focus, .nav > li > a.btn-secondary:hover,.btn-secondary.active,.open > .dropdown-toggle.btn-secondary, .btn-secondary.active.focus, .btn-secondary.active:focus, .btn-secondary.active:hover, .btn-secondary:active.focus, .open>.dropdown-toggle.btn-secondary:hover, .open>.dropdown-toggle.btn-secondary:focus, .open>.dropdown-toggle.btn-secondary.focus,a.bg-secondary:focus,a.bg-secondary:hover,.btn.dropdown-toggle.btn-secondary:hover, .panel-secondary .panel-heading, .label-secondary[href]:focus, .label-secondary[href]:hover { 978 background-color: rgba(44, 44, 44,0.95); 979 border-color: rgb(44, 44, 44); 980 color: rgb(255, 255, 255); 981 } 982 .bg-secondary,.progress-bar-secondary,.module p.bg-secondary,.module p.bg-secondary:not(.fr-box.fr-basic .fr-element p),.label-secondary,.badge-secondary,.pricing_menu .title.bg-secondary, .well .well.bg-secondary, .module .well.bg-secondary, .well .module.bg-secondary,.tab-content .module.bg-secondary,.tab-content .well.bg-secondary { 983 background-color: rgb(44, 44, 44); 984 color: rgb(255, 255, 255); 985 } 986 .bg-secondary .badge { 987 background-color:rgb(255, 255, 255); 988 color: rgb(44, 44, 44); 989 } 990 .btn-secondary.btn-outline { 991 background: transparent; 992 color: rgb(44, 44, 44); 993 transition: all 250ms ease-in-out 0ms; 994 } 995 .btn-secondary.btn-outline:hover { 996 background: rgba(44, 44, 44,0.1); 997 color: rgb(44, 44, 44); 998 } 999 .panel-secondary { 1000 background-color: #dfdfdf; 1001 border-color: rgb(44, 44, 44); 1002 } 1003 .alert-secondary { 1004 background-color:rgb(44, 44, 44); 1005 border-color:rgb(44, 44, 44); 1006 color: rgb(255, 255, 255); 1007 } 1008 .alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle { 1009 background-color:rgba(44, 44, 44,0.8); 1010 border-color: rgba(44, 44, 44,0.5);
1011 color: rgb(255, 255, 255); 1012 } 1013 .btn-outline { 1014 -webkit-backdrop-filter: blur(5px); 1015 backdrop-filter: blur(5px); 1016 } 1017 .btn-body, .btn-body.disabled, .btn-body.disabled.active, .btn-body.disabled.focus, .btn-body.disabled:active, .btn-body.disabled:focus, .btn-body.disabled:hover, .btn-body[disabled], .btn-body[disabled].active, .btn-body[disabled].focus, .btn-body[disabled]:active, .btn-body[disabled]:focus, .btn-body[disabled]:hover, fieldset[disabled] .btn-body, fieldset[disabled] .btn-body.active, fieldset[disabled] .btn-body.focus, fieldset[disabled] .btn-body:active, fieldset[disabled] .btn-body:focus, fieldset[disabled] .btn-body:hover, .btn.dropdown-toggle.btn-body,.navbar-default .navbar-nav > li > a.btn-body, .navbar-default .navbar-nav > li > span.btn-body,.mobile-main-menu .sidebar-nav li a.btn-body, .mobile-main-menu .sidebar-nav li span.btn-body { 1018 background-color: rgb(255, 255, 255); 1019 border: 1px solid rgb(255, 255, 255); 1020 color: rgb(44, 44, 44); 1021 } 1022 .btn-body:hover, .btn-body:focus, .btn-body:active,.btn-body:active:focus, .btn-body:active:hover, .nav > li > a.btn-body:focus, .nav > li > a.btn-body:hover,.btn-body.active,.open > .dropdown-toggle.btn-body, .btn-body.active.focus, .btn-body.active:focus, .btn-body.active:hover, .btn-body:active.focus, .open>.dropdown-toggle.btn-body:hover, .open>.dropdown-toggle.btn-body:focus, .open>.dropdown-toggle.btn-body.focus,a.bg-body:focus,a.bg-body:hover, .panel-body .panel-heading, .btn.dropdown-toggle.btn-body:hover, .label-body[href]:focus, .label-body[href]:hover { 1023 background-color: rgba(255, 255, 255,0.95); 1024 border: 1px solid rgb(255, 255, 255); 1025 color: rgb(44, 44, 44); 1026 } 1027 .btn.btn-body.dropdown-toggle * { 1028 color: rgb(44, 44, 44) 1029 } 1030 .btn-body.dropdown-toggle + ul li, .daterangepicker .ranges { 1031 color: #333; 1032 } 1033 .bg-body { 1034 background: rgb(255, 255, 255); 1035 color: rgb(44, 44, 44); 1036 } 1037 .bg-content-box { 1038 background: rgb(245, 245, 245); 1039 color: rgb(41, 41, 41); 1040 } 1041 .bg-content-box-border { 1042 background: rgb(221, 221, 221); 1043 } 1044 .btn.dropdown-toggle.btn-secondary *, .btn-secondary a { 1045 color: rgb(255, 255, 255); 1046 } 1047 .text-secondary { 1048 color: rgb(44, 44, 44); 1049 } 1050 .text-body { 1051 color: rgb(255, 255, 255); 1052 } 1053 .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary { 1054 border-radius: 10px; 1055 background-color: rgba(44, 44, 44,0.2); 1056 } 1057 1058 /* Footer Newsletter Row */ 1059 .newsletter_row .alert { 1060 color: rgb(255, 255, 255); 1061 } 1062 .newsletter_row { 1063 background-color: rgb(0, 102, 153); 1064 color: rgb(255, 255, 255); 1065 } 1066 .newsletter_row input[type="submit"],.newsletter_footer_button { 1067 background-color: rgba(0, 166, 128,0.97); 1068 color: rgb(255, 255, 255); 1069 border-color: rgb(0, 166, 128); 1070 } 1071 .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus { 1072 background-color: rgb(0, 166, 128); 1073 color: rgb(255, 255, 255); 1074 } 1075 .newsletter_button_left { 1076 border-right: 1px solid rgba(255, 255, 255,0.2); 1077 } 1078 .newsletter_button_right { 1079 border-left: 1px solid rgba(255, 255, 255,0.2); 1080 } 1081 .newsletter_row small.help-block { 1082 background: rgb(255, 255, 255); 1083 margin-top: -5px; 1084 float: left; 1085 padding: 8px; 1086 border-radius: 1px; 1087 color: rgb(0, 102, 153); 1088 text-transform: capitalize; 1089 } 1090 .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{ 1091 color: rgb(255, 255, 255); 1092 } 1093 @media only screen and (max-width: 767px) { 1094 .newsletter_button_right,.newsletter_button_left{ 1095 border: none; 1096 margin: 5px 0; 1097 } 1098 } 1099 1100 /* Font Sizes */ 1101 1102 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 1103 font-size: 16px; 1104 } 1105 .header .logo { 1106 font-size: 36px; 1107 } 1108 .homepage_title h1, .homepage_settings h1 { 1109 letter-spacing: -1px; 1110 font-size: 80px; 1111 margin-bottom: 20px; 1112 } 1113 @media only screen and (max-width: 768px) { 1114 .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;} 1115 } 1116 .homepage_settings h2 { 1117 font-size: 28px; 1118 } 1119 1120 .ui-rangeSlider-bar{ 1121 background: rgb(0, 102, 153)!important; 1122 } 1123 1124 1125 1126 @media only screen and (max-width: 1024px){ 1127 .modal {margin-top: 40px;} 1128 } 1129 @media only screen and (max-width: 768px){ 1130 .modal {margin-top: 60px;} 1131 } 1132 1133 /* Calendar Styles */ 1134 1135 #cal-slide-content { 1136 color: rgb(85, 85, 85)!important; 1137 background-color: rgb(245, 245, 245)!important; 1138 -webkit-box-shadow: none!important; 1139 box-shadow: none!important; 1140 } 1141 #cal-slide-content a.event-item { 1142 color: rgb(85, 85, 85)!important; 1143 font-weight:bold!important; 1144 } 1145 #cal-slide-content a.event-item small { 1146 display: inline-block; 1147 } 1148 .cal-month-box, .cal-year-box, .cal-week-box { 1149 border: 1px solid rgb(221, 221, 221)!important; 1150 } 1151 .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid { 1152 border-bottom: 1px solid rgb(221, 221, 221)!important; 1153 } 1154 .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] { 1155 border-right: 1px solid rgb(221, 221, 221)!important; 1156 } 1157 .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) { 1158 background-color: rgb(255, 255, 255)!important; 1159 } 1160 .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) { 1161 color: rgb(85, 85, 85)!important; 1162 } 1163 .cal-day-today span[data-cal-date] { 1164 color: rgb(44, 44, 44)!important; 1165 } 1166 .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child { 1167 border: 0!important; 1168 } 1169 .cal-row-head { 1170 background: rgb(245, 245, 245)!important; 1171 } 1172 .day-highlight:hover, .day-highlight { 1173 background-color: rgb(221, 221, 221)!important; 1174 } 1175 .cal-event-list .event.pull-left { 1176 background-color: rgb(44, 44, 44)!important; 1177 opacity: 0.4; 1178 margin-top: 7px!important; 1179 } 1180 .cal-day-today { 1181 background-color: rgb(221, 221, 221)!important; 1182 } 1183 #cal-day-tick { 1184 border: 1px solid rgb(221, 221, 221)!important; 1185 background-color: rgb(221, 221, 221)!important; 1186 } 1187 .cal-day-weekend span[data-cal-date]{
1188 color: rgb(44, 44, 44)!important; 1189 } 1190 .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs { 1191 border-radius: 10px; 1192 background: #151515!important; 1193 } 1194 .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsOverflow { 1195 border-radius:0; 1196 } 1197 1198 #first_container .favorite, #first_container .fa.favorite { 1199 color: rgb(170, 184, 194); 1200 background: rgb(245, 245, 245); 1201 border: 1px solid rgb(245, 245, 245); 1202 white-space:nowrap!important; 1203 height:24px; 1204 padding:0 6px; 1205 border-radius:8px; 1206 } 1207 #first_container .favorite span, #first_container .fa.favorite span { 1208 font-family: 'Cabin'; 1209 white-space:nowrap!important; 1210 } 1211 #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) { 1212 color: rgb(226, 38, 77); 1213 } 1214 #first_container .favorite::after, #first_container .fa.favorite::after { 1215 font-family: 'Cabin'; 1216 margin-left: 3px; 1217 } 1218 #first_container .favorite span, #first_container .fa.favorite span{ 1219 padding-left: 4px; 1220 font-family: 'Cabin'; 1221 font-size: 11px; 1222 letter-spacing:.5px; 1223 top:-1px; 1224 position:relative; 1225 font-weight:700; 1226 } 1227 #first_container .favorite span:empty, #first_container .fa.favorite span:empty { 1228 padding: 0; 1229 } 1230 #first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number { 1231 padding: 1px 0; 1232 border-radius: 100px; 1233 display: inline-block; 1234 font-weight: bold; 1235 min-width: 15px; 1236 font-size: .8em; 1237 vertical-align: bottom; 1238 height: 15px; 1239 line-height: 13px; 1240 margin-left: 3px; 1241 text-align: center; 1242 } 1243 #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number { 1244 background: rgb(226, 38, 77); 1245 color: #fff; 1246 } 1247 1248 span.checkbox_value::after { 1249 content: ', '; 1250 } 1251 1252 span.checkbox_value:last-child::after { 1253 content: ''; 1254 } 1255 1256 .member_results .grid_element{ 1257 position:relative; 1258 overflow:hidden; 1259 display: inline-block; 1260 width:100%; 1261} 1262.member_results .grid_element::before { 1263 position: absolute; 1264 top: 24px; 1265 text-align: center; 1266 width: 200px; 1267 left: -62px; 1268 transform: rotate(-45deg); 1269 -webkit-transform: rotate(-45deg); 1270 z-index: 1; 1271 line-height: 1.2em; 1272 padding: 6px 0; 1273 font-weight: bold; 1274 letter-spacing: 1px; 1275} 1276@media only screen and (max-width: 767px) { 1277 .member_results .grid-container > hr { 1278 border-color: transparent; 1279 } 1280 .member_results .grid_element{ 1281 overflow:visible; 1282 } 1283 .member_results .grid_element::before { 1284 top: -19px!important; 1285 transform: rotate(0deg); 1286 -webkit-transform: rotate(0deg); 1287 font-size: 10px !important; 1288 letter-spacing: 0; 1289 width: auto; 1290 padding: 3px 6px; 1291 } 1292} 1293 1294 1295 1296 1297 1298 /* Homepage Sections Background Color Logic */ 1299 1300 1301 .homepage-section-1 { 1302 padding: 40px 0 40px; 1303 } 1304 1305 1306 .homepage-section-1 { 1307 background: rgb(75, 183, 179); 1308 } 1309 1310 1311 .homepage-section-2 { 1312 padding: 40px 0 40px; 1313 } 1314 1315 1316 .homepage-section-3 { 1317 padding: 40px 0 40px; 1318 } 1319 1320 1321 .homepage-section-4 { 1322 padding: 40px 0 40px; 1323 } 1324 1325 1326 .homepage-section-5 { 1327 padding: 40px 0 40px; 1328 } 1329 1330 1331 .homepage-section-6 { 1332 padding: 40px 0 40px; 1333 } 1334 1335 1336 .homepage-section-7 { 1337 padding: 40px 0 40px; 1338 } 1339 1340 1341 .homepage-section-8 { 1342 padding: 40px 0 40px; 1343 } 1344 1345 1346 .homepage-section-9 { 1347 padding: 40px 0 40px; 1348 } 1349 1350 1351 .homepage-section-10 { 1352 padding: 40px 0 40px; 1353 } 1354 1355 1356 .homepage-section-11 { 1357 padding: 40px 0 40px; 1358 } 1359 1360 1361 .homepage-section-12 { 1362 padding: 40px 0 40px; 1363 } 1364 1365 1366 .homepage-section-13 { 1367 padding: 40px 0 40px; 1368 } 1369 1370 1371 .homepage-section-14 { 1372 padding: 40px 0 40px; 1373 } 1374 1375 1376 .homepage-section-15 { 1377 padding: 40px 0 40px; 1378 } 1379 1380 1381 /* Additional Settings */ 1382 1383 1384 /* Streaming Widgets Title Settings */ 1385 1386 .streaming-title { 1387 text-align: left; 1388 font-size: 48px; 1389 line-height:1.5em; 1390 font-weight: normal; 1391 font-family: 'Roboto'; 1392 padding-bottom: 60px; 1393 } 1394 1395 @media only screen and (max-width: 990px) { 1396 .streaming-title { 1397 line-height:1.1em; 1398 } 1399 } 1400 1401 .streaming-title + hr { 1402 display: none; 1403 } 1404 1405 .homepage-join-module .module h2:first-of-type { 1406 color: rgb(62, 62, 62); 1407 } 1408 1409 .homepage-join-module .module{ 1410 background: rgb(238, 238, 238); 1411 border-color: rgb(75, 183, 179); 1412 } 1413 1414 .homepage-about-module .module h2:first-of-type { 1415 color: rgb(62, 62, 62); 1416 } 1417 1418 .homepage-about-module .module{ 1419 background: rgb(238, 238, 238); 1420 border-color: rgb(75, 183, 179); 1421 1422 } 1423 1424 .the-post-description > :is(h2, h3, h4, h5):not(:first-child) { 1425 font-weight: 600; 1426 margin-top: 20px; 1427 } 1428 1429 /* Keep: Ensure ul/ol respect padding and margins */ 1430 .the-post-description > :is(ul, ol) { 1431 display: flow-root; 1432 } 1433 .the-post-description li { 1434 margin-bottom: 8px; 1435 } 1436
1437 .btn:not(#refcode_submit):not(.input-group-btn .btn):not(.logo-preview-input):not(.cover-preview-input):not(.member_login):not(.img-circle):not(.submit_reply):not(.submit_comment):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top):not(.btn-facebook), .btn-sm:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), .btn-xs:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), button:not(.social_share_buttons button):not(.social_share_buttons a):not(#refcode_submit):not(.input-group-btn button), .btn-group-lg > .btn, .btn-lg, .btn-lg, .btn-xl, .input-group-sm > .input-group-btn > .btn, .favorite, .tags a, select#sid.input-lg, select#tid.input-lg, select#ttid.input-lg, select.combobox.input-lg, select#bd-chained.input-lg, select#category-chained.input-lg, select.infinite-chained.input-lg, select.subcategory-chained.input-lg, select.search-chained.input-lg, select#country-chained.input-lg, select#state-chained.input-lg, select#country-chained-2.input-lg, select#state-chained-2.input-lg, select#profession_id.input-lg, [name^="bd_phone_country_code"].input-lg, select.input-lg, select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-chained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] { 1438 border-radius: 0px!important; 1439 } 1440 1441 .write_comment_container, .tab-content, .well:not(.well .well):not(.module .well):not(.tab-content .well):not(.well.make-connection):not(.slick-slide .well), .module:not(.module .module):not(.well .module):not(.tab-content .module):not(.search_box .module):not(.posted-by-snippet), .panel, .pic:not(.slick-slide .pic), .member_accounts > .account-form-box { 1442 box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a; 1443 } 1444 1445 .img-circle, .img-rounded.img-circle, .img-circle img, .img-rounded.img-circle img, img.fr-dib.img-circle, img.fr-dib.img-rounded.img-circle { 1446 border-radius:1000px!important; 1447 } 1448 1449 .img-rounded img, img.fr-dib.img-rounded{ 1450 border-radius: 10px!important; 1451 } 1452 1453 /* Google Translate Module */ 1454 .skiptranslate{font-size:0} 1455 .goog-te-gadget-simple{border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;color:#555} 1456 .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important} 1457 .goog-te-gadget .goog-te-combo{margin-bottom:-4px} 1458 .skiptranslate.goog-te-gadget select{border:1px solid #ddd;border-radius:3px;font-size:12px;padding:2px 4px;width:100%;background:#fff;margin:0;height:30px;line-height:30px;display:block;color:#555;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} 1459 @media only screen and (max-width: 1100px) { 1460 .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px} 1461 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important} 1462 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px} 1463 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important} 1464 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important} 1465 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px} 1466 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;} 1467 } 1468 @media only screen and (max-width: 767px) { 1469 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important} 1470 } 1471 1472 1473 1474</style> 1475 1476 <!-- ON-PAGE CSS FUNCTIONS --> 1477 <style type="text/css"> 1478 .search-con { 1479 font-size: 18px; 1480 font-weight: 600px; 1481 color: rgb(255, 255, 255); 1482 1483} 1484.TopSection { 1485 padding-top: 10px; 1486 border: 3px outset Silver; 1487 background-color: LightSlateGray; 1488 text-align: center; 1489 margin: auto; 1490 display: block !important; 1491 font-size: 20px; 1492} 1493.con-us { 1494 font-size: 18px; 1495 font-weight: 600px; 1496 color: rgb(255, 255, 255); 1497 1498} 1499.m-t-li { 1500 margin-bottom: 5px; 1501} 1502.footer-mg{ 1503 margin-top: 2rem; 1504} 1505 1506 1507/* 1508#hero-divider .btn{ 1509 background: transparent; 1510 border-color: #fff; 1511}
1512body, .modal-header, .modal-content, .modal-body, .modal-footer{ 1513 line-height: 1.6em; 1514 letter-spacing: 0.5px; 1515} 1516p{ 1517 margin-bottom: 20px !important; 1518} 1519.spacialimg{ 1520 border: 3px solid rgb(116, 121, 125); 1521 padding: 7px; 1522 border-radius: 10px; 1523 box-shadow: 0px 1px 8px 2px #707070; 1524 margin-bottom: 10px; 1525} 1526.feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary { 1527 border: 3px solid rgb(116, 121, 125); 1528 padding: 7px; 1529 border-radius: 10px; 1530 box-shadow: 0px 0px 5px 0px #707070; 1531 margin-bottom: 10px; 1532} 1533.search_result.member-level-4 .mid_section a.h3{ 1534 border-bottom: 1px solid #ddd; 1535 display: block; 1536 padding-bottom: 10px; 1537 margin-top: 5%; 1538} 1539.search_result.member-level-4 .mid_section{ 1540 padding-left:4%; 1541} 1542.footer{ 1543 padding:0px; 1544} 1545.footer_menu li{ 1546 display:none; 1547} 1548.footer_menu li.col-md-12:last-child,.footer_menu li.col-md-12:last-child li{ 1549 display:inline-block; 1550} 1551.footer_menu ul{ 1552 margin-bottom: 0px; 1553} 1554.homepage_steps .fa { 1555 font-size: 35px; 1556} 1557.homepage_steps { 1558 font-size: 15px; 1559 padding: 60px 0; 1560} 1561.clearfix-lg { 1562 display:none; 1563} 1564.homepage-section-2, .homepage-section-3, .homepage-section-4{ 1565 padding: 60px 0; 1566} 1567.recent-member img.img-rounded{ 1568 border-radius:0!important; 1569} 1570.visit-westminster-quote{ 1571 padding: 50px 0; 1572 font-size: 34px; 1573 line-height: normal; 1574} 1575.visit-westminster-section2 { 1576 background: #FCF8ED; 1577 display: inline-block; 1578 width: 100%; 1579} 1580.visit-westminster-section2 h2 { 1581 text-align: center; 1582 margin-top: 50px; 1583 color: #bc9b5d; 1584 font-size: 60px; 1585} 1586.visit-westminster-section2 h5 { 1587 text-align: center; 1588 font-size: 16px; 1589 color: #3983BD; 1590 margin-bottom: 20px; 1591} 1592.recent-member .well a.h4{ 1593 color:rgb(41,41,41); 1594} 1595.shopping-section-common img{ 1596 width:100%; 1597} 1598.shopping-section-common h2{ 1599 margin-top: 50px; 1600 text-align: center; 1601} 1602.shopping-section-common h4 { 1603 text-align: center; 1604 font-size: 15px; 1605 text-transform: uppercase; 1606 margin-bottom: 20px; 1607} 1608.shopping-section-common { 1609 display: inline-block; 1610 width: 100%; 1611} 1612.tourist-info-section2 .col-md-4.text-right img{ 1613 height:571px; 1614} 1615.stay-carousel { 1616 height: 400px; 1617 margin: 0 auto; 1618 overflow: hidden; 1619 max-width: 700px; 1620 width:100%; 1621 margin-bottom:20px; 1622} 1623.stay-carousel .item img{ 1624 width:100%; 1625} 1626.about-section-common { 1627 display: inline-block; 1628 width: 100%; 1629} 1630.about-section1, .about-section3 { 1631 background: #EAF4F6; 1632} 1633 1634 1635 1636 1637about-section1 img{ 1638 width:100%; 1639} 1640.about-section3-bck { 1641 background: url(/images/about2.webp); 1642 background-repeat: repeat; 1643 background-size: auto; 1644 background-position: center center; 1645 height:900px; 1646 margin-bottom: 50px; 1647} 1648.board-directors-section-common { 1649 display: inline-block; 1650 width: 100%; 1651 margin-top: 20px; 1652} 1653.board-directors-section-common p span { 1654 display: inline-block; 1655 width: 100%; 1656} 1657.board-directors-section-common .col-md-12 { 1658 max-width: 768px; 1659 margin: 10px auto; 1660 position: relative; 1661 float: none; 1662 width:100%; 1663} 1664.city-council-section-common { 1665 display: inline-block; 1666 width: 100%; 1667 padding: 40px 0; 1668} 1669.city-directory-section-common{ 1670 display: inline-block; 1671 width: 100%; 1672 padding: 40px 0; 1673} 1674.city-directory-bottom-section{ 1675 margin-top: 40px; 1676} 1677.city-directory-section-common span{ 1678 display: inline-block; 1679 width: 100%; 1680} 1681.city-directory-section-common h3 { 1682 margin-top: 25px; 1683 display: inline-block; 1684width: 100%; 1685} 1686.city-council-section-common span{ 1687 display: inline-block; 1688width: 100%; 1689} 1690.member-directory .col-md-3{ 1691 margin-bottom: 10px; 1692} 1693 1694 1695.fr-view .fr-img-caption .fr-img-wrap .custom-img{ 1696 1697 width: 60%; 1698} 1699 1700 1701@media only screen and (max-width: 767px) { 1702 #website_logo{ 1703 margin-top:20px; 1704 } 1705 1706 .fr-view table{ 1707 text-align: center; 1708 } 1709 1710 .fr-view .froala-table .second-row{ 1711 display: flex; 1712 flex-direction: column-reverse; 1713 1714 1715 } 1716 1717 .header .navbar-default{ 1718 1719 background-color: #F2F2F2; 1720} 1721 1722 .footer{ 1723 background-color: #3A3A3A; 1724 1725 } 1726 1727} 1728*/ 1729.container.d-flex.main-class { 1730 margin-top: -20px; 1731 margin-left: -20px; 1732} 1733/*@media only screen and (max-width: 705px) { 1734 .card { 1735 width: 30px; 1736} 1737}*/ 1738/*@media only screen and (max-width: 470px) { 1739 .card { 1740 padding-top: 3px; 1741} 1742}*/ 1743@media only screen and (min-width: 650px) { 1744img.card-icons { 1745 min-width: 50px; 1746} 1747} 1748@media only screen and (max-width: 649px) { 1749img.card-icons { 1750 min-width: 30px; 1751} 1752} 1753.col-md-6.col-sm-6.col-xs-6.d-flex.justify-content-end { 1754 display: flex; 1755} 1756@media only screen and (max-width: 370px) { 1757.card { 1758 margin-left: -30px; 1759} 1760}@media only screen and (max-width: 1024px){ 1761 .fr-view .froala-table td{ 1762 position: relative; 1763 min-height: 1px; 1764 padding: 5px 15px; 1765 display: inline-flex; 1766 flex-direction: column; 1767 } 1768 1769 body > div.homepage-sections.fr-view > div.content-container.custom-homepage-content.homepage-section-3 > div{ 1770 padding-left: 0 !important; 1771 padding-right: 0 !important; 1772 margin-left: 0 !important; 1773 margin-right: 0 !important; 1774 } 1775 1776 .custom-img, .fr-dib { 1777 width: 100% !important; 1778 } 1779} </style> 1780 <!-- Best of Westminster 2026 voting banner - added 2026-07-15 --> 1781<style> 1782@keyframes bow2026-nudge { 0%,100% { transform: translateX(0); } 50% { transform: translateX(7px); } } 1783#bow2026-banner .bow2026-finger { display:inline-block; animation: bow2026-nudge 1s ease-in-out infinite; vertical-align:middle; font-size:20px; margin:0 4px 0 10px; } 1784@media (prefers-reduced-motion: reduce) { #bow2026-banner .bow2026-finger { animation: none; } } 1785#bow2026-banner { position: -webkit-sticky; position: sticky; top: 0; } 1786.bow2026-menu-close { display: none !important; } 1787@media only screen and (max-width: 1100px) { 1788 html { background: #ffffff; } 1789 #bow2026-banner { position: fixed; top: 0; left: 0; right: 0; z-index: 3001; } 1790 .header nav.navbar-default { top: var(--bow2026-h, 42px); background: transparent; border: none; box-shadow: none; } 1791 .header nav.navbar-default .navbar-header { position: relative; z-index: 99999; } 1792 .header nav.navbar-default .navbar-toggle { background-color: #1e5c63; border-color: rgba(255,255,255,0.55); margin-right: 10px; position: relative; z-index: 99999; }
1793 .header nav.navbar-default .navbar-toggle .icon-bar { background-color: #ffffff; } 1794 .header nav.navbar-default .navbar-collapse { background-color: #1e5c63; border: none; } 1795 .header { margin-top: calc(50px + var(--bow2026-h, 42px)); } 1796 .mobile-main-menu { top: calc(var(--bow2026-h, 42px) + 50px) !important; height: calc(100vh - var(--bow2026-h, 42px) - 50px) !important; } 1797 .bow2026-menu-close { display: block !important; background: rgba(0,0,0,0.28) !important; border-bottom: 1px solid rgba(255,255,255,0.35); position: relative; min-height: 44px; } 1798 .bow2026-menu-close::before { content: "â Close Menu"; color: #ffffff; font-weight: bold; display: inline-block; padding: 12px 0 12px 10px; } 1799 .bow2026-menu-close a { position: absolute !important; top: 0; left: 0; width: 100% !important; height: 100%; padding: 0 !important; float: none !important; margin: 0 !important; } 1800} 1801</style> 1802<div id="bow2026-banner" style="background:#1e5c63;color:#ffffff;text-align:center;padding:10px 14px;font-size:15px;line-height:1.6;z-index:9999;"> 1803 <span style="vertical-align:middle;">ð <strong>Best of Westminster 2026</strong> â Help your favorite local businesses win!</span><span class="bow2026-finger">ð</span><a href="https://www.surveymonkey.com/r/BestofWestminster2026" target="_blank" rel="noopener" style="display:inline-block;background:#e8262c;color:#ffffff;font-weight:bold;text-decoration:none;padding:4px 18px;border-radius:4px;vertical-align:middle;white-space:nowrap;">Vote Now</a> 1804</div>
1805<script> 1806(function(){ 1807 function bowSize(){ var b=document.getElementById("bow2026-banner"); if(!b) return; 1808 document.documentElement.style.setProperty("--bow2026-h", b.offsetHeight+"px"); } 1809 function bowClose(){ 1810 var lists=document.querySelectorAll(".header .mobile-main-menu ul.sidebar-nav, .header nav.navbar-default .navbar-collapse ul.navbar-nav"); 1811 for(var i=0;i<lists.length;i++){ 1812 var ul=lists[i]; 1813 var li=ul.querySelector(".bow2026-menu-close"); 1814 if(!li){ 1815 li=document.createElement("li"); 1816 li.className="bow2026-menu-close"; 1817 var a=document.createElement("a"); 1818 a.href="#"; a.setAttribute("aria-label","Close Menu"); 1819 li.appendChild(a); 1820 var cf=document.createElement("div"); cf.className="clearfix"; li.appendChild(cf); 1821 } 1822 if(ul.firstElementChild!==li){ ul.insertBefore(li, ul.firstChild); } 1823 li.style.setProperty("display","block","important"); 1824 var la=li.querySelector("a"); 1825 if(la){ if(la.firstChild){ la.textContent=""; } la.style.setProperty("display","block","important"); } 1826 var homeA=ul.querySelector('a[href="/home"]'); 1827 if(homeA){ 1828 homeA.style.setProperty("display","inline-block","important"); 1829 if(homeA.parentElement && homeA.parentElement.tagName==="LI"){ homeA.parentElement.style.setProperty("display","block","important"); } 1830 } 1831 var kids=ul.children; 1832 for(var k=0;k<kids.length;k++){ 1833 if(kids[k]!==li && kids[k].style && kids[k].style.display==="none"){ kids[k].style.setProperty("display","block","important"); } 1834 } 1835 } 1836 } 1837 function bowInit(){ bowSize(); bowClose(); } 1838 window.addEventListener("resize", bowSize); 1839 window.addEventListener("load", bowInit); 1840 setTimeout(bowInit, 2000); 1841 document.addEventListener("click", function(e){ if(e.target && e.target.closest && e.target.closest(".navbar-toggle")){ setTimeout(bowClose, 400); } }); 1842 /* bow2026-delegated */ 1843 document.addEventListener("click", function(e){ var c=(e.target && e.target.closest) ? e.target.closest(".bow2026-menu-close") : null; if(c){ e.preventDefault(); var t=document.querySelector(".header nav.navbar-default .navbar-toggle"); if(t){ t.click(); } } }, true); 1844 document.addEventListener("DOMContentLoaded", bowInit); 1845 bowInit(); 1846})(); 1847</script>
1847 1848<!-- End Best of Westminster 2026 banner --> 1849<div class="header"> 1850 <div class="container"> 1851 <div class="row header-main-row"> 1852 <style type='text/css'> .logo-text:has(.logo_title:empty) { 1853 display:none 1854} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container"> 1855 <a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.westminsterchamber.org" title="Westminster Chamber of Commerce"> 1856 <img width="450" height="65" src="/images/Logo/change-logo.png" alt="Westminster Chamber of Commerce"> 1857 </a> 1858 <div class="clearfix"></div> 1859</div> 1860 <style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query { 1861 background-color: white !important; 1862} 1863.mini-nav:not(:has(li)) { 1864 display: none!important; 1865} 1866/* Parent Container - Main List */ 1867.mini-nav li:has(ul) { 1868 position: relative; 1869 border-radius: 8px 8px 0 0; 1870} 1871.mini-nav > li:has(ul) { 1872 padding-left: 0; 1873 padding-right: 0; 1874 background: rgb(255, 255, 255); 1875} 1876.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span { 1877 padding: 10px 15px; 1878 margin: 0!important; 1879} 1880.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) { 1881 box-shadow: 0 -1px 3px rgba(118, 118, 118,0.25); 1882} 1883/* Parent Links */ 1884.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) { 1885 display:inline-block; 1886 border-radius: 8px 8px 0 0; 1887} 1888.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span { 1889 background: rgb(255, 255, 255); 1890 display: inline-block; 1891 position: relative; 1892 z-index: 1000; 1893} 1894/* First Level Dropdowns */ 1895.mini-nav li ul { 1896 background: rgb(255, 255, 255); 1897 box-shadow: 0 0px 3px rgba(118, 118, 118,0.25), 0 5px 5px 5px rgba(118, 118, 118,0.05); 1898 text-align: left; 1899 display: none; 1900 border-radius: 0 8px 8px 8px; 1901 list-style: none; 1902 padding: 10px; 1903 position: absolute; 1904 white-space: nowrap; 1905 min-width: 130%; 1906 width: auto; 1907 top: 100%; 1908 left: 0; 1909 z-index: 999; 1910 margin-top: -1px; 1911} 1912.mini-nav li:hover > ul { 1913 display: block; 1914} 1915/* First Level Dropdown Items */ 1916.mini-nav li ul li { 1917 position: relative; 1918 display: block; 1919 width: 100%; 1920} 1921.mini-nav li ul li a, .mini-nav li ul li span { 1922 font-size: 12.95px !important; 1923 display: block; 1924 font-weight: 400; 1925 padding: 8px 12px; 1926 border-radius: 8px; 1927 text-decoration: none; 1928 width: 100%; 1929} 1930.mini-nav li ul li a:hover, .mini-nav li ul li span:hover { 1931 box-shadow: 0 0 0 25px rgba(118, 118, 118,0.05) inset; 1932} 1933/* Second Level Dropdowns */ 1934.mini-nav li ul li ul { 1935 display: none; 1936 position: absolute; 1937 top: 0; 1938 left: 100%; 1939 margin: 0; 1940 border-radius: 8px; 1941} 1942.mini-nav li ul li:hover > ul { 1943 display: block; 1944} 1945/* Edge Positioning - Last Child Dropdowns */ 1946.mini-nav > li:last-child ul { 1947 right: 0; 1948 left: auto; 1949 border-radius: 8px 0 8px 8px; 1950} 1951.mini-nav > li:last-child ul li ul { 1952 right: 100%; 1953 left: auto; 1954} 1955/* Flex Spacing Utility */ 1956.mini-nav.mini-nav-flex-spaced { 1957 display: flex; 1958 justify-content: space-between; 1959 align-items: center; 1960 flex-wrap: wrap; 1961 row-gap: 0;
1962} 1963.mini-nav.mini-nav-flex-spaced > li { 1964 flex: none; 1965 padding: 0; 1966 margin: 2px 0; 1967 order: 2; 1968} 1969.mini-nav.mini-nav-flex-spaced > li.header-member-account-links, 1970.mini-nav:has(li ul) > li.header-member-account-links { 1971 order: 1; 1972 margin-left: auto; 1973 width: 100%; 1974 margin-bottom: 10px; 1975} 1976.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li { 1977 line-height: 1em; 1978 min-height: 0; 1979} 1980@media (min-width: 992px) { 1981 .header-main-row { 1982 display: flex; 1983 align-items: center; 1984 flex-wrap: wrap; 1985 } 1986} 1987@media (max-width: 991px) { 1988 .mini-nav.mini-nav-flex-spaced { 1989 justify-content: center; 1990 } 1991 .mini-nav.mini-nav-flex-spaced > li { 1992 margin-left: 5px !important; 1993 margin-right: 5px !important; 1994 } 1995} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad"> 1996 <ul class="mini-nav nobmargin list-inline xs-nopad xs-tmargin tpad"> 1997 <li class='bmargin xs-nomargin'><span id='link340' class='bmargin'> 714-898-9648</span></li><li class='bmargin xs-nomargin'><a href='/about/contact' id='link341' class='hpad bmargin'>Contact Us</a></li><li class='bmargin xs-nomargin'><a href='/login' id='link342' class='rpad bmargin'>Member Login</a></li><li class='bmargin norpad xs-nopad xs-vmargin'><a href='/join' id='link343' class='btn btn_get_listed bold'>Get your business Listed Today</a></li> </ul> 1998 <div class="clearfix"></div> 1999 <form action="/search_results" name="frm1" class="form-inline website-search"> 2000 <div class="input-group input-group-sm bmargin sm-autosuggest"> 2001 <span class="input-group-addon"><i class="fa fa-search"></i></span> 2002 <input type="text" 2003 placeholder="Name or Keyword" value="" name="q" 2004 class="member_search form-control input-sm" autocomplete="off"> 2005 </div> 2006 <input type="submit" value="Search" class="btn btn-sm btn_search bmargin xs-btn-block bold"> 2007 </form> 2008 </div> 2009 </div> 2010 </div> 2011 <style type='text/css'> .mobile-main-menu .hasChildren span a { 2012 padding: 0px; 2013} 2014 2015.user_sidebar > img { 2016 width: 32px; 2017 height: 32px; 2018 position: absolute; 2019 z-index: 10; 2020 border-radius: 100px; 2021 top: -1px; 2022 object-fit: cover; 2023 left: -10px; 2024 background: rgb(245, 245, 245); 2025} 2026#member_sidebar_toggle img+.fa { 2027 display: none; 2028} 2029.main_menu, .user_sidebar, .compact-mobile-search { 2030 padding: 5px 8px; 2031 margin-right:0; 2032 min-height: 33.0333px; 2033 min-width: 38.116px; 2034} 2035.main_menu i, .user_sidebar i { 2036 font-size: 16px; 2037} 2038.navbar-nav li { 2039 float: none!Important; 2040} 2041.navbar-default{ 2042 -webkit-transition: all .6s ease-in-out; 2043 -moz-transition: all .6s ease-in-out; 2044 -o-transition: all .6s ease-in-out; 2045 transition: all .6s ease-in-out; 2046} 2047.transparent_menu { 2048 background-color: rgba(71, 134, 141,0.95)!important; 2049} 2050@media only screen and (max-width: 991px) { 2051 #popover {display: none} 2052} 2053@media only screen and (max-width: 1100px){ 2054 .mobile-main-menu{display:block!important} 2055 .navbar-toggle {display: block} 2056 #bs-main_menu .nav {display: none!important} 2057} 2058.mobile-main-menu { 2059 position: fixed; 2060 height: calc(100% - 50px)!important; 2061 width: 250px; 2062 background: rgb(71, 134, 141); 2063 z-index: 99999; 2064 right: -250px; 2065 top: 50px; 2066 display: none; 2067 -webkit-transition: all .6s ease-in-out; 2068 -moz-transition: all .6s ease-in-out; 2069 -o-transition: all .6s ease-in-out; 2070 transition: all .6s ease-in-out; 2071 overflow-y: auto!important; 2072 overflow-x: hidden!important; 2073} 2074.mobile-main-menu ul li i { 2075 color: rgb(255, 255, 255); 2076 cursor: pointer; 2077 float: right; 2078 padding: 13px; 2079} 2080.mobile-main-menu.opened{ 2081 right: 0px!important; 2082} 2083.mobile-main-menu ul li a, .mobile-main-menu ul li span { 2084 display: inline-block; 2085 float: left; 2086 -webkit-touch-callout: none; 2087 -webkit-user-select: none; 2088 -khtml-user-select: none; 2089 -moz-user-select: none; 2090 -ms-user-select: none; 2091 user-select: none; 2092 padding: 10px 0px; 2093 width: 80%; 2094 width: calc(100% - 40px); 2095} 2096.mobile-main-menu .sidebar-nav li ul { 2097 height: 0px; 2098 overflow: hidden; 2099 list-style: none; 2100 color: rgb(255, 255, 255); 2101 padding-left: 10px; 2102} 2103.mobile-main-menu .sidebar-nav li.sub_open > ul{ 2104 height: 100%; 2105} 2106.mobile-main-menu ul.sidebar-nav { 2107 position: absolute; 2108 width: 250px; 2109 margin: 0; 2110 padding: 0; 2111 list-style: none; 2112 font-size: 14px; 2113} 2114.mobile-main-menu .sidebar-nav > li { 2115 display: block; 2116 line-height: 20px; 2117 padding: 0 15px 0 20px; 2118} 2119.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span { 2120 text-decoration: none; 2121 color: rgb(255, 255, 255); 2122 padding-left:10px; 2123} 2124.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i { 2125 display: none; 2126} 2127 2128 </style><div class="mobile-main-menu"> 2129 <ul class="sidebar-nav"> 2130 <li class=''><a href='/home' id='link344'>
2130Home</a></li><li class=''><a href='/the-chamber' id='link320'>The Chamber</a><ul><li class=''><a href='/about' id='link356'>About the Chamber</a></li><li class=''><a href='/board-of-directors' id='link357'>Chamber Board Of Directors</a></li><li class=''><a href='/join' id='link358'>Join The Chamber</a></li></ul></li><li class=''><a href='/the-city' id='link345'>The City</a><ul><li class=''><a href='/visit-westminster' id='link346'>Visit Westminster</a><ul><li class=''><a href='/stay' id='link352'>Stay</a></li><li class=''><a href='/dine' id='link353'>Dine</a></li><li class=''><a href='/shopping' id='link354'>Shop</a></li><li class=''><a href='/search_results' id='link355'>Business Directory</a></li></ul></li><li class=''><a href='/' id='link347'>Live in Westminster</a></li><li class=''><a href='/jobs' id='link348'>Work in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/business' id='link349'>Start a Business in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/' id='link350' target='_blank'>City Website</a></li><li class=''><a href='https://www.westminster-ca.gov/government/mayor-and-city-council-members' id='link351'>City Council</a></li></ul></li><li class=''><a href='/search_results' id='link339'>Business Directory</a></li><li class=''><a href='/events-news' id='link334'>Events & News</a><ul><li class=''><a href='/events' id='link335'>Chamber Events</a></li><li class=''><a href='/events-calendar' id='link336'>Calendar</a></li><li class=''><a href='/news' id='link337'>Member News</a></li></ul></li><li class=''><a href='/about/contact' id='link338'>Contact Us</a></li> </ul> 2131</div> 2132<nav class="navbar navbar-default "> 2133 <div class="container container-fluid"> 2134 2135 <div class="navbar-header"> 2136 <button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu"> 2137 <i class="fa fa-bars fa-fw"></i> 2138 </button> 2139 2140 2141 2142 </div> 2143 2144 2145 <div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu"> 2146 <ul class="tablet-menu-ul nav navbar-nav nav-justified"> 2147 <li class=''><a href='/home' id='link344'>Home</a></li><li class=''><a href='/the-chamber' id='link320'>The Chamber</a><ul><li class=''><a href='/about' id='link356'>About the Chamber</a></li><li class=''><a href='/board-of-directors' id='link357'>Chamber Board Of Directors</a></li><li class=''><a href='/join' id='link358'>Join The Chamber</a></li></ul></li><li class=''><a href='/the-city' id='link345'>The City</a><ul><li class=''><a href='/visit-westminster' id='link346'>Visit Westminster</a><ul><li class=''><a href='/stay' id='link352'>Stay</a></li><li class=''><a href='/dine' id='link353'>Dine</a></li><li class=''><a href='/shopping' id='link354'>Shop</a></li><li class=''><a href='/search_results' id='link355'>Business Directory</a></li></ul></li><li class=''><a href='/' id='link347'>Live in Westminster</a></li><li class=''><a href='/jobs' id='link348'>Work in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/business' id='link349'>Start a Business in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/' id='link350' target='_blank'>City Website</a></li><li class=''><a href='https://www.westminster-ca.gov/government/mayor-and-city-council-members' id='link351'>City Council</a></li></ul></li><li class=''><a href='/search_results' id='link339'>Business Directory</a></li><li class=''><a href='/events-news' id='link334'>Events & News</a><ul><li class=''><a href='/events' id='link335'>Chamber Events</a></li><li class=''><a href='/events-calendar' id='link336'>Calendar</a></li><li class=''><a href='/news' id='link337'>Member News</a></li></ul></li><li class=''><a href='/about/contact' id='link338'>Contact Us</a></li> </ul> 2148 </div> 2149 </div> 2150</nav> 2151<!--CSS IF MENU IS FIXED TOP--> 2152 2153</div> 2154<div class="clearfix"></div> 2155<!-- Begin Content --> 2156<div id="first_container" class="content-container fr-view home-sec"> 2157 <style type='text/css'> #first_container { 2158 background-color: rgb(18, 18, 18); 2159} 2160body{ 2161 z-index: 0; 2162} 2163.vegas-slide-inner {background-position:center top!important;} 2164.previous { 2165 left: 10px; 2166 right: auto; 2167 background-image: url('/directory/cdn/assets/bootstrap/vegas/img/icon-previous.svg') !important; 2168 -webkit-transform: translateY(-50%); 2169 -ms-transform: translateY(-50%); 2170 transform: translateY(-50%); 2171} 2172.vegas-wrapper .previous, .vegas-wrapper .next { 2173 opacity: .8; 2174 visibility: hidden; 2175 display: block; 2176 position: absolute; 2177 width: 32px; 2178 height: 32px; 2179 margin: 0; 2180 padding: 0; 2181 background: center center no-repeat; 2182 background-size: cover; 2183 top: 50%; 2184} 2185.vegas-wrapper .next { 2186 left: auto; 2187 right: 10px; 2188 background-image: url('/directory/cdn/assets/bootstrap/vegas/img/icon-next.svg') !important; 2189 -webkit-transform: translateY(-50%); 2190 -ms-transform: translateY(-50%); 2191 transform: translateY(-50%); 2192} 2193 2194.vegas-transition-zoomIn2-out, 2195.vegas-transition-zoomOut, 2196.vegas-transition-zoomOut2{ 2197 webkit-transform: scale(1) !important; 2198 transform: scale(1) !important; 2199 opacity: 0; 2200} 2201.homepage_settings { 2202 z-index: 9999; 2203} 2204.slider-container { 2205 position: absolute 2206} 2207 </style><style type='text/css'> .vegas-transition-zoomOut-in,.vegas-transition-zoomOut2-in{opacity:1 !important} </style> <div class="container"> 2208 <div class="clearfix body-content"></div> 2209 <style type='text/css'> .body-content {margin:0px;} 2210 #first_container { 2211 background-position: center top; 2212 background-repeat: no-repeat; 2213 position: relative; 2214 background-size: cover; 2215 } 2216 2217 2218.search_box,.homepage_settings .center-block { 2219float: 2220 none!important; 2221} 2222 2223 2224@media only screen and (max-width: 768px) { 2225 #first_container { 2226 background-position: center top; 2227 } 2228 .homepage_title,.homepage_settings h2,.search_box { 2229 float:none!important; 2230 } 2231 } 2232 2233[class^="homepage-section-"]:empty { 2234 display: none; 2235} 2236.primary-hero-content .search_box, .secondary-hero-content .search_box { 2237 width: 100%; 2238} 2239.homepage_settings:has(.secondary-hero-content) { 2240 display: flex; 2241 align-items: center; 2242 flex-wrap: wrap; 2243} 2244.homepage_settings:has(.secondary-hero-content) > * { 2245 order: 10; 2246} </style> <div class="row-fluid row homepage_settings"> 2247 <div class="col-xs-12 col-sm-12 col-md-12 center-block homepage_title primary-hero-content"> 2248 <h1 class="sm-text-center">Local Business Guide</h1> 2249 </div> 2250 <div class="clearfix"></div> 2251 <div class="col-md-12"> 2252 2253 <div class="clearfix"></div> 2254 <div class="clearfix"></div> 2255 <div class="col-md-12 search_box fpad img-rounded"> 2256 <div class="clearfix"></div> 2257 <div class="form-group nomargin hidden-sm hidden-xs col-md-4"> 2258 <label class="nomargin"> 2259 What do you need: 2260 </label> 2261 </div> 2262 <div class="form-group nomargin hidden-xs hidden-sm col-md-4"> 2263 <label class="nomargin"> 2264 Search by location: 2265 </label> 2266 </div> 2267 <div class="clearfix"></div> 2268 <form class="tpad xs-vpad xs-hpad website-search" name="frm1" action="/search_results"> 2269 <div class="form-group col-sm-12 col-md-4 bmargin xs-nopad"> 2270 <div class="input-group input-group-lg col-sm-12 large-autosuggest"> 2271 <div class="input-group-addon"> 2272 <i class="fa fa-fw fa-search"></i> 2273 </div> 2274 <input type="text" class="member_search form-control input-lg large-autosuggest-input" name="q" value="" placeholder="Name or Keyword"> 2275 </div> 2276 </div> 2277 <div class="form-group col-sm-12 col-md-4 bmargin xs-nopad"> 2278 <div class="input-group input-group-lg col-sm-12"> 2279 <div class="input-group-addon"><i class="fa fa-fw fa-location-arrow"></i></div> 2280 <input type="text" class="googleSuggest googleLocation form-control input-lg" name="location_value" id="location_google_maps_homepage" value="" placeholder="City or Post Code" autocomplete="off"> 2281 </div> 2282 </div> 2283 <div class="form-group col-sm-12 col-md-4 bmargin xs-nopad"> 2284 <button type="submit" class="btn-block btn btn-lg btn_home_search">Search Now</button> 2285 </div> 2286 <div class="clearfix"></div> 2287 </form> 2288 <div class="clearfix"></div> 2289 </div> 2290 <div class="clearfix"></div> 2291 <div class="clearfix"></div> 2292 2293 <div class="clearfix"></div> 2294 </div> 2295 <div class="clearfix"></div> 2296 </div> 2297 <div class="clearfix"></div> 2298 </div></div> <!-- closes container + content-container --> 2299 2300 2301<div class="homepage-sections fr-view"> 2302 <div class="homepage-section-1"><div id="hero-divider" class="content-container homepage_steps"> 2303 <div class="container"> 2304 <div class="col-sm-12 col-md-4 text-center sm-bmargin sm-bpad sm-tmargin homepage_step_1"> 2305 2306 <p class="sm-tmargin"> 2307 <a href="/search_results" title="Commerce Directory"> 2308 <i class="fa fa-briefcase"></i> 2309 </a> 2310 </p> 2311 2312 2313 <h2 class="bold sm-nomargin h3">Commerce Directory</h2> 2314 2315 <p class="sm-bmargin">Find The Best Local Businesses</p> 2316 2317 <a class="btn btn-success xs-center-block" href="/search_results" title="Browse Bu
2317siness Directory"> 2318 Browse Business Directory </a> 2319 2320 <div class="clearfix"></div> 2321 </div> 2322 <div class="clearfix hidden-lg hidden-md"></div> 2323 <div class="col-sm-12 col-md-4 text-center sm-bmargin sm-bpad sm-tmargin homepage_step_2"> 2324 2325 <p class="sm-tmargin"> 2326 <a href="/events" title="Chamber Events"> 2327 <i class="fa fa-ticket"></i> 2328 </a> 2329 </p> 2330 2331 2332 <h2 class="bold sm-nomargin h3">Chamber Events</h2> 2333 2334 <p class="sm-bmargin">Check Out Upcoming Chamber Events</p> 2335 2336 <a class="btn btn-success xs-center-block" href="/events" title="Browse Local Events"> 2337 Browse Local Events </a> 2338 2339 <div class="clearfix"></div> 2340 </div> 2341 <div class="clearfix hidden-lg hidden-md"></div> 2342 <div class="col-sm-12 col-md-4 text-center sm-bmargin sm-bpad sm-tmargin homepage_step_3"> 2343 2344 <p class="sm-tmargin"> 2345 <a href="/coupons" title="Popular Deals"> 2346 <i class="fa fa-tags"></i> 2347 </a> 2348 </p> 2349 2350 2351 <h2 class="bold sm-nomargin h3">Popular Deals</h2> 2352 2353 <p class="sm-bmargin">Discover Deals & Coupons</p> 2354 2355 <a class="btn btn-success xs-center-block" href="/coupons" title="Browse Local Deals"> 2356 Browse Local Deals </a> 2357 2358 <div class="clearfix"></div> 2359 </div> 2360 <div class="clearfix hidden-lg hidden-md"></div> 2361 </div> 2362</div></div> 2363 <div class="homepage-section-2"><style type='text/css'> .display-recent-members .recent-member { 2364 vertical-align:top; 2365} 2366.recent-member-image { 2367 height:112px; 2368} 2369.recent-member-image img { 2370 max-height:112px; 2371} 2372.recent-member.smaller-image img { 2373 max-height: 100px; 2374} 2375.recent-member-info p { 2376 min-height:75px; 2377} 2378.streaming-recent-member-stars.stars-with-image .the-rating-text{ 2379 display:block; 2380} 2381.streaming-recent-member-stars .the-average-rating{ 2382 display:none; 2383} 2384.streaming-recent-member-stars .the-star-icons { 2385 letter-spacing: -1px; 2386} 2387.streaming-recent-member-stars .the-review-count { 2388 font-size: 11px; 2389} 2390.streaming-recent-member-stars .star_rating { 2391 white-space: nowrap; 2392} 2393@media only screen and (min-width: 991px) { 2394 .display-recent-members .recent-member:nth-child(3n+1) { 2395 clear: left; 2396 } 2397} 2398@media only screen and (max-width: 991px) { 2399 .display-recent-members .recent-member:nth-child(2n+1) { 2400 clear: left; 2401 } 2402} 2403 </style> <div class="clearfix"></div> 2404 <div class="content-container"> 2405 <div class="clearfix"></div> 2406 <div class="container"> 2407 <div class="row"> 2408 <div class="col-md-12"> 2409 <h2 class="nomargin sm-text-center bold streaming-title" style="color: rgb(44, 44, 44)"> 2410 Business Spotlight </h2> 2411 <hr> 2412 </div> 2413 <div class="clearfix"></div> 2414 <div class="grid-container display-recent-members "> 2415 <div class="row"> 2416 <div class="slickMembers col-md-12"> 2417 2418 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2419 <div class="well"> 2420 <a class="h4 bold bmargin inline-block notranslate" title=" - View Listing" href="/pro/20260819164926"> 2421 </a> <div class="clearfix fpad-sm nobpad"></div> 2422 <div class="col-xs-4 nopad text-center recent-member-image"> 2423 <a title=" - View Listing" href="/pro/20260819164926"> 2424 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt=" " src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/images/profile-profile-holder.png"> 2425 </a> 2426 2427 2428 </div> 2429 <div class="col-xs-8 norpad small recent-member-info"> 2430 <p> 2431 </p> 2432 <a title=" - View Listing" aria-label=" - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/pro/20260819164926"> 2433 View Listing 2434 </a> 2435 </div> 2436 <div class="clearfix"></div> 2437 </div> 2438 </div> 2439 2440 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2441 <div class="well"> 2442 <a class="h4 bold bmargin inline-block notranslate" title="Ivory Bloom Wellness - View Listing" href="/westminster/medical-services/ivory-bloom-wellness"> 2443 Ivory Bloom Wellness </a> <div class="clearfix fpad-sm nobpad"></div> 2444 <div class="col-xs-4 nopad text-center recent-member-image"> 2445 <a title="Ivory Bloom Wellness - View Listing" href="/westminster/medical-services/ivory-bloom-wellness"> 2446 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt="Ivory Bloom Wellness" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/logos/profile/limage-1027-161-photo.webp"> 2447 </a> 2448 2449 2450 </div> 2451 <div class="col-xs-8 norpad small recent-member-info"> 2452 <p> 2453 Founded by a Registered Nurse with over 15 years of nursing experience and more...
2454 <span class="tmargin bold center-block"> 2455 Located in 2456 </span> 2457 Westminster </p> 2458 <a title="Ivory Bloom Wellness - View Listing" aria-label="Ivory Bloom Wellness - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/westminster/medical-services/ivory-bloom-wellness"> 2459 View Listing 2460 </a> 2461 </div> 2462 <div class="clearfix"></div> 2463 </div> 2464 </div> 2465 2466 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2467 <div class="well"> 2468 <a class="h4 bold bmargin inline-block notranslate" title=" - View Listing" href="/phá»-quang-trung"> 2469 </a> <div class="clearfix fpad-sm nobpad"></div> 2470 <div class="col-xs-4 nopad text-center recent-member-image"> 2471 <a title=" - View Listing" href="/phá»-quang-trung"> 2472 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt=" " src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/images/profile-profile-holder.png"> 2473 </a> 2474 2475 2476 </div> 2477 <div class="col-xs-8 norpad small recent-member-info"> 2478 <p> 2479 </p> 2480 <a title=" - View Listing" aria-label=" - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/phá»-quang-trung"> 2481 View Listing 2482 </a> 2483 </div> 2484 <div class="clearfix"></div> 2485 </div> 2486 </div> 2487 2488 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2489 <div class="well"> 2490 <a class="h4 bold bmargin inline-block notranslate" title=" - View Listing" href="/sen-vietnamese-cuisine"> 2491 </a> <div class="clearfix fpad-sm nobpad"></div> 2492 <div class="col-xs-4 nopad text-center recent-member-image"> 2493 <a title=" - View Listing" href="/sen-vietnamese-cuisine"> 2494 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt=" " src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/images/profile-profile-holder.png"> 2495 </a> 2496 2497 2498 </div> 2499 <div class="col-xs-8 norpad small recent-member-info"> 2500 <p> 2501 </p> 2502 <a title=" - View Listing" aria-label=" - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/sen-vietnamese-cuisine"> 2503 View Listing 2504 </a> 2505 </div> 2506 <div class="clearfix"></div> 2507 </div> 2508 </div> 2509 2510 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2511 <div class="well"> 2512 <a class="h4 bold bmargin inline-block notranslate" title=" - View Listing" href="/hot°com-tam"> 2513 </a> <div class="clearfix fpad-sm nobpad"></div> 2514 <div class="col-xs-4 nopad text-center recent-member-image"> 2515 <a title=" - View Listing" href="/hot°com-tam"> 2516 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt=" " src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/images/profile-profile-holder.png"> 2517 </a> 2518 2519 2520 </div> 2521 <div class="col-xs-8 norpad small recent-member-info"> 2522 <p> 2523 </p> 2524 <a title=" - View Listing" aria-label=" - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/hot°com-tam"> 2525 View Listing 2526 </a> 2527 </div> 2528 <div class="clearfix"></div> 2529 </div> 2530 </div> 2531 2532 <div class="col-xs-12 col-sm-6 col-md-4 member recent-member smaller-image"> 2533 <div class="well"> 2534 <a class="h4 bold bmargin inline-block notranslate" title="Cherokee Investment partners llc - View Listing" href="/united-states/raleigh/cherokee-investment-partners-llc"> 2535 Cherokee Investment partners l... </a> <div class="clearfix fpad-sm nobpad"></div> 2536 <div class="col-xs-4 nopad text-center recent-member-image"> 2537 <a title="Cherokee Investment partners llc - View Listing" href="/united-states/raleigh/cherokee-investment-partners-llc"> 2538 <img class="img-rounded center-block lazyloader" loading="lazy" width="400" height="400" alt="Cherokee Investment partners l..." src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="/pictures/profile/pimage-866-418-photo.webp"> 2539 </a> 2540 2541 2542 </div> 2543 <div class="col-xs-8 norpad small recent-member-info"> 2544 <p> 2545
2546 <span class="tmargin bold center-block"> 2547 Located in 2548 </span> 2549 Raleigh, NC </p> 2550 <a title="Cherokee Investment partners llc - View Listing" aria-label="Cherokee Investment partners llc - View Listing" class="tmargin btn btn-sm btn-primary btn-block" href="/united-states/raleigh/cherokee-investment-partners-llc"> 2551 View Listing 2552 </a> 2553 </div> 2554 <div class="clearfix"></div> 2555 </div> 2556 </div> 2557 </div> 2558 </div> 2559 </div> 2560 <div class="clearfix"></div> 2561 </div> 2562 </div> 2563 </div> 2564 2565 </div> 2566 <div class="homepage-section-3"> <div class="clearfix"></div> 2567 <div class="content-container"> 2568 <div class="clearfix"></div> 2569 <div class="container"> 2570 <div class="row"> 2571 <div class="col-md-12"> 2572 <a href="/events" class="view-all-btn-desktop hidden-xs btn btn-info"> 2573 View All 2574 </a> 2575 <h2 class="nomargin sm-text-center streaming-title" style="color: rgb(44, 44, 44)"> 2576 Upcoming Events </h2> 2577 <hr> 2578 </div> 2579 <div class="clearfix"></div> 2580 <div class="row"> 2581 <div class="col-md-12 slickEvents"> 2582 </div> 2583 </div> 2584 <div class="clearfix"></div> 2585 <div class="col-md-6"> 2586 <a href="events" class="btn btn-lg btn-info btn-block visible-xs-block">View All</a> 2587 </div> 2588 <div class="clearfix"></div> 2589 </div> 2590 </div> 2591 </div> 2592 </div> 2593 <div class="homepage-section-4"><div class="clearfix"></div> 2594<div class="content-container"> 2595 <div class="container"> 2596 <div class="row"> 2597 <div class="col-md-12 homepage_content_3"> 2598 <p><style type='text/css'> .homepage_content_2{ 2599 padding: 5px; 2600} 2601img.inner-img { 2602 height: 200px !important; 2603 transition: 0.5s; 2604} 2605 2606.inner-img { 2607 height: 100px !important; 2608 width: 100% !important; 2609 object-fit: cover; 2610 transition: 0.5; 2611 filter: contrast(55%); 2612 border-radius: 4px; 2613} 2614.p-3 { 2615 padding: 10px; 2616} 2617.inner-content > span { 2618 display: flex; 2619 flex-direction: column; 2620 text-align: center; 2621 width: 100%; 2622 height: 100%; 2623 position: absolute; 2624 justify-content: center; 2625 left: 0; 2626 top: 0; 2627 align-items: center; 2628 z-index: 10; 2629 color: #ffff; 2630} 2631 2632.inner-content > span:hover ~ .inner-img { 2633 filter: brightness(35%); 2634 transform: scale(1.1); 2635} 2636.inner-content > span a { 2637 font-size: 22px; 2638} 2639 2640.inner-content { 2641 overflow: hidden; 2642 padding: 0; 2643 margin: 0; 2644} 2645 2646 2647.row.container { 2648 margin: auto; 2649} 2650 2651a, a:hover { 2652 color: inherit; 2653 text-decoration: inherit; 2654} 2655.inner-content >span:hover { 2656 text-decoration: underline; 2657} 2658.check-btn{ 2659 bottom: 60px; 2660 right: 0px; 2661} 2662.left-m{ 2663 margin-left: -11px; 2664} 2665.left-m { 2666 width: 102%; 2667} 2668 </style><div class="row"> 2669 <div class="grid-container display-recent-members"> 2670 <div class="col-md-12"> 2671 <a href="https://www.westminsterchamber.org/categories" class="check-btn view-all-btn-desktop hidden-xs btn btn-info"> 2672 View All 2673 </a> 2674 <h2 class="nomargin sm-text-center streaming-title" style="color: rgb(44, 44, 44)"> 2675 Local Business Categories </h2> 2676 <hr> 2677</div> 2678 <div class="row"> 2679 <div class="col-md-12 left-m"> 2680 <div class="col-md-3 col-sm-6 p-3"> 2681 <div class="inner-content">
2682 <span><a href="https://www.westminsterchamber.org/advertising-media"><b>Advertising &<br> 2683 Media</b></a></span> <img src="https://www.westminsterchamber.org/images/download.jfif" alt="CRM" class="inner-img"> 2684 </div> 2685 </div> 2686 <div class="col-md-3 col-sm-6 p-3"> 2687 <div class="inner-content"> 2688 <span><a href="https://www.westminsterchamber.org/arts-culture-entertainment"><b>Art, Culture &<br> 2689 Entertainment</b></a></span> <img src="https://www.westminsterchamber.org/images/maxresdefault.jpg" alt="FSS" class="inner-img"> 2690 </div> 2691 </div> 2692 <div class="col-md-3 col-sm-6 p-3"> 2693 <div class="inner-content"> 2694 <span><a href="https://www.westminsterchamber.org/automotive"><b>Automotive</b> 2695 </a></span> <img src="https://www.westminsterchamber.org/images/32dca181998027.Y3JvcCwxMDA3LDc4OCwxOTcsMA-(1).jpg" alt="FS" class="inner-img"> 2696 </div> 2697 </div> 2698 <div class="col-md-3 col-sm-6 p-3"> 2699 <div class="inner-content"> 2700 <span><a href="https://www.westminsterchamber.org/banking-finance-insurance"><b>Banking, Finance & <br> 2701 Insurance</b></a></span> <img src="https://www.westminsterchamber.org/images/banking-finance.jpg" alt="GRS" class="inner-img"> 2702 </div> 2703 </div> 2704 <div class="col-md-3 col-sm-6 p-3"> 2705 <div class="inner-content"> 2706 <span><a href="https://www.westminsterchamber.org/business-professional-services"><b>Business & Professional<br> 2707 Services</b></a></span> <img src="https://www.westminsterchamber.org/images/1779861_401526213329688_7435292895495634391_n.png" alt="GDS" class="inner-img"> 2708 </div> 2709 </div> 2710 <div class="col-md-3 col-sm-6 p-3"> 2711 <div class="inner-content"> 2712 <span><a href="https://www.westminsterchamber.org/education-government-individual"><b>Education, Government &<br> 2713 Individual</b> 2714 </a></span> <img src="https://www.westminsterchamber.org/images/R.jfif" alt="LMS" class="inner-img"> 2715 </div> 2716 </div> 2717 <div class="col-md-3 col-sm-6 p-3"> 2718 <div class="inner-content"> 2719 <span><a href="https://www.westminsterchamber.org/employment"><b>Employment</b> 2720 </a></span> <img src="https://www.westminsterchamber.org/images/employment.jpg" alt="MP" class="inner-img"> 2721 </div> 2722 </div> 2723 <div class="col-md-3 col-sm-6 p-3"> 2724 <div class="inner-content"> 2725 <span><a href="https://www.westminsterchamber.org/family-community-civic-organizations"><b>Family, Community &<br> 2726 Civic Organizations</b> 2727 </a></span> <img src="https://www.westminsterchamber.org/images/community.jpg" alt="PMS" class="inner-img"> 2728 </div> 2729 </div> 2730 <div class="col-md-3 col-sm-6 p-3"> 2731 <div class="inner-content"> 2732 <span><a href="https://www.westminsterchamber.org/home-garden"><b>Home & Garden </b> 2733 </a></span> <img src="https://www.westminsterchamber.org/images/137ae161e8ee4880d2b3c14b40291417--fence-bavaria.jpg" alt="GDS" class="inner-img"> 2734 </div> 2735 </div> 2736 <div class="col-md-3 col-sm-6 p-3"> 2737 <div class="inner-content"> 2738 <span><a href="https://www.westminsterchamber.org/housing"><b>Housing 2739 </b></a></span> <img src="https://www.westminsterchamber.org/images/social-housing-in-england-18-12-2018_social_media.jpg" alt="GDS" class="inner-img"> 2740 </div> 2741 </div> 2742 <div class="col-md-3 col-sm-6 p-3"> 2743 <div class="inner-content"> 2744 <span><a href="https://www.westminsterchamber.org/lodging-travel"><b>Lodging & Travel</b> 2745 </a></span> <img src="https://www.westminsterchamber.org/images/zulu-nyala-country-manor-pool-590x390.jpg" alt="GDS" class="inner-img"> 2746 </div> 2747 </div> 2748 <div class="col-md-3 col-sm-6 p-3"> 2749 <div class="inner-content">
2750 <span><a href="https://www.westminsterchamber.org/manufacturing-sales"><b> Manufacturing &<br> 2751 Sales </b></a></span> <img src="https://www.westminsterchamber.org/images/manufacturing.jpg" alt="GDS" class="inner-img"> 2752 </div> 2753 </div> 2754 </div> 2755 </div> 2756 </div> 2757 <div class="col-md-6"> 2758 <a href="https://www.westminsterchamber.org/categories" class="btn btn-lg btn-info btn-block visible-xs-block">View All</a> 2759</div> 2760 </div></p> <div class="clearfix"></div> 2761 </div> 2762 </div> 2763 </div> 2764</div></div> 2765 <div class="homepage-section-5"><div class="clearfix" id="capa1"></div> 2766<div class="content-container"> 2767 <div class="container"> 2768 <div class="row" id="join-about-modules"> 2769 <div class="col-md-6 homepage-join-module"> 2770 <div class="module fpad-xl text-center nomargin"> 2771 <h2> 2772 Are You A Local Business? </h2> 2773 <div> 2774 <p>Finding Local Businesses is easy with <strong>Chamber of Commerce</strong>. Search our website to instantly connect with Local Businesses. For Local Businesses, our website works as a powerful tool for attracting more clients.</p> </div> <div class="clearfix"></div> 2775 <a href="/join" class="btn btn-lg tmargin center-block btn-primary"> 2776 Join Our Site Today </a> 2777 <div class="clearfix"></div> 2778 </div> 2779 </div> 2780 <div class="clearfix clearfix-lg hidden-md hidden-lg"></div> 2781 <div class="col-md-6 homepage-about-module"> 2782 <div class="module fpad-xl text-center nomargin"> 2783 <h2> 2784 About Westminster Chamber </h2> 2785 <div> 2786 <p>Finding Local Businesses is easy with <strong>Chamber of Commerce</strong>. Search our website to instantly connect with Local Businesses. For Local Businesses, our website works as a powerful tool for attracting more clients.</p> </div> <div class="clearfix"></div> 2787 <a class="btn btn-lg tmargin center-block btn-info" href="/join"> 2788 Get listed today » </a> 2789 <div class="clearfix"></div> 2790 </div> 2791 </div> 2792 </div> 2793 </div> 2794</div></div> 2795 </div>
2796<script> 2797(function(){ 2798 if (typeof performance === 'undefined' || performance.navigation.type !== 2) return; 2799 2800 var path = window.location.pathname.split('/').join('_'); 2801 var storedSid = sessionStorage.getItem('select2-sid' + path); 2802 var storedTid = sessionStorage.getItem('select2-tid' + path); 2803 var storedTtid = sessionStorage.getItem('select2-ttid' + path); 2804 2805 if (!storedSid && !storedTid && !storedTtid) return; 2806 2807 window._bdCategoryPreloaded = true; 2808 2809 function waitForSelect2(selector, callback, maxWait) { 2810 maxWait = maxWait || 5000; 2811 var start = Date.now(); 2812 var check = setInterval(function() { 2813 var $el = $(selector); 2814 if ($el.length && $el.data('select2')) { 2815 clearInterval(check); 2816 callback($el); 2817 } else if (Date.now() - start > maxWait) { 2818 clearInterval(check); 2819 } 2820 }, 100); 2821 } 2822 2823 function waitForOptions(selector, callback, maxWait) { 2824 maxWait = maxWait || 5000; 2825 var start = Date.now(); 2826 var check = setInterval(function() { 2827 var $el = $(selector); 2828 if ($el.length && $el.data('select2') && $el.find('option').length > 1) { 2829 clearInterval(check); 2830 callback($el); 2831 } else if (Date.now() - start > maxWait) { 2832 clearInterval(check); 2833 } 2834 }, 100); 2835 } 2836 2837 $(document).ready(function(){ 2838 if (typeof select2OnFormClick !== 'function') return; 2839 2840 // Clean up stale select2 DOM from bfcache before re-initializing 2841 var staleContainers = document.querySelectorAll('.select2-container'); 2842 for (var i = 0; i < staleContainers.length; i++) { 2843 staleContainers[i].parentNode.removeChild(staleContainers[i]); 2844 } 2845 var offscreenSelects = document.querySelectorAll('.select2-offscreen'); 2846 for (var j = 0; j < offscreenSelects.length; j++) { 2847 offscreenSelects[j].className = offscreenSelects[j].className.replace('select2-offscreen', '').trim(); 2848 offscreenSelects[j].style.display = ''; 2849 } 2850 2851 var initPromise = select2OnFormClick(); 2852 var afterInit = function(){ 2853 if (storedSid && $("#sid").length) { 2854 waitForSelect2('#sid', function($sid) { 2855 $sid.select2('val', storedSid); 2856 $sid.trigger('change'); 2857 }); 2858 } 2859 2860 $(".infinite-chained[name='sid']").each(function(){ 2861 var el = this; 2862 if (storedSid && el.id !== 'sid') { 2863 waitForSelect2('#' + el.id, function($el) { 2864 $el.select2('val', storedSid); 2865 $el.trigger('change'); 2866 }); 2867 } 2868 }); 2869 2870 if (storedTid) { 2871 waitForOptions('#tid', function($tid) { 2872 $tid.select2('val', storedTid); 2873 $tid.trigger('change'); 2874 }); 2875 } 2876 2877 if (storedTtid) { 2878 waitForOptions('#ttid', function($ttid) { 2879 $ttid.select2('val', storedTtid); 2880 }); 2881 } 2882 }; 2883 2884 if (initPromise && typeof initPromise.then === 'function') { 2885 initPromise.then(afterInit); 2886 } else { 2887 setTimeout(afterInit, 500); 2888 } 2889 }); 2890})(); 2891</script>
2891 <div class="clearfix"></div> 2892 </div> 2893</div> 2894<!-- End Content --> 2895<div class="clearfix footer-clear-element "></div> 2896 2897<style type='text/css'> .newsletter_row input[type="email"] { 2898 float: none; 2899 margin-left: auto; 2900 margin-right: auto; 2901 width: 62% !important; 2902} </style><div class="content-container newsletter_row"> 2903 <div class="container text-center vpad"> 2904 <div class="col-md-12 xs-nopad"> 2905 <style type='text/css'> @media only screen and (min-width: 768px) { 2906 .newsletter_footer_button { 2907 display: flex; 2908 align-items: center; 2909 margin-left: auto; 2910 margin-right: auto; 2911 } 2912} </style><a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-lg newsletter_footer_button col-xs-12 col-md-6 nofloat fpad bold"> 2913 <div class="col-sm-6 nopad newsletter_button_left"> 2914 Join Our Newsletter 2915 </div> 2916 <div class="col-sm-6 nopad newsletter_button_right"> 2917 Click to Subscribe 2918 <i class='fa fa-chevron-circle-right fa-fw'></i> 2919 </div> 2920 2921 <div class="clearfix"></div> 2922</a> 2923 </div> 2924 </div> 2925</div><div class="footer"> 2926 <div class="container"> 2927 <div class="row"> 2928 <ul class="footer_menu sm-text-center"> 2929 <li class='btn TopSection'><a href='/join' id='link399'>Westminster California Businesses - Get Listed Today</a></li><li class='col-md-3 col-md-offset-1 footer-mg'><span id='link359' class='head'> About Us</span><ul><li class=''><a href='https://www.westminsterchamber.org/categories' id='link412'>Browse Categories</a></li><li class='m-t-li'><a href='https://www.westminsterchamber.org/locations' id='link413'>Browse Locations</a></li><li class=''><a href='https://www.westminsterchamber.org/about' id='link360' class='content'>How It Works</a></li></ul></li><li class='col-md-3 col-md-offset-1 footer-mg'><span id='link367' class='head'> Connect with Us</span><ul><li class=''><span id='link368'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style> 2930<div class="list-social-links"> 2931 <a class="network-icon contact" href="/about/contact" title="Contact Us Westminster Chamber of Commerce"> 2932 <i class="bi bi-envelope"></i> 2933 </a> 2934 <a class="network-icon facebook" href="https://www.facebook.com/WestminsterChamberOfCommerce/" target="_blank" title="Westminster Chamber of Commerce Facebook"> 2935 <i class="bi bi-facebook"></i> 2936 </a> 2937 2938 2939 2940 <a class="network-icon instagram" href="https://www.instagram.com/wmchamber/" target="_blank" title="Westminster Chamber of Commerce Instagram"> 2941 <i class="bi bi-instagram"></i> 2942 </a> 2943 <div class="clearfix"></div> 2944</div></span></li></ul></li><li class='col-md-3 col-md-offset-1 footer-mg'><span id='link407' class='head'> Support</span><ul><li class=''><a href='/login' id='link408'>Member Login</a></li><li class=''><a href='/about/contact' id='link409'>Contact Us</a></li><li class=''><a href='https://www.westminsterchamber.org/join' id='link415' target='_blank'>List Your Company</a></li></ul></li><li class='col-md-12 clearfix'><span id='link370'> </span></li><li class='col-md-12 clearfix vmargin text-center remove-mb'><span id='link373'> </span><ul><li class='btn-lg font-sm novpad norpad inline-block'><span id='link375'> © 2026</span></li><li class='font-sm inline-block hpad'><a href='/' id='link376' title='Westminster Chamber of Commerce'>Westminster Chamber of Commerce</a></li><li class='font-sm inline-block'><span id='link377'> All Rights Reserved</span></li><li class='font-sm inline-block hpad'><a href='/about/terms' id='link378' title='Terms of Use'>Terms of Use</a></li><li class='font-sm inline-block'><a href='/about/privacy' id='link379' title='Privacy Policy'>Privacy Policy</a></li></ul></li><li class=''><span id='link406'> </span></li> </ul> 2945 </div> 2946 </div> 2947</div><style type='text/css'> .scrollup { 2948 border-radius: 3px; 2949 width: 40px; 2950 height: 40px; 2951 opacity: 0.4; 2952 position: fixed; 2953 bottom: 30px; 2954 right: 30px; 2955 display: none; 2956 background: rgba(119, 119, 119, 0.8); 2957 z-index: 1000000; 2958} 2959.scrollup i { 2960 font-size: 36px; 2961 color: white; 2962 position: relative; 2963 top: 0px; 2964 left: 10px; 2965} </style> 2966 2967 2968 <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
2969<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
2969 2970
2971<script> 2972 function clearContent(thisObj){ 2973 var size; 2974 if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){ 2975 size = "small"; 2976 } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){ 2977 size = "large"; 2978 } else { 2979 size = "medium"; 2980 } 2981 if(!thisObj.parent().hasClass('input_wrapper')){ 2982 if(thisObj.parent().hasClass('input-group-sm')){ 2983 thisObj.wrap('<span class="input-group-sm input_wrapper"></span>'); 2984 } else if (thisObj.parent().hasClass('input-group-lg')){ 2985 thisObj.wrap('<span class="input-group-lg input_wrapper"></span>'); 2986 } else { 2987 thisObj.wrap('<span class="input_wrapper"></span>'); 2988 } 2989 } 2990 if(thisObj.val() != ""){ 2991 if(thisObj.hasClass('googleSuggest')){ 2992 thisObj.parent().find('.fill_location').remove(); 2993 } 2994 if (!thisObj.parent().find('.clear_content').length){ 2995 thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`); 2996 if (thisObj.hasClass("tt-input")) { 2997 thisObj.focus(); 2998 } 2999 3000 } 3001 } 3002 } 3003 3004 $(document).on('click', '.drp-buttons .applyBtn', function(){ 3005 clearContent($(".dateRange input")); 3006 }); 3007 3008 $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){ 3009 clearContent($(this)); 3010 }); 3011 3012 $(document).ready(function(){ 3013 $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){ 3014 clearContent($(this)); 3015 }) 3016 }) 3017 3018 $(document).on('click', '.clear_content', function(){ 3019 $(this).parent().find('input').val(''); 3020 //tt-input its a class for typeahead auto-suggest 3021 if ($(this).parent().find('input').hasClass("tt-input")) { 3022 $(this).parent().find('input').typeahead('val',''); 3023 } 3024 clearContent($(this).parent().find('input')); 3025 $(this).remove(); 3026 }); 3027 3028 $(window).on('load', function () { 3029 setTimeout(function() { 3030 // add missing href attribute to multi-category options in search modules 3031 $('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#'); 3032 }, 2000); 3033 }); 3034</script>
3034 3035 3036 3037 3038<a href="#" class="scrollup" title="scrollup"> 3039 <i class="fa fa-caret-up" aria-hidden="true"></i> 3040</a>
3041<script> 3042 $(document).ready(function(){ 3043 // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318. 3044 // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an 3045 // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button). 3046 if ($.fn.progressbar) { 3047 $('.progress .progress-bar').progressbar({ 3048 display_text: 'fill' 3049 }); 3050 } 3051 $(window).scroll(function(){ 3052 3053 if ($(this).scrollTop() > 600) { 3054 $('.scrollup').fadeIn(); 3055 3056 } else { 3057 $('.scrollup').fadeOut(); 3058 } 3059 }); 3060 $('.scrollup').click(function(){ 3061 $("html, body").animate({ 3062 scrollTop: 0 3063 }, 600); 3064 return false; 3065 }); 3066 $('#cropButton').click(function(){ 3067 var iframe = $("#cropiFrame"); 3068 iframe.attr("src", iframe.data("src")); 3069 }); 3070 }); 3071</script>
3071 3072 3073
3073<script type="text/javascript"> 3074 // Try to load coordinates from sessionStorage on page load 3075 var vlat = 0; 3076 var vlon = 0; 3077 try { 3078 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 3079 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 3080 if (savedLat && savedLon) { 3081 vlat = parseFloat(savedLat); 3082 vlon = parseFloat(savedLon); 3083 } 3084 } catch(e) {} 3085 var isSubmit = false; 3086 var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests 3087 3088 // Function to save coordinates to sessionStorage 3089 function saveCoordinatesToSession(lat, lon) { 3090 try { 3091 sessionStorage.setItem('bd_geolocation_lat', lat.toString()); 3092 sessionStorage.setItem('bd_geolocation_lon', lon.toString()); 3093 } catch(e) {} 3094 } 3095 3096 // Function to get coordinates from sessionStorage if current ones are 0 3097 function getCoordinatesFromSession() { 3098 if (vlat === 0 && vlon === 0) { 3099 try { 3100 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 3101 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 3102 if (savedLat && savedLon) { 3103 vlat = parseFloat(savedLat); 3104 vlon = parseFloat(savedLon); 3105 return true; 3106 } 3107 } catch(e) {} 3108 } 3109 return false; 3110 } 3111 var cityTypes = [ 3112 'colloquial_area', 3113 'locality', 3114 'sublocality', 3115 'sublocality_level_1', 3116 'sublocality_level_2', 3117 'sublocality_level_3', 3118 'sublocality_level_4', 3119 'sublocality_level_5', 3120 'neighborhood', 3121 'ward', 3122 'postal_town' 3123 ]; 3124 3125 var postalTypes = [ 3126 'postal_code', 3127 'postal_code_prefix', 3128 'postal_code_suffix', 3129 'street_number', 3130 'premise', 3131 'subpremise', 3132 'route', 3133 'intersection', 3134 'street_address', 3135 'floor', 3136 'room', 3137 'post_box', 3138 'delivery_address' 3139 ]; 3140 3141 var isSubmitting = false; 3142 window.cachedSelectedOption = [{ 'typed_location': '' }]; 3143 window.isSubmittingMainSearch = false; 3144 3145 document.addEventListener('DOMContentLoaded', () => { 3146 let isSubmitting = false; // Add flag at the top level 3147 3148 setTimeout(()=>{ 3149 let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location'); 3150 if (typeof googleSuggestForm != "undefined") { 3151 for (let i = 0; i < googleSuggestForm.length; i++) { 3152 let closestForm = googleSuggestForm[i].closest('form'); 3153 if(typeof closestForm != "undefined" && closestForm != null){ 3154 closestForm.addEventListener('focusin', googleMapOnFormClick, false); 3155 3156 }else{ 3157 googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false); 3158 } 3159 googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false); 3160 } 3161 } 3162 },200); 3163 3164 $('.website-search button[type=submit]').click(async function (e) { 3165 e.preventDefault(); // Prevent the default submit action 3166 var nativeForm = $(this).closest('form')[0]; 3167 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 3168 return false; 3169 } 3170 await googleMapOnFormClick(); 3171 $(this).closest('form').submit(); 3172 }); 3173 }); 3174 window['gmapClick'] = false; 3175 function googleMapOnFormClick() { 3176 if(window.gmapClick){ 3177 return; 3178 } 3179 window.gmapClick = true; 3180 3181 return new Promise((resolve, reject) => { 3182 window.isSubmittingMainSearch = false; 3183 let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location'); 3184 let mapUri = "https://maps.googleapis.com/ma
3184ps/api/js?v=quarterly&libraries=places®ion=US&callback=initializeG&language=en&key=AIzaSyDbfKV3pdAqtZWJp2D8818eBlTy7zr0DQk"; 3185 3186 if (typeof google !== "undefined" && google.hasOwnProperty('maps')) { 3187 resolve('already loaded'); 3188 return; 3189 } 3190 3191 let loadMapScriptAsync = function (uri) { 3192 return new Promise((resolve, reject) => { 3193 let script = document.createElement('script'); 3194 script.type = 'text/javascript'; 3195 script.src = uri; 3196 script.async = true; 3197 script.onload = function () { 3198 resolve("ok"); 3199 }; 3200 script.onerror = function () { 3201 reject("Failed to load Google Maps script."); 3202 }; 3203 document.head.appendChild(script); 3204 }); 3205 }; 3206 3207 loadMapScriptAsync(mapUri) 3208 .then(() => { 3209 resolve(); 3210 }) 3211 .catch((error) => { 3212 console.error(error); 3213 reject(); 3214 }); 3215 3216 }); 3217 } 3218 3219 function initializeG() { 3220 var geocoder; 3221 //This piece of code will create an autosuggest for every input with the class "googleSuggest" 3222 var counter = 1; 3223 var inputsArray = []; 3224 window.cachedSelectedOption = [{ 'typed_location': '' }]; 3225 let mapExists = document.querySelectorAll('[id^="map"]').length > 0; 3226 const functionsToInvoke = { 3227 setJsMap: true, 3228 setJsMapOverview: mapExists, 3229 setJsMapSR: mapExists, 3230 setJsMapSidebar: mapExists 3231 }; 3232 if (window['maps_loaded'] !== true) { 3233 for (let func in functionsToInvoke) { 3234 if (typeof window[func] === 'function' && functionsToInvoke[func]) { 3235 window['maps_loaded'] = true; 3236 window[func](); 3237 } 3238 } 3239 } 3240 $(".googleSuggest").each(function () { 3241 //get the id from the input to be the unique identifier for each autocomplete 3242 var inputId = $(this).attr("id"); 3243 var inputElement = $(this); 3244 inputsArray[counter] = /** @type {HTMLInputElement} */( 3245 document.getElementById('' + inputId)); 3246 const mainCountry = ''; 3247 const inputOptions = { 3248 fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'], 3249 types: ['geocode'] 3250 } 3251 const language = "en"; 3252 3253 if (language) { 3254 inputOptions.language = language; 3255 } 3256 if (mainCountry) { 3257 inputOptions.componentRestrictions = {country: mainCountry}; 3258 inputOptions.region = mainCountry; 3259 } 3260 3261 var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions); 3262 google.maps.event.addListener(autocomplete, 'place_changed', function () { 3263 const place = autocomplete.getPlace(); 3264 3265 cachedSelectedOption = []; 3266 cachedSelectedOption.push(place); 3267 3268 cachedSelectedOption[0]['typed_location'] = inputElement.val(); 3269 /* if(cachedSelectedOption[0]['adr_address']){ 3270 let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, ''); 3271 cachedSelectedOption[0]['typed_location'] = cleanLocation; 3272 inputElement.val(cleanLocation); 3273 }*/ 3274 if (cachedSelectedOption[0]['address_components'] == undefined) { 3275 cachedSelectedOption = []; 3276 var emptyObj = { 3277 'typed_location': '' 3278 }; 3279 cachedSelectedOption.push(emptyObj); 3280 } 3281 }); 3282 //the code that prevents the submition when hit enter on a google location autocomplete item 3283 inputElement.keydown( function (e) { 3284 if (e.keyCode == 13) { 3285 var pacCounter = 0; 3286 //need to run a loop to check each pac container 3287 $('.pac-container').each(function () { 3288 3289 if ($(this).css("display") != "none") { 3290 pacCounter++; 3291 } 3292 }); 3293 if (pacCounter > 0) { 3294 e.preventDefault(); 3295 } 3296 } 3297 }); 3298 counter++; 3299 }); 3300 3301 //triggers every time a form with the id website-search is trigered 3302 $('.website-search').submit(function (e) { 3303 3304 var currentForm = $(this); 3305 var locationInput = $(this).find(".googleLocation"); 3306 var $submitButton = currentForm.find('input[type=submit], button[type=submit]'); 3307 3308 3309 if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') { 3310 3311 // Set submitting flag 3312 window.isSubmittingMainSearch = true; 3313 $submitButton.prop('disabled', true); 3314 3315 e.preventDefault(); 3316 //this variable has the main country of the site 3317 var form = currentForm; 3318 var urlGET = form.serialize(); 3319 var formActionUrl = form.attr("action"); 3320 var locationValue = locationInput.val(); 3321 3322 3323 3324 const mainCountry = ''; 3325 const inputOptions = { 3326 address:locationValue 3327 } 3328 const language = "en"; 3329 3330 if (language) { 3331 inputOptions.language = language; 3332 } 3333 if (mainCountry) { 3334 inputOptions.componentRestrictions = {country: mainCountry}; 3335 inputOptions.region = mainCountry; 3336 } 3337 3338 if (typeof cachedSelectedOption == 'undefined') { 3339 var emptyForm = { 3340 'typed_location': '' 3341 }; 3342 cachedSelectedOption.push(emptyForm); 3343 } 3344 3345 if (locationValue != cachedSelectedOption[0]['typed_location']) { 3346 geocoder = new google.maps.Geocoder(); 3347 geocoder.geocode(inputOptions, function (results, status) { 3348 3349 //if the google response of the geocoding was successful it will use that info to build the url for the new search 3350 if (status == google.maps.GeocoderStatus.OK) { 3351 parseInfoToSearch(results, urlGET, formActionUrl); 3352 3353 } else { 3354 var urlPath = formActionUrl; 3355 var redirect = urlPath + "?" + urlGET; 3356 //will redirect the page using the new url that has been constructed 3357 window.location.href = redirect; 3358 } 3359 }); 3360 3361 } else { 3362 parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl); 3363 } 3364 } 3365 }); 3366 3367 3368 //check if a map has been loaded 3369 if ($('#map-canvas').length > 0) { 3370 var cssHideLogo = "<style>.pac-container:after { /* Disclaimer: not needed to show 'powered by Google' if also a Google Map is shown */background-image: none !important;height: 0px;}</style>"; 3371 $('body').append(cssHideLogo); 3372 } else { 3373 var cssHideLogo = "<style>.pac-container:after { /* Disclaimer: not needed to show 'powered by Google' if also a Google Map is shown */background-image: block !important;height: 16px;}</style>"; 3374 $('body').append(cssHideLogo); 3375 } 3376
3377 if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") { 3378 populateSearchFields(); 3379 } 3380 3381 if($('.googleSuggest').val() == ""){ 3382 populateSearchFields(); 3383 } 3384 3385 var geocodeVisitorsSetting = '0'; 3386 var geocodingMethod = 'HTML5'; 3387 3388 //check the advanced setting "geocode_visitor_default" if set to 1 will override the "location_value" values to the formatted desire address from the google reverse geocoding response 3389 3390 var vlon = ''; 3391 var vlat = ''; 3392 } 3393 3394 function switchPlaceID(placeId,urlGET, formActionUrl) { 3395 let request = { 3396 placeId: placeId, 3397 fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'], 3398 }; 3399 3400 let service = new google.maps.places.PlacesService(document.createElement('div')); 3401 service.getDetails(request, function(place, status) { 3402 if (status === google.maps.places.PlacesServiceStatus.OK) { 3403 let dataArray = []; 3404 dataArray.push(place); 3405 parseInfoToSearch(dataArray, urlGET, formActionUrl); 3406 } else { 3407 console.error('Place details request failed with status:', status); 3408 } 3409 }); 3410 } 3411 3412 function parseInfoToSearch(results, urlGET, formActionUrl) { 3413 var urlSearchParams = new URLSearchParams(urlGET); 3414 var parameters = {}; 3415 var addressComponentsArray = []; 3416 if (results.length > 1) { 3417 if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){ 3418 let tempResult = results[0]; 3419 results[0] = results[1]; 3420 results[1] = tempResult; 3421 } 3422 for (let i = 0; i < results.length; i++) { 3423 if (results[i].types[0] === 'natural_feature' || 3424 results[i].types[0] === 'airport' || 3425 results[i].types[0] === 'point_of_interest' || 3426 results[i].types[0] === 'establishment' || 3427 results[i].types[0] === 'political' || 3428 results[i].types[0] === 'park') { 3429 results.splice(i, 1); 3430 } 3431 } 3432 } 3433 var adComLength = results[0].address_components.length; 3434 3435 if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){ 3436 switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl); 3437 return; 3438 } 3439 sessionStorage.setItem("google_result",JSON.stringify(results)); 3440 3441 3442 var foundPostalType = results[0].types.find(type => postalTypes.includes(type)); 3443 var foundCityType = results[0].types.find(type => cityTypes.includes(type)); 3444 3445 //loop that will build the array with the address components and will get the short name of country and administrative area level 1 3446 for (var i = 0; i < adComLength; i++) { 3447 3448 if (results[0].address_components[i]['types'][0] == "country") { 3449 parameters.country_sn = results[0].address_components[i]['short_name']; 3450 } 3451 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 3452 parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name']; 3453 } 3454 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 3455 parameters.stateSearchLN = results[0].address_components[i]['long_name']; 3456 } 3457 if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") { 3458 parameters.county_sn = results[0].address_components[i]['short_name']; 3459 } 3460 if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) { 3461 parameters.city = results[0].address_components[i]['long_name']; 3462 } 3463 if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") { 3464 parameters.postal_code = results[0].address_components[i]['long_name']; 3465 } 3466 } 3467 3468 3469 // Filter out 'political' from result types - use more specific type when available 3470 // Same pattern as BD-directory-maps-typePolitical (PR #5642) 3471 if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') { 3472 results[0].types.splice(0, 1); 3473 } 3474 3475 // Pick the most specific type from results, skip "political" (too generic) 3476 parameters.location_type = results[0].types[0]; 3477 for (var t = 0; t < results[0].types.length; t++) { 3478 if (results[0].types[t] != 'political') { 3479 parameters.location_type = results[0].types[t]; 3480 break; 3481 } 3482 } 3483 3484 // When searching by city/locality, omit postal_code â Google returns 3485 // a partial zip prefix that doesn't match all members in the city 3486 if (parameters.location_type == 'locality' && parameters.postal_code) { 3487 delete parameters.postal_code; 3488 } 3489 3490 if (parameters.adm_lvl_1_sn != '') { 3491 parameters.stateSearch = parameters.adm_lvl_1_sn; 3492 } 3493 if (parameters.country_sn == "GB") { 3494 delete parameters.adm_lvl_1_sn; 3495 } 3496 3497 //will check if the response had the bounds parameters 3498 //if it had it will add the south west and north east parameters to the new url 3499 if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) { 3500 3501 if (results[0].geometry.hasOwnProperty('bounds')) { 3502 var boundsResponse = results[0].geometry.bounds; 3503 3504 } else { 3505 var boundsResponse = results[0].geometry.viewport; 3506 } 3507 parameters.swlat = boundsResponse.getSouthWest
3507().lat(); 3508 parameters.nelat = boundsResponse.getNorthEast().lat(); 3509 parameters.swlng = boundsResponse.getSouthWest().lng(); 3510 parameters.nelng = boundsResponse.getNorthEast().lng(); 3511 3512 //if there were not bounds parameters in the response it will send the parameter fsearch as radius so a radius search will be performed because of lack of info for this location 3513 } else { 3514 parameters.fsearch = "radius"; 3515 } 3516 var locationCenterResponse = results[0].geometry.location; 3517 parameters.lat = locationCenterResponse.lat(); 3518 parameters.lng = locationCenterResponse.lng(); 3519 parameters.faddress = results[0].formatted_address; 3520 parameters.place_id = results[0].place_id; 3521 var formatParameters = $.param(parameters); 3522 urlGET = urlGET + "&" + formatParameters; 3523 var urlPath = formActionUrl; 3524 var redirect = urlPath + "?" + urlGET; 3525 //will redirect the page using the new url that has been constructed 3526 window.location.href = redirect; 3527 } 3528 function populateSearchFields() { 3529 var prePopulateLocationSetting = '0'; 3530 var geolocationMethod = 'HTML5'; 3531 3532 // If geolocation is in progress and we don't have coordinates yet, wait a bit 3533 if (isGettingLocation && (vlat === 0 || vlon === 0)) { 3534 var waitStartTime = performance.now(); 3535 var waitInterval = setInterval(function() { 3536 if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) { 3537 clearInterval(waitInterval); 3538 // Retry after a short delay to ensure coordinates are set 3539 setTimeout(function() { 3540 populateSearchFields(); 3541 }, 100); 3542 } else if ((performance.now() - waitStartTime) > 10000) { 3543 // Timeout after 10 seconds - try sessionStorage 3544 clearInterval(waitInterval); 3545 if (getCoordinatesFromSession()) { 3546 setTimeout(function() { 3547 populateSearchFields(); 3548 }, 100); 3549 } 3550 } 3551 }, 200); 3552 return; 3553 } 3554 3555 // If coordinates are 0, try to get from sessionStorage 3556 if (vlat === 0 || vlon === 0) { 3557 getCoordinatesFromSession(); 3558 } 3559 3560 // Validate coordinates first 3561 var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180); 3562 3563 if (!hasValidCoordinates) { 3564 return; 3565 } 3566 3567 //if set to one will get the lat and lng to do reverse geocoding 3568 if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) { 3569 var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon)); 3570 var visitorGeocoder = new google.maps.Geocoder(); 3571 var formattedAddress = []; 3572 var preFormattedStructure = { 3573 "locality": "long_name", 3574 "administrative_area_level_2": "long_name", 3575 "administrative_area_level_1": "long_name", 3576 "country": "long_name" 3577 }; 3578 visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) { 3579 //if the google response of the geocoding was successful it will use that info to build the url for the new search 3580 if (status == google.maps.GeocoderStatus.OK) { 3581 window.cachedSelectedOption = results; 3582 $.each(preFormattedStructure, function (findex, fvalue) { 3583 $.each(results[0].address_components, function (rindex, rvalue) { 3584 if (rvalue.types[0] == findex) { 3585 formattedAddress.push(rvalue.long_name); 3586 } 3587 }); 3588 }); 3589 $('.googleSuggest').each(function () { 3590 if ($(this).val() == '') { 3591 if (formattedAddress.length > 0) { 3592 $(this).val(formattedAddress.join(', ')); 3593 clearContent($(this)); 3594 } 3595 } 3596 }); 3597 } else { 3598 $('.googleSuggest').each(function () { 3599 $(this).val(''); 3600 }); 3601 } 3602 }); 3603 } 3604 } 3605 function showError(error) { 3606 switch (error.code) { 3607 case error.PERMISSION_DENIED: 3608 case 1: // PERMISSION_DENIED 3609 $('.fill_location.clicked').popover({ 3610 content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`, 3611 container: 'body' 3612 }); 3613 $('.fill_location.clicked').popover('toggle'); 3614 setTimeout(function () { 3615 $('.fill_location.clicked').popover('hide'); 3616 $('.fill_location.clicked').removeClass('clicked'); 3617 }, 4000); 3618 break; 3619 case error.POSITION_UNAVAILABLE: 3620 case 2: // POSITION_UNAVAILABLE 3621 $('.fill_location.clicked').popover({ 3622 content: `Location information is unavailable. Please check your device location settings.`, 3623 container: 'body' 3624 }); 3625 $('.fill_location.clicked').popover('toggle'); 3626 setTimeout(function () { 3627 $('.fill_location.clicked').popover('hide'); 3628 $('.fill_location.clicked').removeClass('clicked'); 3629 }, 4000); 3630 break; 3631 case error.TIMEOUT: 3632 case 3: // TIMEOUT 3633 $('.fill_location.clicked').popover({ 3634 content: `Location request timed out. Please ensure location services are enabled and try again.`, 3635 container: 'body' 3636 }); 3637 $('.fill_location.clicked').popover('toggle'); 3638 setTimeout(function () { 3639 $('.fill_location.clicked').popover('hide'); 3640 $('.fill_location.clicked').removeClass('clicked'); 3641 }, 4000); 3642 break; 3643 case error.UNKNOWN_ERROR: 3644 default: 3645 $('.fill_location.clicked').popover({ 3646 content: `An error occurred while getting your location. Please try again.`, 3647 container: 'body' 3648 }); 3649 $('.fill_location.clicked').popover('toggle'); 3650 setTimeout(function () { 3651 $('.fill_location.clicked').popover('hide'); 3652 $('.fill_location.clicked').removeClass('clicked'); 3653 }, 4000); 3654 break; 3655 } 3656 } 3657 if (navigator.geolocation) { 3658 if ($(".googleSuggest")[0]) { 3659 $(document).on('click', '.fill_location', function getCXPosition() { 3660 // Prevent multiple simultaneous geolocation requests 3661 if (isGettingLocation) { 3662 return; 3663 } 3664 3665 var $button = $(this); 3666 $button.addClass('clicked'); 3667 var startPos; 3668 3669 // Set flag to prevent concurrent requests 3670 isGettingLocation = true; 3671 3672 // Function to actually get the position 3673 var attemptGetPosition = function() { 3674 // Try with shorter timeout first for faster response 3675 var geoOptions = {
3676 enableHighAccuracy: false, // Use false for faster response 3677 timeout: 8000, // 8 second timeout (reduced for faster failure) 3678 maximumAge: 300000 // Accept cached position up to 5 minutes old 3679 }; 3680 3681 navigator.geolocation.getCurrentPosition(function (position) { 3682 startPos = position; 3683 vlat = startPos.coords.latitude; 3684 vlon = startPos.coords.longitude; 3685 3686 // Validate coordinates before proceeding 3687 if (!vlat || !vlon || vlat === 0 || vlon === 0) { 3688 isGettingLocation = false; 3689 $button.removeClass('clicked'); 3690 return; 3691 } 3692 3693 // Save coordinates to sessionStorage 3694 saveCoordinatesToSession(vlat, vlon);
3695 3696 $.get("/api/data/html/get/data_widgets/widget_name", { 3697 "vlat": vlat, 3698 "vlon": vlon, 3699 "name": "Website - Save Coordinates Session" 3700 }); 3701 3702 populateSearchFields(); 3703 3704 // Clear flag 3705 isGettingLocation = false; 3706 $button.removeClass('clicked'); 3707 }, function(error) { 3708 // Clear flag on error 3709 isGettingLocation = false; 3710 $button.removeClass('clicked'); 3711 3712 // For timeout errors, try sessionStorage as fallback 3713 if (error.code === 3) { 3714 if (getCoordinatesFromSession()) { 3715 // Use cached coordinates 3716 $.get("/api/data/html/get/data_widgets/widget_name", { 3717 "vlat": vlat, 3718 "vlon": vlon, 3719 "name": "Website - Save Coordinates Session" 3720 }); 3721 3722 populateSearchFields(); 3723 3724 // Clear flag 3725 isGettingLocation = false; 3726 $button.removeClass('clicked'); 3727 } else { 3728 $button.popover({ 3729 content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`, 3730 container: 'body' 3731 }); 3732 $button.popover('show'); 3733 setTimeout(function() { 3734 $button.popover('hide'); 3735 }, 5000); 3736 } 3737 } else { 3738 showError(error); 3739 } 3740 }, geoOptions); 3741 }; 3742 3743 // Check if geolocation permission is already denied (but don't block if it's prompt) 3744 if (navigator.permissions && navigator.permissions.query) { 3745 navigator.permissions.query({name: 'geolocation'}).then(function(result) { 3746 if (result.state === 'denied') { 3747 isGettingLocation = false; 3748 $button.removeClass('clicked'); 3749 showError({code: 1, message: 'Permission denied'}); 3750 return; 3751 } else { 3752 // Permission is granted or prompt - proceed with geolocation 3753 attemptGetPosition(); 3754 } 3755 }).catch(function(err) { 3756 // If permission API not supported, proceed anyway 3757 attemptGetPosition(); 3758 }); 3759 } else { 3760 // Permission API not available, proceed with geolocation 3761 attemptGetPosition(); 3762 } 3763 }) 3764 } 3765 } else { 3766 console.log('Geolocation is not supported for this Browser/OS version yet.'); 3767 } 3768 function getUrlParameter(sParam) { 3769 var sPageURL = window.location.search.substring(1); 3770 var sURLVariables = sPageURL.split('&'); 3771 3772 for (var i = 0; i < sURLVariables.length; i++) { 3773 var sParameterName = sURLVariables[i].split('='); 3774 3775 if (sParameterName[0] == sParam) { 3776 return decodeURIComponent(sParameterName[1]); 3777 } 3778 } 3779 } 3780 </script>
3780 3781
3781<script> 3782 // switchClass() is jQuery UI (Effects), which is no longer loaded on every page. 3783 // removeClass().addClass() is the same class swap, applied immediately instead of 3784 // after animateClass()'s queued 400ms default. 3785 $(document).ready(function(){ 3786 $('.navbar-header .navbar-toggle.main_menu').click(function(){ 3787 $('.mobile-main-menu').toggleClass('opened'); 3788 }); 3789 $('.mobile-main-menu .sidebar-nav').find('li').each(function(){ 3790 $(this).addClass('hasChildren'); 3791 if ($(this).children('ul').length > 0){ 3792 $(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>'); 3793 $(this).find('a').after('<div class="clearfix"></div>'); 3794 $(this).find('span').after('<div class="clearfix"></div>'); 3795 } 3796 $(this).append('<div class="clearfix"></div>'); 3797 }); 3798 3799 $('.mobile-main-menu .sidebar-nav li i').click(function(){ 3800 if ($(this).parent().children('ul').length > 0){ 3801 $(this).parent().toggleClass('sub_open'); 3802 } 3803 if ($(this).hasClass('fa-plus')){ 3804 $(this).removeClass('fa-plus').addClass('fa-minus'); 3805 } else { 3806 $(this).removeClass('fa-minus').addClass('fa-plus'); 3807 } 3808 }); 3809 }) 3810 3811 if ($(window).width() > 740 && $(window).width() < 1100) { 3812 3813 $(document).ready(function(){ 3814 $('.tablet-menu .tablet-menu-ul').find('li').each(function(){ 3815 3816 if ($(this).children('ul').length > 0){ 3817 $(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>'); 3818 $(this).find('a').after('<div class="clearfix"></div>'); 3819 var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");; 3820 $(this).children('a').html(this_link); 3821 $(this).find('span').after('<div class="clearfix"></div>'); 3822 } 3823 $(this).append('<div class="clearfix"></div>'); 3824 }); 3825 3826 $('.tablet-menu .tablet-menu-ul li i').click(function(){ 3827 3828 if ($(this).parent().children('ul').length > 0){ 3829 $(this).parent().toggleClass('sub_open'); 3830 3831 if ($(this).siblings( "ul" ).hasClass('tablet-block')){ 3832 $(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none'); 3833 } else { 3834 $(this).siblings( "ul" ).addClass( "tablet-block" ); 3835 3836 if ($(this).siblings( "ul" ).hasClass('tablet-none')){ 3837 $(this).siblings( "ul" ).removeClass('tablet-none') 3838 } 3839 3840 if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) { 3841 $(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none'); 3842 $(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus'); 3843 } 3844 3845 if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) { 3846 $(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 3847 $(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 3848 } 3849 3850 if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) { 3851 $(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 3852 $(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 3853 } 3854 3855 } 3856 3857 } 3858 3859 if ($(this).hasClass('fa-plus')){ 3860 $(this).removeClass('fa-plus').addClass('fa-minus'); 3861 } else { 3862 $(this).removeClass('fa-minus').addClass('fa-plus'); 3863 } 3864 }); 3865 }) 3866 } 3867 // Append unique ID attribute for mobile main menu links 3868 $('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" }); 3869</script>
3869 3870
3871<script> 3872/* Keeps the announcement bar flush with the navbar: this widget's CSS emits static 50px 3873 offsets that are blind to the hide-menu settings, so a hidden or fixed compact-logo 3874 navbar leaves a gap or an overlap. Measure the real navbar state and own the offset. */ 3875(function () { 3876 function alignAnnouncementToNavbar() { 3877 var ann = document.querySelector('.announcement-bar'); 3878 if (!ann) { return; } 3879 /* above the widget's own offset breakpoints: restore stylesheet values */ 3880 if (window.innerWidth > 1100) { 3881 ann.style.removeProperty('margin-top'); 3882 ann.style.removeProperty('top'); 3883 return; 3884 } 3885 var navbar = document.querySelector('.header nav.navbar.navbar-default'); 3886 var navStyle = navbar ? window.getComputedStyle(navbar) : null; 3887 /* navbar hidden: the 50px offsets have nothing to clear, sit flush */ 3888 if (!navbar || navStyle.display === 'none') { 3889 ann.style.setProperty('margin-top', '0px', 'important'); 3890 ann.style.setProperty('top', '0px', 'important'); 3891 return; 3892 } 3893 if (window.innerWidth >= 768) { return; } 3894 /* only act while the navbar is pinned and showing the compact logo */ 3895 if (navStyle.position !== 'fixed') { return; } 3896 var logo = navbar.querySelector('.mobile_website_logo'); 3897 if (!logo || window.getComputedStyle(logo).display === 'none') { return; } 3898 var navRect = navbar.getBoundingClientRect(); 3899 var annRect = ann.getBoundingClientRect(); 3900 var delta = Math.round(navRect.bottom - annRect.top); /* >0 overlap, <0 gap */ 3901 if (delta === 0) { return; } 3902 var currentMt = parseFloat(window.getComputedStyle(ann).marginTop) || 0; 3903 var nextMt = currentMt + delta; 3904 /* a transient element above the bar during load can inflate the measure; a 3905 negative margin would pull the bar behind the navbar, so clamp at 0 */ 3906 if (nextMt < 0) { nextMt = 0; } 3907 /* !important to beat the widget's "margin-top: 50px !important" rule */ 3908 ann.style.setProperty('margin-top', nextMt + 'px', 'important'); 3909 } 3910 3911 function run() { 3912 alignAnnouncementToNavbar(); 3913 /* re-run after late layout shifts (fonts, async embeds) */ 3914 window.setTimeout(alignAnnouncementToNavbar, 250); 3915 window.setTimeout(alignAnnouncementToNavbar, 1200); 3916 } 3917 3918 if (document.readyState === 'loading') { 3919 document.addEventListener('DOMContentLoaded', run); 3920 } else { 3921 run(); 3922 } 3923 window.addEventListener('load', alignAnnouncementToNavbar); 3924 var resizeTimer; 3925 window.addEventListener('resize', function () { 3926 window.clearTimeout(resizeTimer); 3927 resizeTimer = window.setTimeout(alignAnnouncementToNavbar, 150); 3928 }); 3929})(); 3930</script>
3930 3931
3931<script> 3932 window.addEventListener("load", () => { 3933 let containerSlider = document.createElement('div'); 3934 let containerSlider2 = document.createElement('div'); 3935 const firstContainer = document.getElementById('first_container') 3936 3937 containerSlider.classList.add('slider-container'); 3938 containerSlider2.classList.add('slider-container-in'); 3939 containerSlider.style.height = containerSlider2.style.height = firstContainer.offsetHeight + 'px'; 3940 containerSlider.style.width = firstContainer.offsetWidth + 'px'; 3941 containerSlider2.style.height = firstContainer.offsetHeight + 'px'; 3942 containerSlider2.style.width = firstContainer.offsetWidth + 'px'; 3943 3944 3945 containerSlider.prepend(containerSlider2) 3946 firstContainer.prepend(containerSlider) 3947 3948 3949 let script = document.createElement('script'); 3950 let head = document.getElementsByTagName('head')[0]; 3951 script.src = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/vegas.min.js'; 3952 head.appendChild(script); 3953 let link = document.createElement('link'); 3954 link.rel = 'stylesheet'; 3955 link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/vegas.min.css'; 3956 head.appendChild(link); 3957 3958 script.onload = function () { 3959 $('#first_container .slider-container-in').vegas({ 3960 color: 'rgb(18, 18, 18)', 3961 delay: 5000, 3962 transitionDuration: 3000, 3963 timer: false, 3964 transition: 'fade', 3965 slides: [ 3966 {src: '/images/hero-slider/PHOTO-2022-09-21-16-51-02-(2).webp'}, 3967 {src: '/images/hero-slider/PHOTO-2022-09-21-16-51-02-(1).webp'}, 3968 {src: '/images/hero-slider/PHOTO-2022-09-21-16-51-02-(4)-(1).webp'}, 3969 {src: '/images/hero-slider/PHOTO-2022-09-21-16-51-02-(4).webp'}, 3970 {src: '/images/hero-slider/slider-2.webp'}, 3971 {src: '/images/hero-slider/slider-1.webp'}, 3972 {src: '/images/hero-slider/slider-4.webp'}, 3973 ], 3974 }); 3975 3976 $('a.previous').on('click', function () { 3977 $('#first_container .slider-container-in').vegas('options', 'transition', 'fade').vegas('previous'); 3978 return false; 3979 }); 3980 3981 $('a.next').on('click', function () { 3982 $('#first_container .slider-container-in').vegas('options', 'transition', 'fade').vegas('next'); 3983 return false; 3984 }); 3985 } 3986 }); 3987 </script>
3987 3988
3988<script> 3989 $(document).ready(function() { 3990 var i; 3991 var imageRatio = 0.5625; 3992 for (i = 0; i < 16; i++) { 3993 3994 var sectionid = ".homepage-section-" + i + " .pic"; 3995 var calc = Math.floor($(sectionid).width() * imageRatio); 3996 $(sectionid).css({ 3997 'height': calc + 'px' 3998 }); 3999 4000 var spanid = ".homepage-section-" + i + " .pic .pic-caption"; 4001 var calc2 = $(sectionid).height() - 42; 4002 $(spanid).css({ 4003 'transform' : 'translateY(' + calc2 + 'px)' 4004 }); 4005 } 4006 }); 4007</script>
4007<script> 4008 $('#captchaContainer').removeClass('form-control '); 4009 $(".website_url_field").keyup(function(){ 4010 var fieldName = $(this).attr('name'); 4011 $(this).val($(this).val().replace(/\s+/g, '')); 4012 $('#myform').formValidation('revalidateField', fieldName); 4013 }); 4014</script>
vendor: 2 bytes, line 4014
4014
4015<script> 4016 $('#newsletter input[name="email"]').on('keypress', function() { 4017 $("#newsletter > .gdpr_consent_email").show(); 4018 }); 4019 $('#newsletter_signup_footer input[name="email"]').on('keypress', function() { 4020 $("#newsletter_signup_footer > .gdpr_consent_email").show(); 4021 }); 4022</script>
4022
4022<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
4022 4023
4023<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
4023 4024
4024<script type="text/javascript"> 4025 function decodeHtml(html) { 4026 var txt = document.createElement("textarea"); 4027 txt.innerHTML = html; 4028 return txt.value; 4029 } 4030 4031 // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters 4032 $(function() { 4033 function applyFix() { 4034 // Check if FormValidation library and URI validator are loaded 4035 if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) { 4036 FormValidation.Validator.uri.validate = function(validator, $field, options) { 4037 var value = validator.getFieldValue($field, 'uri').trim(); 4038 return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value); 4039 }; 4040 return true; 4041 } 4042 return false; 4043 } 4044 4045 if (!applyFix()) { 4046 setTimeout(applyFix, 50); 4047 } 4048 }); 4049 </script>
4049 4050
4050<script type="text/javascript"> 4051 4052 var counterSubmit = 0; 4053 $(document).ready(function() { 4054 /* grecaptcha.reset() with no argument always resets widget 0. On a page with two 4055 captcha holders that clears the wrong checkbox, so the widget the visitor solved 4056 keeps a token Google has already spent and every retry fails the security check. 4057 captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha"; 4058 an undefined id means no per-form id is known and the arg-less call is used, 4059 exactly as before. */ 4060 function bdCaptchaWidgetId(formId) { 4061 if (typeof captchaHolders === "undefined" || !formId) { 4062 return undefined; 4063 } 4064 /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84), 4065 so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from 4066 the holder element itself so the counter never has to be reconstructed. */ 4067 var form = document.getElementById(formId); 4068 var holder = form && form.querySelector(".g-recaptcha"); 4069 return holder ? captchaHolders[holder.id] : undefined; 4070 } 4071 4072 function bdCaptchaReset(formId) { 4073 if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") { 4074 return; 4075 } 4076 var widgetId = bdCaptchaWidgetId(formId); 4077 if (widgetId === undefined) { 4078 grecaptcha.reset(); 4079 } else { 4080 grecaptcha.reset(widgetId); 4081 } 4082 } 4083 4084 // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry 4085 // rules for fields that are NOT rendered in this form (conditionally-rendered or 4086 // duplicated form configs). Those phantom rules make formValidation mis-evaluate 4087 // isValid(), so an empty required field bypasses validation and submits natively. 4088 // Remove any rule whose field has no matching element before initializing. 4089 // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly 4090 // REMOVES rules (never adds validators, never overrides native submit, never 4091 // intercepts on capture phase, never re-validates on click) â so it cannot 4092 // reproduce the "Save button slides down / nav broken / no success message" 4093 // regression that caused #5902 to be rolled back on site 19413. 4094 var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Please enter a value"},"emailAddress":{"message":"Please enter a valid email address"}}}}}; 4095 var formElement = $(`form[name='newsletter_modal_signup_380']`); 4096 if(validatorConfig && validatorConfig.fields) { 4097 Object.keys(validatorConfig.fields).forEach(function(fieldName) { 4098 if(formElement.find('[name="' + fieldName + '"]').length === 0) { 4099 delete validatorConfig.fields[fieldName]; 4100 } 4101 }); 4102 } 4103 4104 // Scroll to the first invalid field when submit fails validation, 4105 // so the user can immediately see why the form will not submit 4106 formElement.on('err.form.fv', function(e) { 4107 var $firstError = $(e.target).find('.form-group.has-error').first(); 4108 if ($firstError.length) { 4109 $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700); 4110 } 4111 }); 4112 4113 formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) { 4114 4115 if('newsletter_modal_signup' == 'unsubscribe_email'){ 4116 return true; 4117 } 4118 // Prevent form submission 4119 e.preventDefault(); 4120 $form = $(e.target), 4121 fv = $form.data('formValidation'); 4122 4123 // Check HTML5 required fields that FormValidation may not know about 4124 var requiredEmpty = false; 4125 $form.find('[required]').each(function() { 4126 var val = $(this).val(); 4127 if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) { 4128 requiredEmpty = true; 4129 $(this).closest('.form-group').addClass('has-error'); 4130 if ($(this).siblings('.required-error').length === 0) { 4131 $(this).after('<small class="required-error help-block" style="color:#a94442;">Please enter a value</small>'); 4132 } 4133 } else { 4134 var $reqGroup = $(this).closest('.form-group'); 4135 $(this).siblings('.required-error').remove(); 4136 // Keep has-error if another validator is still failing for this field 4137 if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 4138 $reqGroup.removeClass('has-error'); 4139 } 4140 } 4141 }); 4142 if (requiredEmpty) { 4143 fv.disableSubmitButtons(false); 4144 counterSubmit = 0; 4145 // Scroll to the first field with an error (HTML5-required scan does 4146 // not trigger err.form.fv, so handle the scroll here too) 4147 var $firstReqError = $form.find('.form-group.has-error').first(); 4148 if ($firstReqError.length) { 4149 $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700); 4150 } 4151 return false; 4152 } 4153 4154 var values = $(this).serialize(); 4155 4156 4157 var locationFieldCorrect = true; 4158 4159 if($("#newsletter_modal_signup_380 .location_required").length > 0){ 4160 $("#newsletter_modal_signup_380 .location_required").each(function (index) { 4161 if($(this).data('state') == 1){ 4162 if($('#newsletter_modal_signup_380 input[name="lead_location"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lat"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lng"]').val() == "") { 4163 locationFieldCorrect = false; 4164 } 4165 } 4166 }); 4167 } 4168 4169 if(locationFieldCorrect === false){ 4170 //check that there is a latitude or longitude 4171 swal(`Whoops!`, `The location information is required to submit this form`, "error"); 4172 return false; 4173 } 4174 4175 4176 if (!$(this).attr("action")) { 4177 var action = ''; 4178 4179 } else { 4180 var action = $(this).attr("action"); 4181 } 4182 if (!$(this).attr("method")) { 4183 var method = 'post'; 4184 4185 } else { 4186 var method = $(this).attr("method"); 4187 } 4188 if (!$(this).attr("form_action_type")) { 4189 var form_action_type = 'notification'; 4190 4191 } else { 4192 var form_action_type = $(this).attr("form_action_type"); 4193 } 4194 if (!$(this).attr("form_action_div")) { 4195 /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */ 4196 var form_action_div = $('#main-content').length ? '#main-content' : '#first_container'; 4197 4198 } else { 4199 var form_action_div = $(this).attr("form_action_div"); 4200 } 4201 if (!$(this).attr("return_data_type")) { 4202 var return_data_type = 'json'; 4203 4204 } else { 4205 var return_data_type = $(this).attr("return_data_type"); 4206 } 4207 var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000); 4208 if (!submitInFlight) { 4209 if ($("#newsletter_modal_signup_380-notification").html() != "") { 4210 $("#newsletter_modal_signup_380-notification").remove(); 4211 } 4212 if ($(this).find('input[type="submit"]').length > 0) { 4213 $(this).find('input[type="submit"]').before('<div id="newsletter_modal_signup_380-notification" class="alert"></div>'); 4214 4215 } else { 4216 $(this).prepend('<div id="newsletter_modal_signup_380-notification" class="alert"></div>'); 4217 } 4218 } 4219 var notification = $("#newsletter_modal_signup_380-notification"); 4220 4221 if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) { 4222 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 4223 setTimeout(function(){ 4224 fv.defaultSubmit(); 4225 }, 100); 4226 } else { 4227 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 4228 if(!submitInFlight) { 4229 counterSubmit++; 4230 $form.data('bdLastSubmitAt', Date.now()); 4231 4232 var fields = $(this).serializeArray(); 4233 var formField = []; 4234 var processData = true; 4235 var contentType = "application/x-www-form-urlencoded; charset=UTF-8"; 4236 4237 4238 4239 if($("#newsletter_modal_signup_380 input[type=file]").length > 0){ 4240 4241 var formObject = new FormData(); 4242 processData = false; 4243 contentType = false; 4244 4245 $(fields).each(function(index,field){ 4246 formField.push(field.name+"="+field.value); 4247 }); 4248 4249 values = formField.join("&"); 4250 4251 $(formField).each(function(index,fieldValue){ 4252 var fieldInfo = fieldValue.split('='); 4253 formObject.append(fieldInfo[0],fieldInfo[1]); 4254 }); 4255 4256 $("#newsletter_modal_signup_380 input[type=file]").each(function(index,node){ 4257 var file = this.files[0]; 4258 if(typeof file != "undefined"){ 4259 formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name); 4260 } 4261 }); 4262 }else{ 4263 4264 $(fields).each(function(index,field){ 4265 formField.push(field.name+"="+encodeURIComponent(field.value)); 4266 }); 4267 4268 var formObject = formField.join("&"); 4269 } 4270 4271 $.ajax({
4272 url: action, 4273 type: method, 4274 data: formObject, 4275 dataType: return_data_type, 4276 processData: processData, 4277 contentType: contentType, 4278 success: function (data) { 4279 // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above. 4280 notification = $("#newsletter_modal_signup_380-notification"); 4281 if (return_data_type == "html") { 4282 var result = 'success'; 4283 4284 if (!data != "") { 4285 var result_widget = data['result_widget']; 4286 } 4287 4288 } else { 4289 4290 4291 if (!data['result']) { 4292 var result = 'error'; 4293 } else { 4294 var result = data['result']; 4295 } 4296 if (!data['result_widget']) { 4297 var result_widget = ''; 4298 4299 } else { 4300 var result_widget = data['result_widget']; 4301 } 4302 } 4303 if (result == "success") { 4304 4305 if (!data['message']) { 4306 var message = `Your information has submitted successfully!`; 4307 4308 } else { 4309 var message = data['message']; 4310 } 4311 if (!data['redirect_url']) { 4312 var redirect_url = ''; 4313 4314 } else { 4315 var redirect_url = data['redirect_url']; 4316 } 4317 4318 4319 4320 if (form_action_type == "notification") { 4321 if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) { 4322 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 4323 redirect_url = "/" + redirect_url; 4324 } 4325 if (notification.parents('.modal').length) { 4326 $('.modal-backdrop').hide(); 4327 $('.modal').modal('hide'); 4328 } 4329 window.location.href = redirect_url; 4330 fv.resetForm(true); 4331 } else { 4332 notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>') 4333 .addClass('alert-dismissible') 4334 .addClass("alert-success-subtle") 4335 .removeClass("alert-danger-subtle") 4336 .removeClass("alert-warning-subtle") 4337 4338 4339 4340 if(notification.parents('.modal').length && 'newsletter_modal_signup_380' == 'whmcs_billing_address'){ 4341 setTimeout(function(){ 4342 notification.parents('.modal').modal('hide'); 4343 }, 1000); 4344 } 4345 } 4346 4347 } else if (form_action_type == "widget") { 4348 4349 if (result_widget != '') { 4350 4351 setTimeout(function(){ 4352 if(form_action_div != '.newsletter_modal_form_container'){ 4353 $("html, body").animate({ scrollTop: 0 }, 600); 4354 } 4355 $(form_action_div).html(decodeHtml(result_widget)).text(); 4356 4357 }, 1000); 4358 } 4359 4360 } else if (form_action_type == "redirect") { 4361 4362 if (redirect_url == "") { 4363 redirect_url = decodeURIComponent(""); 4364 } 4365 4366 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 4367 redirect_url = "/" + redirect_url; 4368 } 4369 current_location = "/"; 4370 refresh_pages_string = "/login"; 4371 refresh_pages_string = refresh_pages_string.replace(/ /g,''); 4372 refresh_pages_array = refresh_pages_string.split(','); 4373 notification.html(message) 4374 .addClass("alert-success-subtle") 4375 .removeClass("alert-danger-subtle") 4376 .removeClass("alert-warning-subtle") 4377 .delay(2000).slideUp(); 4378 if(action == "/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" && current_location.indexOf("/login") == -1 && refresh_pages_string != '' && (!refresh_pages_array.includes(current_location) || refresh_pages_string == "/login" )){ 4379 window.location.href = window.location.href+'?logged'; 4380 } else { 4381 window.location.href = redirect_url; 4382 } 4383 4384 fv.resetForm(true); 4385 } 4386 if(form_action_div != '.newsletter_modal_form_container' && 'newsletter_modal_signup_380' != 'whmcs_billing_address'){ 4387 $('.modal-backdrop').hide(); 4388 } 4389 } else { 4390 bdCaptchaReset(formElement.attr('id')); 4391 if (!data['message']) { 4392 var message = `You entered invali
4392d data. Please try to save again.`; 4393 4394 } else { 4395 var message = data['message']; 4396 } 4397 $("#newsletter_modal_signup_380-notification").html(message) 4398 .addClass("alert-danger-subtle") 4399 .removeClass("alert-success-subtle") 4400 .removeClass("alert-warning-subtle") 4401 .fadeIn(); 4402 fv.disableSubmitButtons(false); 4403 } 4404 counterSubmit = 0; 4405 }, 4406 error: function (e) { 4407 4408 if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){ 4409 bdCaptchaReset(formElement.attr('id')); 4410 $("#newsletter_modal_signup_380-notification").html(`Recaptcha Error`); 4411 } else { 4412 $("#newsletter_modal_signup_380-notification").html(`A connection error occurred while saving. Please try to save again.`); 4413 } 4414 $("#newsletter_modal_signup_380-notification").addClass("alert-warning-subtle") 4415 .removeClass("alert-success-subtle") 4416 .removeClass("alert-warning-subtle") 4417 .fadeIn(); 4418 counterSubmit = 0; 4419 } 4420 });/// End Ajax 4421 } 4422 }//END else 4423 }).bind('keydown', function(event) { 4424 4425 if (event.ctrlKey || event.metaKey) { 4426 4427 switch (String.fromCharCode(event.which).toLowerCase()) { 4428 4429 case 's': 4430 var nativeForm = $(this)[0]; 4431 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 4432 event.preventDefault(); 4433 return false; 4434 } 4435 $(this).submit(); 4436 break; 4437 } 4438 } 4439 }); 4440 4441 /// This will turn any select2 that are required in the form builder to being required elements. 4442 $('#newsletter_modal_signup_380 select').each(function (i, obj) { 4443 setTimeout(function(){ 4444 if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") { 4445 $(obj).css("z-index","-999"); 4446 $(obj).css("height","0"); 4447 $(obj).css("width","0"); 4448 $(obj).css("display","block"); 4449 $(obj).css("position","absolute"); 4450 } 4451 }, 3000); 4452 }); 4453 4454 // Clear required-error messages when user fills in a required field 4455 $('#newsletter_modal_signup_380').on('keyup change', '[required]', function() { 4456 var val = $(this).val(); 4457 if (val !== '' && val !== null && val.trim() !== '') { 4458 var $group = $(this).closest('.form-group'); 4459 // Remove only this handler's own required message 4460 $(this).siblings('.required-error').remove(); 4461 // Keep has-error if another FormValidation validator is still failing 4462 // (e.g. stringLength, regexp). has-error is shared, so removing it 4463 // wholesale would clobber other validators' red styling. 4464 if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 4465 $group.removeClass('has-error'); 4466 } 4467 } 4468 }); 4469 4470 });//END $('# echo $_SERVER[form_element_id]; ').formValidation( 4471 </script>
4471 4472 <div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true"> 4473 <div class="modal-dialog"> 4474 <div class="modal-content"> 4475 <div class="container-fluid"> 4476 <div class="row"> 4477 <div class="col-md-12"> 4478 <br> 4479 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 4480 <span aria-hidden="true">×</span> 4481 </button> 4482 <h3 class="nomargin"> 4483 Join Our Newsletter 4484 </h3> 4485 <hr> 4486 <div class="newsletter_modal_form_container"> 4487 <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Module%20-%20Newsletter%20Actions" id="newsletter_modal_signup_380" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div=".newsletter_modal_form_container" return_data_type="" name="newsletter_modal_signup_380" class=" "><input type="hidden" name="sized" value="0" id="newsletter_modal_signup_380-element-0"/><input type="hidden" name="form" value="myform" id="newsletter_modal_signup_380-element-1"/><input type="hidden" name="formname" value="newsletter_modal_signup" id="newsletter_modal_signup_380-element-2"/><input type="hidden" name="dowiz" value="1" id="newsletter_modal_signup_380-element-3"/><input type="hidden" name="save" value="1" id="newsletter_modal_signup_380-element-4"/><input type="hidden" name="url_origin_pars" value="/home" id="newsletter_modal_signup_380-element-5"/><input type="hidden" name="action" autocomplete="off" value="subscribe" id="newsletter_modal_signup_380-element-6"/><div class="form-group"><input type="text" name="first_name" placeholder="Name" autocomplete="off" value class="form-control control-group form-control " id="newsletter_modal_signup_380-element-7"/></div><div class="form-group"><input type="email" name="email" required placeholder="Enter email address" autocomplete="off" value class="form-control control-group form-control" id="newsletter_modal_signup_380-element-8"/></div><div class="form-group"><div class="form-group security_question_label"> 4488 <div id="newsletter_modal_signup_380-captchaContainer" class="control-group"> 4489 <div class="g-recaptcha" id="newsletter_modal_signup_380-google-recaptcha"></div> 4490 </div> 4491 <small class="help-block" id="recaptcha_error" style="display:none;" data-fv-validator="notEmpty" data-fv-for="recaptcha" data-fv-result="INVALID" />The security check was not completed successfully.</small> 4492 <div class="clearfix bmargin"></div> 4493 <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap"> 4494</div> 4495 <style> 4496 .modal .g-recaptcha-scale, .col-md-4 .g-recaptcha-scale, .col-md-3 .g-recaptcha-scale, .col-lg-3 .g-recaptcha-scale, .col-lg-4 .g-recaptcha-scale { 4497 transform: scale(0.77); 4498 -webkit-transform: scale(0.77); 4499 transform-origin: 0 0; 4500 -webkit-transform-origin: 0 0; 4501 margin-bottom: -15px; 4502 } 4503 4504 .modal #newsletter_modal_signup_380-captchaContainer, .col-md-4 #newsletter_modal_signup_380-captchaContainer, .col-md-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-4 #newsletter_modal_signup_380-captchaContainer { 4505 transform: scale(0.77); 4506 -webkit-transform: scale(0.77); 4507 transform-origin: 0 0; 4508 -webkit-transform-origin: 0 0; 4509 margin-bottom: -15px; 4510 } 4511 </style> 4512
4512<script type="text/javascript"> 4513 if(typeof formsFound == "undefined"){ 4514 var formID = ''; 4515 var currentCaptcha = {}; 4516 var captchaHolders = {}; 4517 var formsFound = {}; 4518 var captchaApiRequested = false; 4519 /* The forms the visitor has actually interacted with - only these get a widget. */ 4520 var captchaArmedForms = []; 4521 /* api.js stays lazy - nothing is fetched from Google until the visitor actually 4522 touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in 4523 and presses Enter without ever clicking, so api.js never loaded, the captcha 4524 never rendered, and the form POSTed an empty token. */ 4525 var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart']; 4526 4527 window.addEventListener('load', () => { 4528 formID = document.querySelectorAll('[name="recaptcha"]'); 4529 if (typeof formID != "undefined" && formID !== null) { 4530 for (let i = 0; i < formID.length; i++) { 4531 let formIDForm = formID[i].closest('form'); 4532 let captchaHolder = formIDForm.querySelector(".g-recaptcha"); 4533 4534 if (typeof formsFound[formIDForm.id] != "undefined") { 4535 formsFound[formIDForm.id]['counter']++; 4536 }else{ 4537 formsFound[formIDForm.id] = {'counter' : 1}; 4538 } 4539 4540 formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']); 4541 captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']); 4542 4543 if (typeof formIDForm != "undefined" && formIDForm !== null) { 4544 captchaTriggerEvents.forEach( evt => 4545 formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false) 4546 ); 4547 } 4548 } 4549 } 4550 }); 4551 } 4552 4553 function reCaptchaOnFormInteraction(event) { 4554 if (event && event.currentTarget) { 4555 captchaArmForm(event.currentTarget); 4556 } 4557 if (captchaApiRequested) { 4558 renderArmedCaptchas(); 4559 return; 4560 } 4561 captchaApiRequested = true; 4562 4563 var head = document.getElementsByTagName('head')[0]; 4564 var script = document.createElement('script'); 4565 script.type = 'text/javascript'; 4566 script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en'; 4567 head.appendChild(script); 4568 } 4569 4570 var captchaArmForm = function (formEl) { 4571 if (!formEl) { 4572 return; 4573 } 4574 for (var a = 0; a < captchaArmedForms.length; a++) { 4575 if (captchaArmedForms[a] === formEl) { 4576 return; 4577 } 4578 } 4579 captchaArmedForms.push(formEl); 4580 }; 4581 4582 var captchaSolvedCallback = function (holder) { 4583 return function () { 4584 var formEl = holder.closest('form'); 4585 if (!formEl) { 4586 return; 4587 } 4588 $(formEl).find('.security_question_label').removeClass('has-error'); 4589 $(formEl).find('#recaptcha_error').css('display', 'none'); 4590 var notification = document.getElementById(formEl.id + '-notification'); 4591 if (notification && notification.classList.contains('alert-danger-subtle')) { 4592 $(notification).slideUp(); 4593 } 4594 }; 4595 }; 4596 4597 var renderArmedCaptchas = function () { 4598 if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") { 4599 return; 4600 } 4601 for (var f = 0; f < captchaArmedForms.length; f++) { 4602 var holder = captchaArmedForms[f].querySelector('div[class=g-rec
4602aptcha]'); 4603 4604 if (!holder || !holder.id || holder.getClientRects().length === 0) { 4605 continue; 4606 } 4607 /* Guard a second render: grecaptcha throws on an element it already claimed. */ 4608 if (typeof captchaHolders[holder.id] === "undefined") { 4609 captchaHolders[holder.id] = grecaptcha.render(holder.id, { 4610 'sitekey': '6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq', 4611 'callback': captchaSolvedCallback(holder) 4612 }); 4613 } 4614 } 4615 }; 4616 4617 var onloadCallback = function (event) { 4618 renderArmedCaptchas(); 4619 }; 4620 4621 </script>
vendor: 1 bytes, line 4621
4621
4622<script> 4623 $(document).ready(function(){ 4624 /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on 4625 the submit button, so the click guard below never sees it and the form POSTed an 4626 empty token. Bound on document/capture so it runs before FormValidation's own 4627 handler on the form - at AT_TARGET the capture flag does not order listeners, so a 4628 listener on the form itself would not reliably win. Native HTMLFormElement.submit() 4629 does not dispatch 'submit', so the solved-captcha path below is unaffected. */ 4630 var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380'); 4631 if (captchaGuardedForm) { 4632 document.addEventListener('submit', function (event) { 4633 if (event.target !== captchaGuardedForm) { 4634 return; 4635 } 4636 4637 var formId = captchaGuardedForm.id; 4638 var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter'); 4639 var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined"; 4640 4641 if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") { 4642 $("#" + formId + " .security_question_label").removeClass("has-error"); 4643 $("#" + formId + " #recaptcha_error").css("display", "none"); 4644 return; 4645 } 4646 4647 /* Unsolved, or api.js still in flight: either way there is no token to send. */ 4648 event.preventDefault(); 4649 event.stopImmediatePropagation(); 4650 $("#" + formId + " .security_question_label").addClass("has-error"); 4651 $("#" + formId + " #recaptcha_error").css("display", "block"); 4652 return false; 4653 }, true); 4654 } 4655 $("#newsletter_modal_signup_380 input[type=submit]").unbind('click'); 4656 $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) { 4657 4658 var formId = $(this.form).attr('id'); 4659 var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter'); 4660 4661 if (typeof captchaHolders[captchaHolderKey] != "undefined") { 4662 if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") { 4663 event.preventDefault(); 4664 $("#" + formId).formValidation('validate'); 4665 $("#" + formId + " .security_question_label").addClass("has-error"); 4666 $("#" + formId + " #recaptcha_error").css("display", "block"); 4667 return false; 4668 } 4669 4670 /* Solved captcha: clear the error UI and let the click proceed untouched. 4671 The browser then fires a REAL, button-initiated submit event, so 4672 FormValidation runs its normal chain (success.form.fv -> AJAX modal on 4673 checkout / native POST on login). Re-submitting here artificially broke 4674 both ways: native form.submit() skips the FV chain (checkout rendered the 4675 raw JSON response), and jQuery .submit() fires a synthetic submit that FV 4676 refuses, leaving the form stuck after the first error (Bug 2). */ 4677 $("#" + formId + " .security_question_label").removeClass("has-error"); 4678 $("#" + formId + " #recaptcha_error").css("display", "none"); 4679 } 4680 }); 4681 }); 4682</script>
4682</div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="newsletter_modal_signup_380-element-11"/></div><div class="form-actions"><input type="submit" value="Subscribe Now" name class="btn btn-primary btn-block btn-lg bold " id="newsletter_modal_signup_380-element-12"/></div><input type='hidden' name='origin' value='/'></form>
4682<script type="text/javascript">jQuery(document).ready(function() { jQuery("#newsletter_modal_signup_380").bind("submit", function() { 4683 });}); </script>
4683 </div> 4684 <br> 4685 </div> 4686 </div> 4687 </div> 4688 </div> 4689 </div> 4690</div>
4690<script> 4691 window.addEventListener('load', (event) => { 4692 setTimeout(() => { 4693 }, 501); 4694 }); 4695 </script>
vendor: 2 bytes, line 4695
4695
4696<script> 4697 function decision(message, url) { 4698 if (confirm(message)) { 4699 setTimeout(function () { 4700 window.location = url; 4701 }, 0); 4702 } 4703 } 4704</script>
vendor: 2 bytes, line 4704
4704
4705<script> 4706 // Function to add alt, width, and height attributes to <img> elements without them 4707 function addAttributesToImages() { 4708 var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])'); 4709 Array.prototype.forEach.call(images, function(img) { 4710 // Skip if we've already processed this image 4711 if (img.dataset.processed === 'true') { 4712 return; 4713 } 4714 4715 // Mark this image as being processed 4716 img.dataset.processed = 'true'; 4717 4718 // Add alt attribute if missing 4719 if (!img.hasAttribute('alt')) { 4720 var src = img.getAttribute('src') || 'image'; // Default src to 'image' if missing 4721 var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, ''); 4722 4723 try { 4724 altText = decodeURIComponent(altText) 4725 .replace(/[_\-+,.:;]+/g, ' ') 4726 .replace(/\s+/g, ' ') 4727 .trim(); 4728 } catch (e) { 4729 altText = 'image'; // Fallback to 'image' if decoding fails 4730 } 4731 4732 // Ensure altText is not empty, otherwise use 'image' 4733 altText = altText || 'image'; 4734 4735 img.setAttribute('alt', altText); 4736 } 4737 4738 // Add width and height attributes if missing 4739 if (!img.hasAttribute('width') || !img.hasAttribute('height')) { 4740 // Handle SVG differently 4741 if (img.src && img.src.endsWith('.svg')) { 4742 // For SVG, use the viewBox to set width and height, if available 4743 fetch(img.src) 4744 .then(response => { 4745 if (!response.ok) { 4746 throw new Error('Failed to fetch SVG: ' + response.status); 4747 } 4748 return response.text(); 4749 }) 4750 .then(svgText => { 4751 var parser = new DOMParser(); 4752 var svgDoc = parser.parseFromString(svgText, "image/svg+xml"); 4753 var svgElement = svgDoc.querySelector('svg'); 4754 4755 if (svgElement) { 4756 var viewBox = svgElement.getAttribute('viewBox'); 4757 if (viewBox) { 4758 var viewBoxValues = viewBox.split(' '); 4759 var width = viewBoxValues[2]; 4760 var height = viewBoxValues[3]; 4761 4762 if (!img.hasAttribute('width')) { 4763 img.setAttribute('width', width); 4764 } 4765 if (!img.hasAttribute('height')) { 4766 img.setAttribute('height', height); 4767 } 4768 } 4769 } 4770 }) 4771 .catch(error => { 4772 // Fallback to default dimensions for SVG 4773 if (!img.hasAttribute('width')) { 4774 img.setAttribute('width', '100'); 4775 } 4776 if (!img.hasAttribute('height')) { 4777 img.setAttribute('height', '100'); 4778 } 4779 }); 4780 } else { 4781 // For non-SVG images, use natural dimensions 4782 var tempImg = new Image(); 4783 tempImg.src = img.src; 4784 4785 tempImg.onload = function() { 4786 if (!img.hasAttribute('width')) { 4787 img.setAttribute('width', tempImg.naturalWidth); 4788 } 4789 if (!img.hasAttribute('height')) { 4790 img.setAttribute('height', tempImg.naturalHeight); 4791 } 4792 }; 4793 4794 tempImg.onerror = function() { 4795 // Fallback to default dimensions 4796 if (!img.hasAttribute('width')) { 4797 img.setAttribute('width', '100'); 4798 } 4799 if (!img.hasAttribute('height')) { 4800 img.setAttribute('height', '100'); 4801 } 4802 }; 4803 } 4804 } 4805 }); 4806 } 4807 4808 document.addEventListener('DOMContentLoaded', function() { 4809 // Run the function initially to catch images already in the DOM 4810 addAttributesToImages(); 4811 4812 // Create a MutationObserver to monitor the DOM for added/changed images 4813 var observer = new MutationObserver(function(mutations) { 4814 mutations.forEach(function(mutation) { 4815 if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') { 4816 // Only process if we have new images or src attribute changes 4817 var hasNewImages = false; 4818 4819 if (mutation.addedNodes.length > 0) { 4820 mutation.addedNodes.forEach(function(node) { 4821 if (node.nodeType === 1) { // Element node 4822 if (node.tagName === 'IMG' || node.querySelectorAll) { 4823 hasNewImages = true; 4824 } 4825 } 4826 }); 4827 } 4828 4829 if (mutation.type === 'attributes' && mutation.attributeName === 'src') { 4830 hasNewImages = true; 4831 } 4832 4833 if (hasNewImages) { 4834 addAttributesToImages(); 4835 } 4836 } 4837 }); 4838 }); 4839 4840 // Start observing the document body for changes 4841 observer.observe(document.body, { 4842 childList: true, // Watch for added or removed nodes 4843 subtree: true, // Watch the entire subtree 4844 attributes: true, // Watch for attribute changes 4845 attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute 4846 }); 4847 }); 4848</script>
4848<style type='text/css'> select#sid[disabled], select#tid[disabled], select.combobox[disabled], select#bd-chained[disabled], select#category-chained[disabled], select.infinite-chained[disabled], select.subcategory-chained[disabled], select.search-chained[disabled], select#country-chained[disabled], select#state-chained[disabled], select#country-chained-2[disabled], select#state-chained-2[disabled], select#profession_id[disabled] { 4849 cursor: wait 4850} 4851select.select2-preload { 4852 line-height: initial; 4853} 4854 4855select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-chained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] { 4856 -webkit-appearance: none; 4857 -moz-appearance: none; 4858 appearance: none; 4859 background-image: url(/images/select2ArrowDown.png) !important; 4860 background-repeat: no-repeat !important; 4861 background-size: 10px 9px !important; 4862 background-position: 99% 16px; 4863 border-radius: 6px; 4864 overflow: hidden; 4865} 4866.module select#sid, .module select#tid, .module select.combobox, .module select#bd-chained, .module select#category-chained, .module select.infinite-chained, .module select.subcategory-chained, .module select.search-chained, .module select#country-chained, .module select#state-chained, .module select#country-chained-2, .module select#state-chained-2, .module select#profession_id, [name^="bd_phone_country_code"] { 4867 background-position: 98.2% 12px; 4868} </style> <!-- DROPDOWN SELECT SCRIPT --> 4869 <!-- Select2 CSS Included in website-styles.pkgd.min.css --> 4870 <!--[if lt IE 9]> 4871
4871<script defer src="https://www.optimizecdn.com/directory/cdn/assets/html5shiv/3.7.2/html5shiv.min.js"></script>
4871 4872
4872<script defer src="https://www.optimizecdn.com/directory/cdn/bootstrap/select2/master/js/respond.min.js"></script>
4872 4873 <![endif]--> 4874
4874<script> 4875 4876 var preloaded_ttid = false; 4877 var preloaded_tid = false; 4878 var preloaded_sid = false; 4879 var path2 = window.location.pathname.replace(/\//g, "_"); 4880 4881 if (performance.navigation.type !== 2) { 4882 if (sessionStorage.getItem('select2-ttid'+path2) !== null) { 4883 sessionStorage.removeItem('select2-ttid'+path2); 4884 } 4885 4886 if (sessionStorage.getItem('select2-tid'+path2) !== null) { 4887 sessionStorage.removeItem('select2-tid'+path2); 4888 } 4889 4890 if (sessionStorage.getItem('select2-sid'+path2) !== null) { 4891 sessionStorage.removeItem('select2-sid'+path2); 4892 } 4893 4894 }else if(performance.navigation.type === 2){ 4895 if (sessionStorage.getItem('select2-ttid'+path2) !== null) { 4896 preloaded_ttid = sessionStorage.getItem('select2-ttid'+path2); 4897 } 4898 4899 if (sessionStorage.getItem('select2-tid'+path2) !== null) { 4900 preloaded_tid = sessionStorage.getItem('select2-tid'+path2); 4901 } 4902 4903 if (sessionStorage.getItem('select2-sid'+path2) !== null) { 4904 preloaded_sid = sessionStorage.getItem('select2-sid'+path2); 4905 } 4906 } 4907 4908 window.addEventListener('load', () => { 4909 let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]'); 4910 if (typeof select2Inputs != "undefined") { 4911 for (let i = 0; i < select2Inputs.length; i++) { 4912 let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder'); 4913 if (!select2Inputs[i].getAttribute('placeholder')) { 4914 inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder'); 4915 } 4916 let countryCode = select2Inputs[i].getAttribute('data-country-code'); 4917 if (select2Inputs[i].getAttribute('data-country-code') != null && countryCode > 0 && typeof isoCountries != 'undefined') { 4918 for (let c = 0; c < isoCountries.length; c++) { 4919 if(isoCountries[c].id == countryCode){ 4920 // select2Inputs[i].querySelector('option:first-child').text = isoCountries[c].text; 4921 select2Inputs[i].text = isoCountries[c].text; 4922 } 4923 } 4924 4925 } 4926 if(select2Inputs[i].hasAttribute('data-country-code')){ 4927 inputPlaceHolder = null; //reset the input 4928 } 4929 if (inputPlaceHolder != '' && inputPlaceHolder !== null) { 4930 select2Inputs[i].querySelector('option:first-child').text = inputPlaceHolder; 4931 select2Inputs[i].style.color = "#a8a8a8"; 4932 if(!select2Inputs[i].querySelector('option:first-child').hasAttribute('value')){ 4933 select2Inputs[i].querySelector('option:first-child').value=''; 4934 } 4935 } 4936 select2Inputs[i].classList.add("select2-preload"); 4937 select2Inputs[i].addEventListener('mousedown', select2OnFormClick, false); 4938 } 4939 } 4940 }); 4941 4942 function select2OnFormClick(event = false) { 4943 let elemtClicked = ''; 4944 if (event !== false) { 4945 event.preventDefault(); 4946 event.stopImmediatePropagation(); 4947 elemtClicked = event.target; 4948 elemtClicked.disabled = true; 4949 } 4950 4951 let loadScriptAsync = function (uri) { 4952 return new Promise((resolve, reject) => { 4953 let script = document.createElement('script'); 4954 script.type = 'text/javascript'; 4955 script.src = uri; 4956 script.async = true; 4957 script.onload = function () { 4958 if (event !== false) { 4959 elemtClicked.disabled = false; 4960 select2Initialize(); 4961 $(elemtClicked).select2('open'); 4962 $(elemtClicked).on("select2-close", function () { 4963 setTimeout(function() { 4964 $('.select2-container-active').removeClass('select2-container-active'); 4965 $(':focus').blur(); 4966 }, 1); 4967 }); 4968 if (elemtClicked.hasAttribute('data-fv-field')) { 4969 if (window.getComputedStyle(elemtClicked).display === "none") { 4970 // if element is display none, the formvalition can not read 4971 elemtClicked.style.cssText = "display: block;position: absolute;visibility: hidden !important;height: 0;width: 0;opacity: 0 !important;"
4972 } 4973 } 4974 } else { 4975 select2Initialize(); 4976 } 4977 resolve("ok"); 4978 }; 4979 let head = document.getElementsByTagName('head')[0]; 4980 head.appendChild(script); 4981 }); 4982 } 4983 4984 let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]'); 4985 4986 if (typeof select2Inputs != "undefined") { 4987 for (let i = 0; i < select2Inputs.length; i++) { 4988 let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder'); 4989 if (!select2Inputs[i].getAttribute('placeholder')) { 4990 inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder'); 4991 } 4992 if(select2Inputs[i].hasAttribute('data-country-code')){ 4993 inputPlaceHolder = null; //reset the input 4994 } 4995 if (inputPlaceHolder != '' && inputPlaceHolder !== null) { 4996 select2Inputs[i].querySelector('option:first-child').text = ''; 4997 } 4998 select2Inputs[i].removeEventListener('mousedown', select2OnFormClick, false); 4999 } 5000 } 5001 let scriptLoaded = loadScriptAsync('https://www.optimizecdn.com/directory/cdn/bootstrap/select2/3.5.2/select2.min.js?v=3.5.5'); 5002 return scriptLoaded; 5003 } 5004 5005 function select2Initialize(){ 5006 function getSecondLevel(div,id) { 5007 $("#" + div).select2("data", { 5008 id: "", 5009 text: `Loading...` 5010 }); 5011 $.ajax({
5012 url : '/ajaxsearch/get-services', 5013 type : "GET", 5014 data : { 5015 'specialty_id' : id 5016 }, 5017 dataType: "json", 5018 success : function(data) { 5019 var options = ''; 5020 5021 for (var i = 0; i < data.length; i++) { 5022 options += '<option value="' + data[i].value + '">' + data[i].title + '</option>'; 5023 } 5024 if (div == "tid"){ 5025 $("#ttid").select2("data", { 5026 id: "", 5027 text: "No options available" 5028 }); 5029 5030 5031 $("#ttid").select2("enable", false); 5032 5033 $("#" + div).change(function () { 5034 sessionStorage.setItem("select2-tid"+path2,$(this).val()); 5035 }); 5036 } 5037 if (data.length > 1) { 5038 $("#" + div).select2("enable",true); 5039 $("#" + div).html(options); 5040 $("#" + div).select2("val", ""); 5041 5042 } else { 5043 $("#"+div).select2("data", { 5044 id: "", 5045 text: "No options available" 5046 }); 5047 $("#"+div).select2("val", ""); 5048 } 5049 5050 if(div == 'tid' && preloaded_tid !== false){ 5051 $("#" + div).select2("val", preloaded_tid); 5052 $("#" + div).trigger('change'); 5053 } 5054 } 5055 }); 5056 } 5057 function getSecondLevelAccount(div,id) { 5058 $("#" + div).select2("data", { 5059 id: "", 5060 text: `Loading...` 5061 }); 5062 $.ajax({
5063 url : '/ajaxsearch/get-services', 5064 type : "GET", 5065 data : { 5066 'specialty_id' : id 5067 }, 5068 dataType: "json", 5069 success : function(data) { 5070 var options = ''; 5071 5072 for (var i = 0; i < data.length; i++) { 5073 options += '<option value="' + data[i].value + '">' + data[i].title + '</option>'; 5074 } 5075 if (data.length > 1) { 5076 $("#" + div).select2("close"); 5077 $("#" + div).select2("val", ""); 5078 $("#" + div).select2("enable",true); 5079 $("#" + div).html(options); 5080 5081 5082 } else { 5083 $("#"+div).select2("data", { 5084 id: "", 5085 text: "No options available" 5086 }); 5087 $("#"+div).select2("val", ""); 5088 } 5089 } 5090 }); 5091 } 5092 function getThirdLevel(div,id,id2) { 5093 $("#"+div).select2("data", { 5094 id: "", 5095 text: `Loading...` 5096 }); 5097 5098 $.ajax({
5099 url : '/ajaxsearch/get-locations', 5100 type : "GET", 5101 data : { 5102 'specialty_id' : id, 5103 'treatment_id' : id2, 5104 }, 5105 dataType: "json", 5106 success : function(data) { 5107 var options = ''; 5108 5109 for (var i = 0; i < data.length; i++) { 5110 options += '<option value="' + data[i].value + '">' + data[i].title + '</option>'; 5111 } 5112 if (data.length > 1) { 5113 $("#" + div).select2("enable",true); 5114 $("#" + div).html(options); 5115 $("#" + div).select2("val", ""); 5116 5117 } else { 5118 $("#"+div).select2("data", { 5119 id: "", 5120 text: "No options available" 5121 }); 5122 $("#"+div).select2("val", ""); 5123 } 5124 } 5125 }); 5126 } 5127 var current_country = ''; 5128 function getStateList(div,id) { 5129 if (id != current_country) { 5130 current_country = id; /* BUGFIX p949P6dS: record the country being fetched so the select2-open re-fetch handler short-circuits at this guard instead of looping forever. current_country was declared (line 274) but never assigned, so this guard was always true: success -> select2("open") re-fired the open handler -> getStateList(id) -> re-fetch -> "Loading..." re-pinned -> infinite loop (Singapore = 2 regions). */ 5131 5132 $("#"+div).select2("data", { 5133 id: "", 5134 text: `Loading...` 5135 }); 5136 $.ajax({
5137 url : '/ajaxsearch/get-states', 5138 type : "GET", 5139 data : { 5140 'country' : id 5141 }, 5142 dataType: "json", 5143 success : function(data) { 5144 $("#" + div).html(''); // clear options 5145 5146 /* p949P6dS: data[0] is always the server-side "(Select from List)" placeholder, 5147 so <=2 entries means the country has at most 1 real region (Singapore, 5148 Martinique, zero-region). Client wants those to read "No State/Province 5149 Available" instead of "(Select from List)"; the single real region stays 5150 selectable. Reset/enable now runs on EVERY response (was gated behind 5151 data.length > 1, which left zero-region countries stuck on "Loading..." 5152 and disabled); auto-open stays multi-region only. */ 5153 var hasStates = (data.length > 2); 5154 for (var i = 0; i < data.length; i++) { 5155 var optionTitle = (!hasStates && data[i].value === "") ? `No State/Province Available for This Country` : data[i].title; 5156 var newOption = new Option(optionTitle, data[i].value, false, false); 5157 $("#" + div).append(newOption).trigger('change'); 5158 5159 } 5160 if (data.length === 0) { 5161 $("#" + div).append(new Option(`No State/Province Available for This Country`, "", false, false)).trigger('change'); 5162 } 5163 5164 $("#" + div).select2("enable",true); 5165 $("#" + div).prop("disabled", false); 5166 $("#" + div).select2("val", ""); 5167 if (hasStates) { 5168 $("#" + div).select2("open"); 5169 } 5170 } 5171 }); 5172 } else { 5173 /* p949P6dS AC#3: the select2-open handler runs select2("enable",false) BEFORE 5174 re-calling getStateList, and for a country with <=2 options (Singapore, 5175 Martinique) that re-call short-circuits here on the id == current_country 5176 guard. This branch previously only reset the value, so the field was left 5177 permanently disabled: select2-container-disabled, clicks never open it, the 5178 single real region is unselectable. Mirror the success path's re-enable so a 5179 short-circuited re-open leaves the field usable. Multi-region countries never 5180 hit this (their open handler is gated behind count <= 2). */ 5181 $("#" + div).select2("enable", true); 5182 $("#" + div).prop("disabled", false); 5183 $("#" + div).select2("val", ""); 5184 } 5185 } 5186 /* p949P6dS: keep the checkout/billing required-State validation in sync with the 5187 server-side waiver, on BOTH layers. When the selected country has selectable 5188 sub-regions (Canada, US, ...) FormValidation validates state_code (inline "Required 5189 Field" on submit); when it has none (Singapore, Martinique, zero-region) the state_code 5190 validator is disabled + un-flagged so those countries are not blocked. Delegated so it 5191 binds even though the billing form is revealed after step 1; guarded to no-op on any 5192 page/form without FormValidation + a state_code field. The server still enforces the 5193 same rule (bd-core-files form_controller), so this is UX only, not the security gate. */ 5194 function bdSyncStateRequired(hasStates) { 5195 var $stField = $("#state-chained"); 5196 var $stForm = $stField.closest("form"); 5197 var stFv = ($stForm.length) ? ($stForm.data("formValidation") || $stForm.data("bootstrapValidator")) : null; 5198 if (!stFv || !stFv.options || !stFv.options.fields || !stFv.options.fields.state_code) { 5199 return; 5200 } 5201 stFv.options.fields.state_code.excluded = hasStates ? false : true; 5202 try { stFv.enableFieldValidators("state_code", hasStates); } catch (e) {} 5203 5204 /* p949P6dS: keep the visible "* " required marker on the State label in sync with the 5205 waiver. functions_up.php renders <span class="required">* </span> on the state_code 5206 label when AVS forces the field required; for a no-state country (Singapore, 5207 Martinique) the field is genuinely waived so the asterisk must go away, and come 5208 back when the country has selectable states again. Scoped to the state label. */ 5209 var $stReq = $("label[for='state-chained'] .required", $stForm); 5210 $stReq.css("display", hasStates ? "" : "none"); 5211 5212 /* p949P6dS: the ACTUAL blocker. The billing form carries a SECOND required layer, 5213 independent of FormValidation: the form's success.form.fv handler loops 5214 $form.find('[required]') and, for any empty one, appends <small class="required-error"> 5215 Required Field</small> + returns false, hard-blocking the submit. AVS renders the 5216 state_code <select> with the HTML5 `required` attribute, so a no-state country 5217 (empty state) stayed blocked with "Required Field" even after the FormValidation 5218 waiver above. Drop the `required` attribute (+ clear its custom error) when the 5219 country has no selectable states, and restore it when it does. Remember the server- 5220 rendered original so we never ADD required to a field AVS left optional. */ 5221 if ($stField.attr("data-bd-orig-required") === undefined) { 5222 $stField.attr("data-bd-orig-required", 5223 ($stField.prop("required") || $stField.attr("required") !== undefined) ? "1" : "0"); 5224 } 5225 var stOrigRequired = ($stField.attr("data-bd-orig-required") === "1"); 5226 5227 var $stRow = $stField.closest(".form-group,.fv-row,.row"); 5228 if (!hasStates) { 5229 try { if (typeof stFv.resetField === "function") { stFv.resetField("state_code", true); } } catch (e) {} 5230 $stRow.removeClass("has-error has-success"); 5231 $stRow.find(".help-block[data-fv-validator]").css("display", "none"); 5232 /* drop the HTML5 required gate + its "Required Field" message for no-state country */ 5233 $stField.removeAttr("required").prop("required", false); 5234 $stField.siblings(".required-error").remove(); 5235 $stRow.find(".required-error").remove(); 5236
5237 /* p949P6dS: on the Member-Dashboard billing modal the Save button is disabled by 5238 FormValidation until the whole form is valid; for a no-state country the user 5239 has no state to pick, so nothing re-enables it and Save stays stuck disabled -> 5240 "cannot save". Re-enable it directly. IMPORTANT: do NOT call stFv.validate() 5241 here â in this FormValidation build validate() on an already-valid form fires 5242 success.form.fv (a real submit), which saved the address on the country change 5243 AND consumed the one-time CSRF token, so the actual Save click then failed with 5244 "You entered invalid data. Please try to save again." disableSubmitButtons only 5245 toggles the button; no submit. Scoped to the billing modal so checkout is 5246 untouched. */ 5247 if ($stForm.closest("#billing_address_modal").length) { 5248 try { if (typeof stFv.disableSubmitButtons === "function") { stFv.disableSubmitButtons(false); } } catch (e) {} 5249 $stForm.find("input.submitter, button.submitter, [type=submit]") 5250 .removeClass("disabled").prop("disabled", false).removeAttr("disabled"); 5251 } 5252 } else if (stOrigRequired) { 5253 /* country has states again â restore the required gate AVS originally set */ 5254 $stField.attr("required", "required").prop("required", true); 5255 } 5256 } 5257 $(document).off("change.bdStateReq").on("change.bdStateReq", "#country-chained", function() { 5258 var bdCc = $(this).val(); 5259 var $bdForm = $("#state-chained").closest("form"); 5260 var bdFv = ($bdForm.length) ? ($bdForm.data("formValidation") || $bdForm.data("bootstrapValidator")) : null; 5261 if (!bdFv || !bdFv.options || !bdFv.options.fields || !bdFv.options.fields.state_code || bdCc === "") { 5262 return; 5263 } 5264 $.ajax({
5265 url: "/ajaxsearch/get-states", 5266 type: "GET", 5267 data: { "country": bdCc }, 5268 dataType: "text", 5269 success: function(bdResp) { 5270 /* count entries without regex (DB+eval mangles backslashes): split on the 5271 literal "value" key; total entries = splits - 1; >2 means placeholder + 2+ 5272 real regions == has selectable states. Text parse also survives the 5273 malformed-JSON zero-region response. */ 5274 var bdTotal = bdResp.split(`"value"`).length - 1; 5275 bdSyncStateRequired(bdTotal > 2); 5276 } 5277 }); 5278 }); 5279 /* p949P6dS: the Member Dashboard billing modal (widget 1861) pre-selects the member's 5280 SAVED country_code at document.ready without firing a change event, so the handler 5281 above never ran for it and an AVS-forced required State (functions_up.php forces 5282 field_required=1 on state_code when whmcs_avs_on / stripe_accept_intl_payments is on) 5283 stayed active for a saved no-state country â blocking the save with "Required Field" 5284 on a country that has no state to pick. Sync once for an already-selected country. 5285 The namespaced trigger fires only this handler (not select2/getStateList), and the 5286 handler no-ops when the country is empty or state_code is not a validated field, so 5287 checkout and every other chained-select page are unaffected. */ 5288 $("#country-chained").each(function() { 5289 if ($(this).val() !== "") { 5290 $(this).trigger("change.bdStateReq"); 5291 } 5292 }); 5293 function getInfinityChained(div,id) { 5294 $("#"+div).select2("data", { 5295 id: "", 5296 text: `Loading...` 5297 }); 5298 $.ajax({
5299 url : '/ajaxsearch/get-subcategory', 5300 type : "GET", 5301 data : { 5302 'parent' : id 5303 }, 5304 dataType: "json", 5305 success : function(data) { 5306 var options = ''; 5307 5308 for (var i = 0; i < data.length; i++) { 5309 options += '<option value="' + data[i].value + '">' + data[i].title + '</option>'; 5310 } 5311 if (data.length > 1) { 5312 $("#" + div).select2("enable",true); 5313 $("#" + div).html(options); 5314 if(div == 'tid' && '' != ''){ 5315 $("#" + div).select2("val", ""); 5316 $("#" + div).trigger('change'); 5317 } else if(div == 'tid' && preloaded_tid !== false){ 5318 $("#" + div).select2("val", preloaded_tid); 5319 $("#" + div).trigger('change'); 5320 }else { 5321 $("#" + div).select2("val", ""); 5322 } 5323 5324 5325 5326 5327 } else { 5328 $("#" + div).select2("data", { 5329 id: "", 5330 text: "No options available" 5331 }); 5332 } 5333 } 5334 }); 5335 } 5336 function categoryChained(div,id) { 5337 $("#" + div).select2("data", { 5338 id: "", 5339 text: `Loading...` 5340 }); 5341 if(div == "tid") { 5342 url_link = '/ajaxsearch/get-services' 5343 data_passed = {'specialty_id' : id} 5344 } else { 5345 url_link = '/ajaxsearch/category-list'; 5346 data_passed = {'parent' : id} ; 5347 } 5348 5349 var selectName = $("select[next="+div+"]").prop("name"); 5350 5351 5352 if( (selectName == "ttid" || selectName == "sid" || selectName == "tid") ){ 5353 5354 sessionStorage.setItem("select2-"+selectName+path2,id); 5355 } 5356 5357 $.ajax({
5358 url : url_link, 5359 type : "GET", 5360 data : data_passed, 5361 dataType: "json", 5362 success : function(data) { 5363 var options = ''; 5364 5365 for (var i = 0; i < data.length; i++) { 5366 options += '<option value="' + data[i].value + '">' + data[i].title + '</option>'; 5367 } 5368 5369 if (data.length > 1) { 5370 $("#" + div).select2("enable",true); 5371 $("#" + div).html(options); 5372 5373 if(div == "ttid" && preloaded_ttid !== false){ 5374 $("#" + div).select2("val", preloaded_ttid); 5375 $("#" + div).trigger('change'); 5376 }else if(div == "tid" && preloaded_tid !== false){ 5377 $("#" + div).select2("val", preloaded_tid); 5378 $("#" + div).trigger('change'); 5379 }else{ 5380 $("#" + div).select2("val", ""); 5381 } 5382 5383 5384 5385 } else { 5386 $("#" + div).select2("data", { 5387 id: "", 5388 text: "No options available" 5389 }); 5390 } 5391 } 5392 }); 5393 } 5394 function formatCountry(country) { 5395 if (!country.id && country.text.includes("+")) { 5396 let dataCountry = country.text; 5397 dataCountry = dataCountry.split('+') 5398 country.code = dataCountry[0].trim(); 5399 country.id = dataCountry[1].trim(); 5400 return country; 5401 } else if (!country.code) { 5402 return country.text; 5403 } 5404 var $country = $( 5405 '<span class="flag-icon flag-icon-' + country.code.toLowerCase() + ' flag-icon-squared"></span>' + 5406 '<span class="flag-text" style="margin-left:10px;">' + country.text + '</span>' 5407 ); 5408 return $country; 5409 } 5410 5411 let phoneCountryCode = document.querySelector("[name^='bd_phone_country_code']"); 5412 if (typeof phoneCountryCode != 'undefined' && phoneCountryCode != null && typeof isoCountries != 'undefined') { 5413 $("[name^='bd_phone_country_code']").select2({ 5414 placeholder:`Country`, 5415 data:isoCountries, 5416 searchInputPlaceholder: `Enter Country Code`, 5417 formatResult : formatCountry, 5418 dropdownAutoWidth: true, 5419 width: "resolve", 5420 }).on("select2-opening", function (e) { 5421 if (typeof e.currentTarget.attributes['data-default-country-code'] !== "undefined") { 5422 $(this).val(e.currentTarget.attributes['data-default-country-code'].value) 5423 .removeAttr("data-default-country-code") 5424 .trigger('change') 5425 .trigger('open'); 5426 } 5427 }).change(function (e) { 5428 let select2Span = $(this).attr('id'); 5429 if (e.val) { 5430 $('#'+$(this).attr('id')+'--flag').remove(); 5431 $('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + e.added.code.toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>') 5432 }else{ 5433 $('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + $(this).attr('data-default-country-flag').toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>') 5434 } 5435 $(this).removeAttr("data-default-country-flag"); 5436 5437 }); 5438 } 5439 $("#bd-chained").select2({ 5440 title: "Select Category", 5441 placeholder: "Select Category", 5442 allowClear: true, 5443 formatNoMatches: function () { 5444 return "No matches found"; 5445 } 5446 }).change(function () { 5447 var id = $(this).val(); 5448 $("#tid").select2("enable",false); 5449 getInfinityChained("tid",id); 5450 }); 5451 $("#category-chained").select2({ 5452 title: "Select Category", 5453 placeholder: "Select Category", 5454 allowClear: true 5455 }).change(function () { 5456 var id = $(this).val(); 5457 $("#subcategory-chained").select2("enable",false); 5458 categoryChained("subcategory-chained",id); 5459 }); 5460 5461 $(".select-category-chained").select2({ 5462 title: "Select Category", 5463 placeholder: "Select Category", 5464 allowClear: true 5465 }) 5466 $(".infinite-chained").select2({ 5467 title: "Select option from list", 5468 placeholder: "Click to select an option", 5469 allowClear: true, 5470 formatNoMatches: function () { 5471 return "No matches found"; 5472 } 5473 }).change(function () { 5474 var id = $(this).val(); 5475 var attr = $(this).attr('next'); 5476 var selectName = $(this).prop('name'); 5477 if ( selectName=='ttid' || attr =='ttid' ) { 5478 $("#" + attr).select2("enable",false); 5479 categoryChained(attr,id); 5480 sessionStorage.setItem("select2-"+selectName+path2,id); 5481 } 5482 }).on("select2-close", function () { 5483 setTimeout(function() { 5484 $('.select2-container-active').removeClass('select2-container-active'); 5485 $(':focus').blur(); 5486 }, 1); 5487 }); 5488 $("#subcategory-chained").select2(); 5489 $(".combobox").select2();
5490 $(".search-chained").select2(); 5491 5492 $("select#country-chained").select2({ 5493 title: "", 5494 placeholder: "", 5495 val: "", 5496 allowClear: true, 5497 formatNoMatches: function () { 5498 return "No matches found"; 5499 } 5500 }).change(function () { 5501 var id = $(this).val(); 5502 $("#state-chained").select2("enable",false); 5503 getStateList("state-chained",id); 5504 var state = ""; 5505 5506 if (id == "CA") { 5507 state = "Province"; 5508 5509 } else if (id == "UK") { 5510 state = "Region"; 5511 5512 } else if (id == "US" || id == "AU") { 5513 state = "State"; 5514 5515 } else { 5516 state = "Region"; 5517 } 5518 $("#state-chained").prev(".control-label").text(state); 5519 }); 5520 $("#state-chained").select2(); 5521 5522 $("#state-chained").on("select2-open", function(event) { 5523 event.preventDefault(); 5524 var id = $("#country-chained").val(); 5525 var count = $('#state-chained option').length; 5526 5527 if (id != "" && count <= 2) { 5528 $("#state-chained").select2("enable",false); 5529 getStateList("state-chained",id); 5530 var state = ""; 5531 5532 if (id == "CA") { 5533 state = "Province"; 5534 5535 } else if (id == "UK") { 5536 state = "Region"; 5537 5538 } else if (id == "US" || id == "AU") { 5539 state = "State"; 5540 5541 } else { 5542 state = "Region"; 5543 } 5544 $("#state-chained").prev(".control-label").text(state); 5545 } 5546 }); 5547 5548 $("#country-chained-2").select2({ 5549 title: "Select Country", 5550 placeholder: "(select country)", 5551 val: "", 5552 allowClear: true, 5553 formatNoMatches: function () { 5554 return "No matches found"; 5555 } 5556 }).change(function () { 5557 var id = $(this).val(); 5558 $("#state-chained-2").select2("enable",false); 5559 getStateList("state-chained-2",id); 5560 var state = ""; 5561 5562 if (id == "CA") { 5563 state = "Province"; 5564 5565 } else if (id == "UK") { 5566 state = "Region"; 5567 5568 } else if (id == "US" || id == "AU") { 5569 state = "State"; 5570 5571 } else { 5572 state = "Region"; 5573 } 5574 $("#state-chained-2").prev(".control-label").text(state); 5575 }); 5576 5577 $("#state-chained-2").select2(); 5578 $("#profession_id").select2({ 5579 placeholder: "Select From List", 5580 allowClear: true, 5581 formatNoMatches: function () { 5582 return "No matches found"; 5583 } 5584 }).change(function () { 5585 var id = $(this).val(); 5586 getSecondLevelAccount("category_id",id); 5587 }); 5588 $("#sid").select2({ 5589 title: "Select Category", 5590 placeholder: "Select Category", 5591 allowClear: true, 5592 formatNoMatches: function () { 5593 return "No matches found"; 5594 } 5595 }).change(function () { 5596 var id = $(this).val(); 5597 $("#tid").select2("enable",false); 5598 getSecondLevel("tid",id); 5599 $("#tid").select2("open"); 5600 sessionStorage.setItem("select2-sid"+path2,id); 5601 }); 5602 $("#location_value_dropdown").select2({ 5603 title: "More Options", 5604 placeholder: "More Options", 5605 allowClear: true, 5606 formatNoMatches: function () { 5607 return "No matches found"; 5608 } 5609 }); 5610 $("#tid").select2({ 5611 title: "Select Sub-category", 5612 placeholder: "Select Sub-category", 5613 allowClear: true, 5614 formatNoMatches: function () { 5615 return "No matches found"; 5616 } 5617 }); 5618 $("#location_value_dropdown").select2({ 5619 title: "More Options", 5620 placeholder: "More Options", 5621 allowClear: true 5622 }); 5623 } 5624 5625 if(preloaded_ttid !== false || preloaded_tid !== false || preloaded_sid !== false){ 5626 $(document).ready(function(){ 5627 // Skip if homepage widget already handles preload 5628 if(window._bdCategoryPreloaded) return; 5629 5630 if(preloaded_sid !== false && $("#sid").length > 0){ 5631 select2OnFormClick(); 5632 setTimeout(() => { 5633 $("#sid").select2('val', preloaded_sid); 5634 $('#sid').trigger('change'); 5635 }, 500); 5636 }else if(preloaded_tid !== false && $("#sid").length <= 0){ 5637 select2OnFormClick(); 5638 setTimeout(() => { 5639 $("#tid").select2('val', preloaded_tid);
5640 $('#tid').trigger('change'); 5641 }, 500); 5642 } 5643 }); 5644 } 5645 </script>
vendor: 2 bytes, line 5645
5645
5646<script> 5647 // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score 5648 $(document).ready(function() { 5649 var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness 5650 5651 // Iterate over each select element that does not have an aria-label 5652 $('select:not([aria-label])').each(function() { 5653 // Use the ID or placeholder as the base for the aria-label, stripping HTML tags 5654 var baseLabel = this.id || $(this).attr('placeholder') || 'select'; 5655 baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim 5656 5657 // Ensure uniqueness of each aria-label 5658 ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1; 5659 var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel]; 5660 5661 // Truncate aria-label to 100 characters 5662 ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel; 5663 5664 // Set the aria-label attribute to the unique label 5665 $(this).attr('aria-label', ariaLabel); 5666 }); 5667 }); 5668</script>
vendor: 2 bytes, line 5668
5668
5669<script type="application/ld+json"> 5670{ 5671 "@context": "https://schema.org", 5672 "@graph": [ 5673 { 5674 "@type": "WebSite", 5675 "@id": "https://www.westminsterchamber.org/#website", 5676 "name": "Westminster Chamber of Commerce", 5677 "url": "https://www.westminsterchamber.org/", 5678 "inLanguage": "en-US", 5679 "dateModified": "2026-09-01T00:00:00-07:00", 5680 "potentialAction": { 5681 "@type": "SearchAction", 5682 "target": "https://www.westminsterchamber.org/sitesearch?q={search_term_string}", 5683 "query-input": "required name=search_term_string", 5684 "name": "Search Directory: Westminster Chamber of Commerce" 5685 }, 5686 "publisher": { 5687 "@id": "https://www.westminsterchamber.org/#organization" 5688 } 5689 }, 5690 { 5691 "@type": "Organization", 5692 "@id": "https://www.westminsterchamber.org/#organization", 5693 "name": "Westminster Chamber of Commerce", 5694 "description": "Search the most complete westminster california businesses directory. Find westminster california businesses.", 5695 "url": "https://www.westminsterchamber.org/", 5696 "mainEntityOfPage": { 5697 "@type": "WebPage", 5698 "@id": "https://www.westminsterchamber.org/#webpage" 5699 }, 5700 "contactPoint": [ 5701 { 5702 "@type": "ContactPoint", 5703 "email": "[email protected]", 5704 "contactType": "customer support", 5705 "availableLanguage": [ 5706 "en" 5707 ], 5708 "areaServed": "US" 5709 } 5710 ], 5711 "areaServed": { 5712 "@type": "Country", 5713 "name": "US" 5714 }, 5715 "telephone": "714-898-9648", 5716 "sameAs": [ 5717 "https://www.facebook.com/WestminsterChamberOfCommerce/", 5718 "https://www.instagram.com/wmchamber/" 5719 ], 5720 "logo": { 5721 "@type": "ImageObject", 5722 "@id": "https://www.westminsterchamber.org/#logo", 5723 "url": "/images/Logo/change-logo.png" 5724 }, 5725 "image": { 5726 "@type": "ImageObject", 5727 "@id": "https://www.westminsterchamber.org/#image", 5728 "url": "/images/Logo/change-logo.png" 5729 }, 5730 "keywords": [ 5731 "Westminster California Business", 5732 "Westminster California Businesses", 5733 "Westminster Chamber of Commerce", 5734 "Westminster Chamber of Commerce", 5735 "Westminster California Businesses", 5736 "Westminster California Business" 5737 ] 5738 }, 5739 { 5740 "@type": "WebPage", 5741 "@id": "https://www.westminsterchamber.org/#webpage", 5742 "url": "https://www.westminsterchamber.org/", 5743 "name": "Westminster California Businesses Directory - Find Westminster California Businesses - Westminster Chamber of Commerce", 5744 "description": "Search the most complete westminster california businesses directory. Find westminster california businesses.", 5745 "inLanguage": "en-US", 5746 "dateModified": "2026-09-01T00:00:00-07:00", 5747 "lastReviewed": "2026-09-01T00:00:00-07:00", 5748 "reviewedBy": { 5749 "@id": "https://www.westminsterchamber.org/#organization" 5750 }, 5751 "copyrightYear": "2026", 5752 "copyrightHolder": { 5753 "@id": "https://www.westminsterchamber.org/#organization" 5754 }, 5755 "about": "Westminster Chamber of Commerce", 5756 "spatialCoverage": { 5757 "@type": "Place", 5758 "address": { 5759 "@type": "PostalAddress", 5760 "addressCountry": "US" 5761 } 5762 }, 5763 "mainEntityOfPage": { 5764 "@id": "https://www.westminsterchamber.org/#webpage" 5765 }, 5766 "isPartOf": { 5767 "@id": "https://www.westminsterchamber.org/#website" 5768 }, 5769 "publisher": { 5770 "@id": "https://www.westminsterchamber.org/#organization" 5771 }, 5772 "keywords": [ 5773 "Westminster California Business", 5774 "Westminster California Businesses", 5775 "Westminster Chamber of Commerce", 5776 "Westminster Chamber of Commerce", 5777 "Westminster California Businesses", 5778 "Westminster California Business" 5779 ], 5780 "primaryImageOfPage": { 5781 "@id": "https://www.westminsterchamber.org/#image" 5782 } 5783 } 5784 ] 5785}</script>
5785 5786
5787<script> 5788// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete 5789(function() { 5790 if (!document.querySelector('link[href*="bootstrap-icons"]')) { 5791 var link = document.createElement('link'); 5792 link.rel = 'stylesheet'; 5793 link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1'; 5794 document.head.appendChild(link); 5795 } 5796})(); 5797</script>
5797 5798<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input { 5799 border-radius: 0 8px 8px 0 !important; 5800 } 5801.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead { 5802 display: inline-block; 5803 height: 25px; 5804 position: relative; 5805 width: 100%; 5806} 5807.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) { 5808 width: inherit; 5809} 5810.normal-autosuggest .twitter-typeahead .clear_content.medium{ 5811 bottom: 0px; 5812} 5813.sm-autosuggest .twitter-typeahead .clear_content.small{ 5814 bottom: -4px; 5815} 5816.md-autosuggest.input-group .twitter-typeahead .clear_content.medium { 5817 bottom: -2px; 5818} 5819.md-autosuggest .twitter-typeahead { 5820 height: 32px; 5821} 5822.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead { 5823 height: 38px; 5824 vertical-align: top; 5825} 5826.md-autosuggest-input + .clear_content.medium { 5827 bottom: 0px; 5828} 5829.large-autosuggest .twitter-typeahead { 5830 height: 40px; 5831} 5832.normal-autosuggest .twitter-typeahead{ 5833 height: 38px; 5834} 5835.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint { 5836 background: #fff !important; 5837 border: 1px solid #ccc!important; 5838 border-radius: 0 8px 8px 0; 5839 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important; 5840 color: transparent; 5841 left: 0; 5842 padding: 4px 11px; 5843 position: absolute; 5844 top: 0; 5845 width: 100%; 5846 font-size:12px; 5847} 5848.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px} 5849.md-autosuggest .twitter-typeahead .tt-hint { 5850 height: 100%; 5851 background: #ffffff none repeat scroll 0 0 !important; 5852 border: 1px solid #cccccc !important; 5853 border-radius: 0 8px 8px 0; 5854 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important; 5855 color: rgba(0, 0, 0, 0); 5856 left: 0; 5857 padding: 6px 11px; 5858 position: absolute; 5859 top: 0; 5860 width: 100%; 5861} 5862.large-autosuggest {background: #fff !important;border-radius:10px;} 5863.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;} 5864 .input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint { 5865 border-radius: 0 10px 10px 0!important; 5866 } 5867 .large-autosuggest .twitter-typeahead .tt-hint { 5868 background: #fff !important; 5869 border: 1px solid #ccc!important; 5870 border-radius: 10px; 5871 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important; 5872 color: transparent; 5873 left: 0; 5874 position: absolute; 5875 top: 0; 5876 width: 100%; 5877 font-size: 18px; 5878 height: 46px; 5879 line-height: 1.33333; 5880 padding: 10px 15px; 5881} 5882.tt-dataset .empty-message { 5883 display: none !important; 5884} 5885.twitter-typeahead .tt-query {background-color:#fff!important} 5886.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;} 5887span.tt-dropdown-menu { 5888 border: 1px solid #FCFCFC; 5889 border-radius: 5px; 5890 box-shadow: 0 5px 10px rgba(0,0,0,.2); 5891 width: 100% !important; 5892} 5893.tt-is-under-cursor a.suggest-link { 5894 background: #55ACEE; 5895} 5896 5897.tt-is-under-cursor .media-heading, 5898.tt-is-under-cursor .suggest-origin, 5899.tt-is-under-cursor .location{ 5900 color:#fff!important; 5901} 5902.tt-suggestion .media .media-body .suggest-origin { 5903 color: rgba(45, 91, 137,0.9); 5904 padding: 1px 0; 5905 border-radius: 6px; 5906 font-weight: bold; 5907 line-height: 12px; 5908} 5909.tt-suggestion { 5910 background: #fff; 5911 border-bottom: 1px solid #eee; 5912 -webkit-transition: all 0.3s ease-in-out; 5913 -moz-transition: all 0.3s ease-in-out; 5914 -o-transition: all 0.3s ease-in-out; 5915 transition: all 0.3s ease-in-out; 5916} 5917body .tt-suggestions .media.br-bottom img { 5918 max-width: 45px; 5919 height: auto; 5920} 5921body .tt-suggestions .media-body span { 5922 font-size: 10px; 5923} 5924body .tt-suggestions .media-body h4 { 5925 font-size: 12px; 5926 margin: 2px 0px; 5927 text-transform: capitalize; 5928} 5929a.suggest-link { 5930 padding: 5px; 5931 display: block; 5932} 5933a.suggest-link img { 5934 border-radius: 100px; 5935 display: block; 5936 margin: 0 auto; 5937 height: 100%!important; 5938 width: 100%; 5939 object-fit: cover; 5940} 5941.left-suggest-col {
5942 display: inline-block; 5943 vertical-align: middle; 5944 width: 44px; 5945 height: 44px; 5946} 5947.right-suggest-col { 5948 display: inline-block; 5949 padding-left: 1%; 5950 text-align: left; 5951 vertical-align: middle; 5952 width: calc(100% - 1% - 50px); 5953} 5954p.media-heading { 5955 color: #333; 5956 font-size: 12px; 5957 font-weight: 600; 5958 margin-bottom: 0; 5959} 5960p.suggest-origin { 5961 font-size: 10px; 5962 color: #333; 5963 margin:0; 5964} 5965p.location { 5966 color: #333; 5967 font-size: 10px; 5968 margin: 2px 0; 5969} 5970body .tt-is-under-cursor a.suggest-link { 5971 background: #F7F7F7; 5972} 5973body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location { 5974 color: #333!important; 5975} 5976a.suggest-link[data-heading="heading"] { 5977 pointer-events: none; 5978 cursor: default; 5979 text-decoration: none; 5980} 5981body .tt-is-under-cursor a.suggest-link[data-heading="heading"] { 5982 background: rgb(71, 134, 141); 5983} 5984/* --- all the novalue css --- */ 5985a.suggest-link .suggest-origin[data-state="novalue"] { 5986 display: none; 5987} 5988a.suggest-link .location[data-state="novalue"] { 5989 display: none; 5990} 5991a.suggest-link img[data-state="novalue"] { 5992 display: none; 5993} 5994a.suggest-link .suggest-origin[data-state="heading"] { 5995 display: none; 5996} 5997a.suggest-link .media-heading[data-heading="heading"] { 5998 color:rgb(255, 255, 255)!important; 5999 font-weight: bold; 6000 padding: 4px; 6001 font-size: 13px; 6002} 6003.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] { 6004 display: none; 6005} 6006.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] { 6007 width: 100%; 6008} 6009a.suggest-link[href="novalue"] { 6010 cursor: default !important; 6011 pointer-events: none; 6012} 6013a.suggest-link[data-heading="heading"] { 6014 background-color: rgb(71, 134, 141); 6015} 6016div.content-shell { 6017 overflow: inherit; 6018} 6019span.tt-dropdown-menu div { 6020 float: none; 6021} 6022.tt-menu { 6023 border-radius: 0 0 6px 6px; 6024 box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); 6025 overflow: hidden; 6026 width: 100%; 6027 z-index: 150 !important; 6028} 6029.tt-menu .tt-dataset { 6030 overflow-y: auto; 6031 max-height: 200px; 6032} </style>
6032<script type="text/javascript"> 6033 6034 if (typeof decodeHtml != "function") { 6035 function decodeHtml(html) { 6036 var txt = document.createElement("textarea"); 6037 txt.innerHTML = html; 6038 return txt.value; 6039 } 6040 } 6041 function initializeTypeheadMember_search() { 6042 var member_searchEngine = new Bloodhound({ 6043 initialize: false, 6044 datumTokenizer: function (d) { 6045 return Bloodhound.tokenizers.whitespace(value); 6046 }, 6047 queryTokenizer: Bloodhound.tokenizers.whitespace, 6048 remote: { 6049 url: `/api/suggest/json/get/1,users_data,Listings,1,1,1,1,1,3|88,list_professions,Main Categories,1,0,1,1,1,3|89,list_services,Sub Categories,1,0,1,1,1,3?tID=35&q=%QUERY`, 6050 wildcard: '%QUERY', 6051 filter: function (response) { 6052 6053 if (response != null) { 6054 //var response = response.slice(1); 6055 $.each( 6056 response, function (key, value) { 6057 response[key]['value'] = decodeHtml(value['value']); 6058 response[key]['comes_f'] = decodeHtml(value['comes_f']); 6059 response[key]['location'] = decodeHtml(value['location']); 6060 6061 if (response[key]['value'].indexOf('-/-') >= 0) { 6062 var splitResult = response[key]['value'].split('-/-'); 6063 response[key]['value'] = splitResult[0]; 6064 } 6065 } 6066 ); 6067 6068 } else { 6069 response = {error: "null"}; 6070 } 6071 6072 return response; 6073 } 6074 } 6075 }); 6076 var member_searchDataSrc = member_searchEngine.initialize(); 6077 6078 member_searchDataSrc 6079 .done(function () { /*console.log('Autosuggestions engine initialized.'); */ 6080 }) 6081 .fail(function () { /*console.log('err, something went wrong while initializing autosuggestions engine:(');*/ 6082 }) 6083 6084 $('.member_search').typeahead({ 6085 minLength: 2, 6086 highlight: true, 6087 hint: false }, 6088 { 6089 display: 'value', 6090 source: member_searchEngine.ttAdapter(), 6091 limit: 10, 6092 templates: { 6093 empty: [ 6094 '<div class="empty-message">', 6095 'Result not found', 6096 '</div>' 6097 ].join(" "), 6098 notFound: [ 6099 '<div class="notFound-message">', 6100 'Result not found', 6101 '</div>' 6102 ].join(" "), 6103 suggestion: function (data) { 6104 6105 if (data == "null") { 6106 strTemplate = '<div class="empty-message">Result not found</div>'; 6107 6108 } else { 6109 strTemplate = '<a class="suggest-link" href="' + data.link + '" data-state="' + data.link + '" data-heading="' + data.comes_f + '"> <div class="left-suggest-col" data-photo="' + data.photo + '"> <img src="' + data.photo + '" data-state="' + data.photo + '"> </div> <div class="right-suggest-col" data-photo="' + data.photo + '"> <p class="media-heading" data-state="' + data.value + '" data-heading="' + data.comes_f + '">' + data.value + '</p> <p class="suggest-origin" data-state="' + data.comes_f + '">' + data.comes_f + '</p> <p class="location" data-state="' + data.location + '">' + data.location + '</p> </div> </a> '; 6110 6111 if ((data.link == undefined) || (data.link == "") || (data.link == "novalue")) { 6112 strTemplate = strTemplate.replace(/href=".*?"/, "href='#'"); 6113 } 6114 6115 if ((data.photo == undefined) || (data.photo == "") || (data.photo == "novalue")) { 6116 strTemplate = strTemplate.replace(/<img src=".*?>/, ""); 6117 } 6118 } 6119 6120 return strTemplate; 6121 } 6122 }, 6123 }).on('typeahead:selected', function (obj, datum) { 6124 /* 6125 console.log(obj); 6126 console.log(datum); 6127 */ 6128 }); 6129 6130 $('.member_search').each(function () {
6131 var inputWidth = $(this).outerWidth(); 6132 $(this).siblings('.tt-dropdown-menu').css('width', inputWidth + 'px'); 6133 }); 6134 } 6135 </script>
6135 6136
6136<script> 6137 let typeheadElement = '.member_search'; 6138 let TypeheadNameListFunction = 'initializeTypeheadMember_search'; 6139 let typeheadFormElement = undefined; 6140 window.addEventListener('load', () => { 6141 if(typeheadElement.length > 1) { 6142 typeheadFormElement = document.querySelectorAll(typeheadElement); 6143 } 6144 if (typeof typeheadFormElement != "undefined") { 6145 for (let i = 0; i < typeheadFormElement.length; i++) { 6146 let closestForm = typeheadFormElement[i].closest('form'); 6147 if (typeof closestForm != "undefined" && closestForm != null) { 6148 closestForm.addEventListener('focus', typeheadFormClick, false); 6149 } 6150 typeheadFormElement[i].addEventListener('focus', typeheadFormClick, false); 6151 } 6152 } 6153 }); 6154 function initializeTypehead(){ 6155 let splitFunctionNames= TypeheadNameListFunction.split(','); 6156 for ( let funcName of splitFunctionNames) 6157 if (typeof funcName != 'function') { 6158 window[funcName](); // execute the function 6159 6160 } 6161 } 6162 function typeheadFormClick(event) { 6163 6164 let head = document.getElementsByTagName('head')[0]; 6165 let script = document.createElement('script'); 6166 let elementClicked = event.target; 6167 script.type = 'text/javascript'; 6168 script.src = "https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.bundle.min.js"; 6169 script.onload = function () { 6170 initializeTypehead(); 6171 elementClicked.focus(); 6172 }; 6173 head.appendChild(script); 6174 if (typeof typeheadFormElement != "undefined") { 6175 for (let i = 0; i < typeheadFormElement.length; i++) { 6176 let closestForm = typeheadFormElement[i].closest('form'); 6177 if (typeof closestForm != "undefined" && closestForm != null) { 6178 closestForm.removeEventListener('focus', typeheadFormClick, false); 6179 } 6180 typeheadFormElement[i].removeEventListener('focus', typeheadFormClick, false) 6181 } 6182 } 6183 } 6184 6185 6186 </script>
6186 6187 6188
6188<script> 6189 window.addEventListener('load', () => { 6190 let embedlyClass = document.querySelector('.fr-embedly'); 6191 if (typeof embedlyClass != "undefined" && embedlyClass != null) { 6192 let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js"; 6193 let head = document.getElementsByTagName("head")[0]; 6194 let script = document.createElement('script'); 6195 script.type = 'text/javascript'; 6196 script.src = embedlyURI; 6197 script.async = true; 6198 script.onload = function() { 6199 setTimeout(function() { 6200 if (typeof embedly !== 'undefined' && embedly.card) { 6201 document.querySelectorAll('.embedly-card').forEach(function(card) { 6202 embedly.card(card); 6203 }); 6204 } 6205 }, 500); 6206 }; 6207 head.appendChild(script); 6208 } 6209 }); 6210</script>
6210<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
6210<script> 6211 $(function () { 6212 $(".lazyloader").Lazy({ 6213 afterLoad: function(element) { 6214 $(".gridView.activeView").click(); 6215 } 6216 }); 6217 6218 }); 6219 $("button[class*='slick'],button[id*='slick']").click(function () { 6220 $(this).parents(".row").find(".lazyloader").lazy({ 6221 bind: "event", 6222 delay: 0 6223 }); 6224 }); 6225 $("[class*='slick'],[id*='slick']").on("swipe",function(){ 6226 $(this).parents(".row").find(".lazyloader").lazy({ 6227 bind: "event", 6228 delay: 0 6229 }); 6230 }); 6231 </script>
6231<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
6231 6232 </body> 6233 </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.