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