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