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/The-Catholic-Best-Directory.png"> 13 <link rel="icon" type="image/png" href="/images/The-Catholic-Best-Directory.png"> 14 15 <!-- Site Meta Data --> 16 <title>Catholic Website Blog Articles - Find Listing Website Blog Articles</title> 17 <meta name="description" content="Find the best Catholic Website Blog Articles now. Discover the latest Website Blog Articles posted by Listings near you."> 18 <meta name="keywords" content="Website Blog Article,Website Blog Articles,Catholic,Listing,Listings,Catholic Website Blog Articles"> 19 <meta name="robots" content="index, follow"> 20 21 <!-- Canonical URL --> 22 <link rel="canonical" href="https://www.thecatholicbest.com/blog"> 23 <link rel="alternate" type="application/rss+xml" title="The Catholic Best RSS Feed" href="https://www.thecatholicbest.com/rss" /> 24 <link rel='next' href='https://www.thecatholicbest.com/blog?page=2'> 25 26 <!-- Social Media Meta Data --> 27 <meta property="og:type" content="website"> 28 <meta property="og:url" content="https://www.thecatholicbest.com/blog"> 29 <meta property="og:site_name" content="The Catholic Best"> 30 <meta property="og:title" content="Latest Catholic Website Blog Articles Posted by Listings."> 31 <meta property="og:description" content="Find the best Catholic Website Blog Articles now. The most recent Website Blog Articles posted by Listings near you."> 32 <meta property="og:image" content="https://www.thecatholicbest.com/images/Social-Media-Webinar-(1800-x-600-px)-(2).png"> 33
33<script> 34 if (window.innerWidth <= 768 && !document.referrer) { 35 document.write('<div id="mobile-loading-message" aria-hidden="true" onwheel="event.preventDefault()" ontouchmove="event.preventDefault()" style="display:block;position:sticky;top:0;width:100vw;height:100vh;background:rgb(255, 255, 255);color:rgb(92, 89, 84);z-index:9999;font-family:Arial,sans-serif;font-size:16px;line-height:24px;padding-top:50px;text-align:center;touch-action:none;overscroll-behavior:none;pointer-events:auto;"><div style="width:24px;height:24px;border:3px solid rgba(99,111,124,0.2);border-top-color:rgb(99,111,124);border-radius:50%;animation:spin 1.5s linear infinite;margin:10px auto"></div><span class="text" role="status">Loading<br>The Catholic Best</span></div><style>@keyframes spin{to{transform:rotate(360deg);}}</style>'); 36 setTimeout(function(){var p=document.getElementById('mobile-loading-message');if(p){p.style.display='none';p.classList.add('hidden-xs','hide');}},7500);} 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=Quicksand:300,400,600,700,800,900|Alata: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=Quicksand:300,400,600,700,800,900|Alata:300,400,600,700,800,900&display=swap"> 54 <noscript> 55 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Quicksand:300,400,600,700,800,900|Alata: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 <!-- Custom Site-wide HEAD Content --><!--Font Awesome Code -->
106<script src="https://kit.fontawesome.com/77972fc2d8.js" crossorigin="anonymous"></script>
106 107 108<meta name='ir-site-verification-token' value='493220221'> 109 110 111<!--Pinterest--> 112<meta name="p:domain_verify" content="300c52d331b5b34bb5b5e57455346e0e"/> 113<!--PinterestEnd--> 114 115 116
117<script type="application/ld+json"> 118 { 119 "@type": "The Catholic Best", 120 "url": "https://www.thecatholicbest.com", 121 "name": "The Catholic Best", 122 "email": "[email protected]", 123 } 124 </script>
124 125</head> 126 127<body class="general-session"><!-- 128IMPORTANT: 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. 129 130INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section. 131--> 132<style> 133 .upload-form-field::before { 134 content: "choose files"; 135 display: inline-block; 136 border: 1px solid #999; 137 border-radius: 3px; 138 padding: 5px 8px; 139 } 140 #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 { 141 white-space: nowrap !important; 142 } 143 /* Main Website Design */ 144 body,.modal-header,.modal-content,.modal-body,.modal-footer { 145 background: rgb(255, 255, 255); 146 color: rgb(92, 89, 84); 147 font-family: 'Quicksand'; 148 font-size: 16px; 149 } 150 .select2-container .select2-choice { 151 font-family: 'Quicksand'!important; 152 } 153 html{ 154 background: rgb(61, 79, 90) } 155 .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow { 156 color: #000 !important; 157 } 158 a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) { 159 color: rgb(111, 138, 173); 160 } 161 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 { 162 color: rgb(232, 190, 5); 163 } 164 .breadcrumb a{ 165 color: rgba(92, 89, 84,0.9); 166 } 167 .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active { 168 color: rgb(92, 89, 84); 169 } 170 .help-inline, .help-block { 171 color: rgba(92, 89, 84,0.5); 172 } 173 .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { 174 font-family: 'Alata'; 175 } 176 /* Header Design */ 177 .header, .mobile_website_logo img { 178 background: rgb(0, 0, 0); 179 } 180 .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span { 181 color: rgb(255, 255, 255); 182 font-size: 15px; 183 } 184 .header .mini-nav li a:not(.btn):hover { 185 color: rgba(255, 255, 255,0.95); 186 } 187 .header .btn_get_listed { 188 background-color: rgb(111, 138, 173); 189 border: 1px solid rgb(111, 138, 173); 190 color: rgb(255, 255, 255)!important; 191 } 192 .header .btn_get_listed:hover, .header .btn_get_listed:focus { 193 background-color: rgba(111, 138, 173,0.97); 194 } 195 .header .btn_search { 196 background-color: rgba(232, 190, 5,0.97); 197 border: 1px solid rgb(232, 190, 5); 198 color: rgb(255, 255, 255); 199 } 200 .header .btn_search:hover, .header .btn_search:focus { 201 background-color: rgb(232, 190, 5); 202 color: rgb(255, 255, 255); 203 } 204 205 /* Logo Design */ 206 .logo,.logo:hover,.logo:focus { 207 color: rgb(93, 112, 124); 208 font-family: 'Quicksand'; 209 } 210 .logo .slogan { 211 color: rgb(93, 112, 124); 212 } 213 .logo .fa { 214 color: rgb(93, 112, 124); 215 display: none; 216 } 217 218 /* Main Menu Design */ 219 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 220 background: rgb(247, 247, 247); 221 position: sticky; 222 z-index: 1; 223 top: 0px; 224 } 225 /* Google Translate When Main Menu Sticky Top */ 226 @media only screen and (max-width: 1100px) { 227 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 228 top: 50px; 229 } 230 } 231 .header ul.nav.navbar-nav li ul { 232 background-color: rgb(232, 190, 5); 233 } 234 .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span { 235 color: rgb(0, 0, 0); 236 font-weight: 400; 237 } 238 .header .navbar-default, .pagination > .active > a { 239 background-color: rgb(232, 190, 5); 240 } 241 .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{ 242 border-left-color: rgb(0, 0, 0); 243 background: rgb(0, 0, 0); 244 color: rgb(232, 190, 5); 245 }
246 .navbar-default .navbar-toggle .icon-bar { 247 background-color: rgb(0, 0, 0); 248 } 249 .user_sidebar, .main_menu, .compact-mobile-search { 250 color: rgb(0, 0, 0); 251 } 252 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 253 color: rgb(0, 0, 0); 254 font-weight: 400; 255 } 256 .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 { 257 color: rgb(111, 138, 173); 258 } 259 .navbar-default .navbar-nav > li { 260 font-family: 'Quicksand'; 261 } 262 263 #website_logo .logo-image { 264 max-width: 250px; 265 } 266 267 268 /* Footer Design */ 269 .footer { 270 background-color: rgb(61, 79, 90); 271 display: block; 272 } 273 .footer, .footer_menu a,.footer_terms a,.footer_menu .content { 274 color: rgb(255, 255, 255); 275 } 276 .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus { 277 color: rgb(233, 226, 218); 278 } 279 .footer_menu .head { 280 color: rgb(255, 255, 255); 281 } 282 .btn_footer_get_listed { 283 background-color: rgb(232, 190, 5); 284 border: 1px solid rgb(232, 190, 5); 285 color: rgb(255, 255, 255)!important; 286 } 287 .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{ 288 background-color: rgba(232, 190, 5,0.95); 289 } 290 291 /* Homepage Design */ 292 .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 { 293 font-family: 'Quicksand'; 294 } 295 .homepage_settings h1, .homepage_map h1 { 296 color: rgb(255, 255, 255); 297 font-weight: 300; 298 text-align: left; 299 } 300 .homepage_settings h2, .homepage_map h2 { 301 color: rgb(255, 255, 255); 302 font-weight: 400; 303 text-align: left; 304 305 } 306 .homepage_settings .search_box label { 307 color: rgb(255, 255, 255); 308 } 309 .btn_home_search, .search_box input[type=submit] { 310 background-color: rgb(232, 190, 5); 311 border: 1px solid rgb(232, 190, 5); 312 color: rgb(255, 255, 255); 313 } 314 .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus { 315 background-color: rgba(232, 190, 5,0.97); 316 color: rgb(255, 255, 255); 317 } 318 .homepage_settings .search_box { 319 320 background-color: rgba( 255, 255, 255, 0.4); 321 } 322 323 /* Homepage Steps Module */ 324 .homepage_steps { 325 background: none; 326 box-shadow: none; 327 padding: 0; 328 color: rgb(248, 247, 241); 329 } 330 .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{ 331 color: rgb(248, 247, 241)!important; 332 } 333 .homepage_steps .fa { 334 color: rgb(210, 209, 201); 335 background-color: rgba(210, 209, 201,0.075); 336 } 337 .homepage_steps h2 + p { 338 opacity: .6; 339 } 340 341 /* Blog Posts Slider Settings */ 342 #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 { 343 color: rgb(255, 255, 255); 344 } 345 #myCarousel .list-group-item { 346 background-color: rgba(32, 80, 129,0.9); 347 border-color: rgba(32, 80, 129,0.80); 348 } 349 #myCarousel .carousel-caption { 350 background-color: rgba(32, 80, 129,0.8); 351 } 352 #myCarousel .list-group, #myCarousel .carousel-inner { 353 background-color: rgb(32, 80, 129) } 354 #myCarousel .list-group .active, #myCarousel .list-group-item:hover { 355 background-color: rgb(32, 80, 129) } 356 #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{ 357 color: rgb(250, 250, 250); 358 } 359 360 /* Additional Settings */ 361 .well blockquote { 362 background: rgb(255, 255, 255) none repeat scroll 0 0; 363 border-color: rgb(247, 247, 247); 364 color: rgb(92, 89, 84); 365 padding: 10px 20px; 366 } 367 .account-form-box form table tr td table { 368 background-color: transparent!important; 369 border: none!important; 370 } 371 372 .account-form-box form table tr td table td { 373 background-color: transparent!important; 374 color: rgb(92, 89, 84)!important; 375 border: none!important; 376 } 377 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{ 378 color: rgb(92, 89, 84)!important; 379 } 380 .table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td { 381 border-color: rgba(35, 35, 35,0.1); 382 background-color: rgb(238, 238, 238); 383 color: rgb(35, 35, 35); 384 font-weight:600; 385 border-left: none; 386 border-bottom-width: 1px; 387 } 388 .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer { 389 border-color: rgba(35, 35, 35,0.1); 390 } 391 .table > tfoot > tr > td:not(:last-child) { 392 border-right: 1px solid rgba(35, 35, 35,0.1); 393 } 394 table.dataTable.no-footer, table.dataTable { 395 border: 1px solid rgb(247, 247, 247)!important; 396 } 397 .table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div { 398 border-top:1px solid rgb(247, 247, 247); 399 } 400 .table-view .table-view-group:last-child { 401 border-bottom:1px solid rgb(247, 247, 247); 402 } 403 table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr
403-view .table-striped { 404 background-color: rgb(255, 255, 255)!important; 405 } 406 .table-striped.dataTable, .table-striped, .fr-view .table-striped { 407 border: 1px solid rgba(35, 35, 35,0.15); 408 border-collapse: separate; 409 overflow: hidden; 410 } 411 table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 412 overflow: visible; 413 } 414 .table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) { 415 background-color: rgba(255, 255, 255,0.5)!important; 416 } 417 .nav-tabs, hr, .account-menu-title, .modal-header { 418 border-color: rgb(247, 247, 247); 419 } 420 .sidemenu_panel .list-group-item{ 421 background-color: transparent!important; 422 color: rgb(41, 41, 41)!important; 423 } 424 .img-thumbnail { 425 background-color: rgb(255, 255, 255)!important; 426 border: 1px solid rgb(247, 247, 247); 427 } 428 .member_admin_sidemenu p, .member_admin_sidemenu h3 { 429 color: rgb(41, 41, 41)!important; 430 } 431 .close { 432 color: rgb(92, 89, 84); 433 opacity: 1; 434 } 435 .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 { 436 font-size:34px; 437 display: block; 438 } 439 .member_results_header h2, .feature_results_header h2 { 440 font-size:28px; 441 display: block; 442 } 443 .homepage_settings { 444 padding-top: 70px; 445 padding-bottom: 70px; 446 } 447 @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 448 @media only screen and (max-width: 768px) { 449 .member-profile-header .favorite {float:none} 450 } 451 452 453 @media only screen and (max-width: 1100px) { 454 } 455 .views > i.fa.activeView, .views > i.fa:hover { 456 background-color: rgb(92, 89, 84); 457 color: rgb(255, 255, 255); 458 } 459 .views > i.fa { 460 background-color: rgba(92, 89, 84,0.1); 461 color: rgb(92, 89, 84); 462 } 463 .ui-rangeSlider-label { 464 background-color: rgb(232, 190, 5)!important; 465 color: rgb(0, 0, 0)!important; 466 } 467 .pricing_menu li .title { 468 background: rgb(61, 79, 90); 469 color: rgb(255, 255, 255); 470 } 471 p.account-tip{ 472 color: rgb(92, 89, 84); 473 } 474 .circled_number { 475 background: rgb(32, 80, 129); 476 color: rgb(255, 255, 255); 477 } 478 .pic { 479 background-color: rgba(61, 79, 90,0.8); 480 color: rgb(255, 255, 255); 481 background-repeat: no-repeat; 482 background-position: center; 483 } 484 .pic .pic-caption { 485 background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(61, 79, 90,0.85) 50%); 486 color: rgb(255, 255, 255); 487 } 488 .slick-prev-fa i, .slick-next-fa i{ 489 color: rgb(61, 79, 90); 490 } 491 .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 { 492 background-color: rgb(255, 255, 255); 493 border-color: rgb(247, 247, 247); 494 color: rgb(41, 41, 41); 495 } 496 .nav-pills > li.active a, .nav-pills > li > a:hover { 497 background-color: rgb(61, 79, 90)!important; 498 border-color: rgb(61, 79, 90)!important; 499 color: rgb(255, 255, 255)!important; 500 } 501 .sidemenu_panel .panel-heading { 502 color: rgb(41, 41, 41)!important; 503 background-color: rgb(255, 255, 255)!important; 504 } 505 .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a { 506 background: rgba(255, 255, 255,0.5); 507 color: #85837f; 508 } 509 .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 { 510 background: rgba(255, 255, 255,1); 511 color: rgb(92, 89, 84); 512 }
513 .author-snapshot .well:not(.well.bg-default) { 514 background-color: rgb(255, 255, 255)!important; 515 border-color: rgb(247, 247, 247)!important; 516 color: rgb(41, 41, 41)!important; 517 } 518 .nav-tabs>li>a, .nav-pills>li>a { 519 font-weight: 600; 520 } 521 .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{ 522 color: rgba(41, 41, 41,0.5); 523 } 524 #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a { 525 color: rgb(41, 41, 41) !important; 526 } 527 .popover { 528 background-color: rgb(255, 255, 255); 529 border-color: rgb(255, 255, 255); 530 padding:0; 531 text-align:left; 532 } 533 .popover-title, .popover-content { 534 background-color: rgb(255, 255, 255); 535 color: rgb(41, 41, 41); 536 border-color: rgb(255, 255, 255); 537 text-align:left; 538 } 539 .popover-content { 540 background-color: rgba(41, 41, 41,.05); 541 border-radius: 4px; 542 transform: translate(-1px, -1px); 543 width: calc(100% + 2px); 544 margin-bottom: -2px; 545 } 546 .popover.left > .arrow::after { 547 border-left-color: rgb(255, 255, 255)!important; 548 } 549 .popover.right > .arrow::after { 550 border-right-color: rgb(255, 255, 255)!important; 551 } 552 .popover.bottom > .arrow::after { 553 border-bottom-color: rgb(255, 255, 255)!important; 554 } 555 .popover.top > .arrow::after { 556 border-top-color: rgb(255, 255, 255)!important; 557 } 558 .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{ 559 background-color: rgb(255, 255, 255); 560 color: rgb(92, 89, 84); 561 } 562 .module h1, .module h2, .module h3, .module h4, .module h5 { 563 color: rgb(62, 62, 62); 564 } 565 .module p:not(.fr-box.fr-basic .fr-element p) { 566 color: rgb(41, 41, 41); 567 } 568 .pagination>.active>a { 569 border-color: rgba(0, 0, 0,0.2); 570 } 571 .pagination>.active>a { 572 color: rgb(0, 0, 0); 573 } 574 .pagination > .active > a:hover, .pagination > .active > a:focus { 575 border-color: rgba(0, 0, 0,0.2); 576 background-color: rgb(232, 190, 5); 577 color: rgb(0, 0, 0); 578 } 579 .pagination > li > a { 580 color: rgb(232, 190, 5); 581 border-color: rgba(232, 190, 5,0.2); 582 background-color: rgb(0, 0, 0); 583 } 584 .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { 585 background-color: rgb(232, 190, 5); 586 border-color: rgb(232, 190, 5); 587 color: rgb(0, 0, 0); 588 } 589 590 .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{ 591 background-color: rgb(238, 238, 238)!important; 592 color: rgb(85, 85, 85)!important; 593 } 594 .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover { 595 background-color: rgb(40, 146, 198)!important; 596 border-color: rgb(40, 146, 198); 597 color: rgb(255, 254, 254); 598 } 599 .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a { 600 background-color: rgb(51, 122, 183)!important; 601 color: rgb(255, 255, 255)!important; 602 } 603 .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover { 604 background-color: rgb(111, 138, 173)!important; 605 border-color: rgb(111, 138, 173); 606 color: rgb(255, 255, 255); 607 } 608 609 .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow { 610 border-color: transparent transparent transparent rgb(51, 122, 183)!important; 611 } 612 .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{ 613 border-color: rgb(51, 122, 183) rgb(51, 122, 183) rgb(51, 122, 183) transparent!important; 614 } 615 616 li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge { 617 border-color: rgb(30, 166, 154) rgb(30, 166, 154) rgb(30, 166, 154) transparent!important; 618 } 619 620 li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge { 621 border-color: rgb(238, 238, 238) rgb(238, 238, 238) rgb(238, 238, 238) transparent!important; 622 } 623 624 .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover { 625 background-color: rgb(30, 166, 154)!important; 626 color: rgb(255, 255, 255)!important; 627 } 628 629 .member_wizard2 li { 630 color: rgb(255, 255, 255); 631 border-right: 10px solid rgb(255, 255, 255); 632 } 633 634 li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow { 635 border-color: transparent transparent transparent rgb(30, 166, 154)!important; 636 } 637 638 li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{ 639 border-color: transparent transparent transparent rgb(238, 238, 238)!important; 640 } 641 642 /* Default Colors */ 643 .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 { 644 background-color: rgb(61, 79, 90); 645 border-color: rgb(61, 79, 90); 646 color: rgb(255, 255, 255); 647 } 648 .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 { 649 background-color: rgba(61, 79, 90,0.95); 650 border-color: rgb(61, 79, 90); 651 color: rgb(255, 255, 255); 652 } 653 .panel-primary { 654 background-color: #e2e5e6;
655 border-color: rgb(61, 79, 90); 656 } 657 .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary { 658 background-color: rgb(61, 79, 90); 659 color: rgb(255, 255, 255); 660 } 661 .bg-primary .badge { 662 background-color:rgb(255, 255, 255); 663 color: rgb(61, 79, 90); 664 } 665 .btn-primary.btn-outline { 666 background: transparent; 667 color: rgb(61, 79, 90); 668 transition: all 250ms ease-in-out 0ms; 669 } 670 .btn-primary.btn-outline:hover { 671 background: rgba(61, 79, 90,0.1); 672 color: rgb(61, 79, 90); 673 } 674 .alert-primary { 675 background-color:rgba(61, 79, 90,0.7); 676 border-color:rgba(61, 79, 90,0.2); 677 color: rgba(255, 255, 255,0.9); 678 } 679 .alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle { 680 background-color: #d8dcde; 681 border-color: #d8dcde; 682 color: rgb(61, 79, 90); 683 color: color-mix(in srgb, rgb(61, 79, 90) 50%, rgb(92, 89, 84) 50%); 684 } 685 .btn.dropdown-toggle.btn-primary *, .btn-primary a { 686 color: rgb(255, 255, 255); 687 } 688 .text-primary{ 689 color: rgb(61, 79, 90); 690 } 691 .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 { 692 background-color: rgb(111, 138, 173); 693 border-color: rgb(111, 138, 173); 694 color: rgb(255, 255, 255); 695 } 696 .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 { 697 background-color: rgba(111, 138, 173,0.95); 698 border-color: rgb(111, 138, 173); 699 color: rgb(255, 255, 255); 700 } 701 .panel-info { 702 background-color: #e9edf3; 703 border-color: rgb(111, 138, 173); 704 } 705 .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 { 706 background-color: rgb(111, 138, 173); 707 color: rgb(255, 255, 255); 708 } 709 .bg-info .badge { 710 background-color:rgb(255, 255, 255); 711 color: rgb(111, 138, 173); 712 } 713 .btn-info.btn-outline { 714 background: transparent; 715 color: rgb(111, 138, 173); 716 transition: all 250ms ease-in-out 0ms; 717 } 718 .btn-info.btn-outline:hover { 719 background: rgba(111, 138, 173,0.1); 720 color: rgb(111, 138, 173); 721 } 722 .alert-info { 723 background-color:rgba(111, 138, 173,0.7); 724 border-color:rgba(111, 138, 173,0.2); 725 color: rgba(255, 255, 255,0.9); 726 } 727 .alert-info-subtle, .label-info-subtle, .badge-info-subtle { 728 background-color: #e2e8ef; 729 border-color: #e2e8ef; 730 color: rgb(111, 138, 173); 731 color: color-mix(in srgb, rgb(111, 138, 173) 50%, rgb(92, 89, 84) 50%); 732 } 733 .btn.dropdown-toggle.btn-info *, .btn-info a { 734 color: rgb(255, 255, 255); 735 } 736 .text-info{ 737 color: rgb(111, 138, 173); 738 } 739 .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 { 740 background-color: rgb(111, 138, 173); 741 border-color: rgb(111, 138, 173); 742 color: rgb(255, 255, 255); 743 } 744 .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 { 745 background-color: rgba(111, 138, 173,0.95); 746 border-color: rgb(111, 138, 173); 747 color: rgb(255, 255, 255); 748 } 749 .panel-success { 750 background-color: #e9edf3; 751 border-color: rgb(111, 138, 173); 752 } 753 .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 { 754 background-color: rgb(111, 138, 173); 755 color: rgb(255, 255, 255); 756 } 757 .bg-success .badge { 758 background-color: rgb(255, 255, 255); 759 color: rgb(111, 138, 173); 760 } 761 .btn-success.btn-outline { 762 background: transparent; 763 color: rgb(111, 138, 173); 764 transition: all 250ms ease-in-out 0ms; 765 } 766 .btn-success.btn-outline:hover { 767 background: rgba(111, 138, 173,0.1); 768 color: rgb(111, 138, 173); 769 } 770 .alert-success { 771 background-color:rgba(111, 138, 173,0.7); 772 border-color:rgba(111, 138, 173,0.2); 773 color: rgba(255, 255, 255,0.9); 774 } 775 .alert-success-subtle, .label-success-subtle, .badge-success-subtle { 776 background-color: #e2e8ef; 777 border-color: #e2e8ef; 778 color: rgb(111, 138, 173); 779 color: color-mix(in srgb, rgb(111, 138, 173) 50%, rgb(92, 89, 84) 50%); 780 } 781 .btn.dropdown-toggle.btn-success *, .btn-success a { 782 color: rgb(255, 255, 255); 783 } 784 .text-success{ 785 color: rgb(111, 138, 173); 786 } 787 .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 { 788 background-color: rgb(40, 146, 198); 789 border-color: rgb(40, 146, 198); 790 color: rgb(255, 254, 254); 791 } 792 .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 { 793 background-color: rgba(40, 146, 198,0.95); 794 border-color: rgb(40, 146, 198); 795 color: rgb(255, 254, 254); 796 } 797 .panel-warning { 798 background-color: #dfeff6; 799 border-color: rgb(40, 146, 198); 800 } 801 .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 { 802 background-color: rgb(40, 146, 198); 803 color: rgb(255, 254, 254); 804 } 805 .bg-warning .badge { 806 background-color: rgb(255, 254, 254); 807 color: rgb(40, 146, 198); 808 } 809 .btn-warning.btn-outline { 810 background: transparent; 811 color: rgb(40, 146, 198); 812 transition: all 250ms ease-in-out 0ms; 813 } 814 .btn-warning.btn-outline:hover { 815 background: rgba(40, 146, 198,0.1); 816 color: rgb(40, 146, 198); 817 } 818 .alert-warning { 819 background-color:rgba(40, 146, 198,0.7); 820 border-color:rgba(40, 146, 198,0.2); 821 color: rgba(255, 254, 254,0.9); 822 } 823 .alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle { 824 background-color: #d4e9f4; 825 border-color: #d4e9f4; 826 color: rgb(40, 146, 198); 827 color: color-mix(in srgb, rgb(40, 146, 198) 50%, rgb(92, 89, 84) 50%); 828 } 829 .btn.dropdown-toggle.btn-warning *, .btn-warning a { 830 color: rgb(255, 254, 254); 831 } 832 .text-warning { 833 color: rgb(40, 146, 198); 834 } 835 .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 { 836 background-color: rgb(182, 39, 45); 837 border-color: rgb(182, 39, 45); 838 color: rgb(255, 255, 255); 839 } 840 .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 { 841 background-color: rgba(182, 39, 45,0.95); 842 border-color: rgb(182, 39, 45); 843 color: rgb(255, 255, 255); 844 } 845 .has-error .form-control { 846 border-color: rgb(182, 39, 45); 847 } 848 .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 { 849 background: rgb(182, 39, 45); 850 color: rgb(255, 255, 255) !important; 851 } 852 .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 { 853 color: rgb(182, 39, 45); 854 } 855 .panel-danger { 856 background-color: #f4dfe0; 857 border-color: rgb(182, 39, 45); 858 } 859 .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 { 860 background-color: rgb(182, 39, 45); 861 color: rgb(255, 255, 255); 862 } 863 .bg-danger .badge { 864 background-color: rgb(255, 255, 255); 865 color: rgb(182, 39, 45); 866 } 867 .btn-danger.btn-outline { 868 background: transparent; 869 color: rgb(182, 39, 45); 870 transition: all 250ms ease-in-out 0ms; 871 } 872 .btn-danger.btn-outline:hover { 873 background: rgba(182, 39, 45,0.1); 874 color: rgb(182, 39, 45); 875 } 876 .alert-danger { 877 background-color:rgba(182, 39, 45,0.7); 878 border-color:rgba(182, 39, 45,0.2); 879 color: rgba(255, 255, 255,0.9); 880 } 881 .alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle { 882 background-color: #f0d4d5; 883 border-color: #f0d4d5; 884 color: rgb(182, 39, 45); 885 color: color-mix(in srgb, rgb(182, 39, 45) 50%, rgb(92, 89, 84) 50%); 886 } 887 .btn.dropdown-toggle.btn-danger *, .btn-danger a { 888 color: rgb(255, 255, 255); 889 } 890 .text-danger{ 891 color: rgb(182, 39, 45); 892 } 893 .btn-default, .tags a, .btn-default.disabled, .btn-default.disabled.active, .btn-default.disabled.focus, .btn-default.disabled:active, .btn-default.disabled:focus, .btn-default.disabled:hover, .btn-default[disabled], .btn-default[disabled].active, .btn-default[disabled].focus, .btn-default[disabled]:active, .btn-default[disabled]:focus, .btn-default[disabled]:hover, fieldset[disabled] .btn-default, fieldset[disabled] .btn-default.active, fieldset[disabled] .btn-default.focu
893s, 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 { 894 background-color: rgb(238, 238, 238); 895 border-color: rgb(238, 238, 238); 896 color: rgb(35, 35, 35); 897 } 898 .btn-default:hover, .btn-default:focus, .btn-default:active,.btn-default:active:focus, .btn-default:active:hover,.tags a:hover, .nav > li > a.btn-default:focus, .nav > li > a.btn-default:hover,.btn-default.active,.open > .dropdown-toggle.btn-default, .btn-default.active.focus, .btn-default.active:focus, .btn-default.active:hover, .btn-default:active.focus, .open>.dropdown-toggle.btn-default:hover, .open>.dropdown-toggle.btn-default:focus, .open>.dropdown-toggle.btn-default.focus,a.bg-default:focus,a.bg-default:hover, .panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading, .btn.dropdown-toggle.btn-default:hover, #popover .mini_profile_pic, .label-default[href]:focus, .label-default[href]:hover { 899 background-color: rgba(238, 238, 238,0.95); 900 border-color: rgb(238, 238, 238); 901 color: rgb(35, 35, 35); 902 } 903 .sidemenu_panel .panel-default .panel_heading { 904 background-color: rgb(238, 238, 238)!important; 905 border-color: rgb(238, 238, 238)!important; 906 color: rgb(35, 35, 35)!important; 907 } 908 .panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading { 909 910 box-shadow: 0 0 1000px 0 rgba(35, 35, 35,0.02) inset; 911 background-color: rgb(238, 238, 238); 912 } 913 .panel-default, .member_accounts .panel-default { 914 915 background-color: rgba(238, 238, 238,0.15); 916 border-color: #fdfdfd; 917 border-color: color-mix(in srgb,rgb(238, 238, 238) 100%,rgba(238, 238, 238) 10%); 918 } 919 .member_admin_sidemenu .panel-default { 920 background-color: transparent; 921 } 922 .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 { 923 background-color: rgb(238, 238, 238); 924 color: rgb(35, 35, 35); 925 } 926 .bg-default .badge { 927 background-color: rgb(35, 35, 35); 928 color: rgb(238, 238, 238); 929 } 930 .btn-default.btn-outline { 931 background: transparent; 932 color: rgb(238, 238, 238); 933 transition: all 250ms ease-in-out 0ms; 934 } 935 .btn-default.btn-outline:hover { 936 background: rgba(238, 238, 238,0.1); 937 color: rgb(238, 238, 238); 938 } 939 .alert-default { 940 background-color:rgb(238, 238, 238); 941 border-color:rgb(238, 238, 238); 942 color: rgb(35, 35, 35); 943 } 944 .alert-default-subtle, .label-default-subtle, .badge-default-subtle { 945 background-color:rgba(238, 238, 238,0.5); 946 border-color: rgba(238, 238, 238,0.5); 947 color: rgb(35, 35, 35); 948 color: color-mix(in srgb, rgb(35, 35, 35) 50%, rgb(92, 89, 84) 50%); 949 } 950 .btn.dropdown-toggle.btn-default *, .btn-default a { 951 color: rgb(35, 35, 35); 952 } 953 .text-default{ 954 color: rgb(238, 238, 238); 955 } 956 .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 { 957 background-color: rgb(92, 89, 84); 958 border: 1px solid rgb(92, 89, 84); 959 color: rgb(255, 255, 255); 960 } 961 .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 { 962 background-color: rgba(92, 89, 84,0.95); 963 border-color: rgb(92, 89, 84); 964 color: rgb(255, 255, 255); 965 } 966 .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 { 967 background-color: rgb(92, 89, 84); 968 color: rgb(255, 255, 255); 969 } 970 .bg-secondary .badge { 971 background-color:rgb(255, 255, 255); 972 color: rgb(92, 89, 84); 973 } 974 .btn-secondary.btn-outline { 975 background: transparent; 976 color: rgb(92, 89, 84); 977 transition: all 250ms ease-in-out 0ms; 978 } 979 .btn-secondary.btn-outline:hover { 980 background: rgba(92, 89, 84,0.1); 981 color: rgb(92, 89, 84); 982 } 983 .panel-secondary { 984 background-color: #e7e6e5; 985 border-color: rgb(92, 89, 84); 986 } 987 .alert-secondary { 988 background-color:rgb(92, 89, 84); 989 border-color:rgb(92, 89, 84); 990 color: rgb(255, 255, 255); 991 } 992 .alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle { 993 background-color:rgba(92, 89, 84,0.8); 994 border-color: rgba(92, 89, 84,0.5);
995 color: rgb(255, 255, 255); 996 } 997 .btn-outline { 998 -webkit-backdrop-filter: blur(5px); 999 backdrop-filter: blur(5px); 1000 } 1001 .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 { 1002 background-color: rgb(255, 255, 255); 1003 border: 1px solid rgb(255, 255, 255); 1004 color: rgb(92, 89, 84); 1005 } 1006 .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 { 1007 background-color: rgba(255, 255, 255,0.95); 1008 border: 1px solid rgb(255, 255, 255); 1009 color: rgb(92, 89, 84); 1010 } 1011 .btn.btn-body.dropdown-toggle * { 1012 color: rgb(92, 89, 84) 1013 } 1014 .btn-body.dropdown-toggle + ul li, .daterangepicker .ranges { 1015 color: #333; 1016 } 1017 .bg-body { 1018 background: rgb(255, 255, 255); 1019 color: rgb(92, 89, 84); 1020 } 1021 .bg-content-box { 1022 background: rgb(255, 255, 255); 1023 color: rgb(41, 41, 41); 1024 } 1025 .bg-content-box-border { 1026 background: rgb(247, 247, 247); 1027 } 1028 .btn.dropdown-toggle.btn-secondary *, .btn-secondary a { 1029 color: rgb(255, 255, 255); 1030 } 1031 .text-secondary { 1032 color: rgb(92, 89, 84); 1033 } 1034 .text-body { 1035 color: rgb(255, 255, 255); 1036 } 1037 .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary { 1038 border-radius: 10px; 1039 background-color: rgb(244, 244, 244); 1040 } 1041 1042 /* Footer Newsletter Row */ 1043 .newsletter_row .alert { 1044 color: rgb(255, 255, 255); 1045 } 1046 .newsletter_row { 1047 background-color: rgb(93, 112, 124); 1048 color: rgb(255, 255, 255); 1049 } 1050 .newsletter_row input[type="submit"],.newsletter_footer_button { 1051 background-color: rgba(111, 138, 173,0.97); 1052 color: rgb(255, 255, 255); 1053 border-color: rgb(111, 138, 173); 1054 } 1055 .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus { 1056 background-color: rgb(111, 138, 173); 1057 color: rgb(255, 255, 255); 1058 } 1059 .newsletter_button_left { 1060 border-right: 1px solid rgba(255, 255, 255,0.2); 1061 } 1062 .newsletter_button_right { 1063 border-left: 1px solid rgba(255, 255, 255,0.2); 1064 } 1065 .newsletter_row small.help-block { 1066 background: rgb(255, 255, 255); 1067 margin-top: -5px; 1068 float: left; 1069 padding: 8px; 1070 border-radius: 1px; 1071 color: rgb(93, 112, 124); 1072 text-transform: capitalize; 1073 } 1074 .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{ 1075 color: rgb(255, 255, 255); 1076 } 1077 @media only screen and (max-width: 767px) { 1078 .newsletter_button_right,.newsletter_button_left{ 1079 border: none; 1080 margin: 5px 0; 1081 } 1082 } 1083 1084 /* Font Sizes */ 1085 1086 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 1087 font-size: 16px; 1088 } 1089 .header .logo { 1090 font-size: 34px; 1091 } 1092 .homepage_title h1, .homepage_settings h1 { 1093 letter-spacing: -1px; 1094 font-size: 48px; 1095 margin-bottom: 20px; 1096 } 1097 @media only screen and (max-width: 768px) { 1098 .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;} 1099 } 1100 .homepage_settings h2 { 1101 font-size: 28px; 1102 } 1103 1104 .ui-rangeSlider-bar{ 1105 background: rgb(232, 190, 5)!important; 1106 } 1107 1108 1109 1110 @media only screen and (max-width: 1024px){ 1111 .modal {margin-top: 40px;} 1112 } 1113 @media only screen and (max-width: 768px){ 1114 .modal {margin-top: 60px;} 1115 } 1116 1117 /* Calendar Styles */ 1118 1119 #cal-slide-content { 1120 color: rgb(35, 35, 35)!important; 1121 background-color: rgb(238, 238, 238)!important; 1122 -webkit-box-shadow: none!important; 1123 box-shadow: none!important; 1124 } 1125 #cal-slide-content a.event-item { 1126 color: rgb(35, 35, 35)!important; 1127 font-weight:bold!important; 1128 } 1129 #cal-slide-content a.event-item small { 1130 display: inline-block; 1131 } 1132 .cal-month-box, .cal-year-box, .cal-week-box { 1133 border: 1px solid rgb(247, 247, 247)!important; 1134 } 1135 .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid { 1136 border-bottom: 1px solid rgb(247, 247, 247)!important; 1137 } 1138 .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] { 1139 border-right: 1px solid rgb(247, 247, 247)!important; 1140 } 1141 .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) { 1142 background-color: rgb(255, 255, 255)!important; 1143 } 1144 .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) { 1145 color: rgb(35, 35, 35)!important; 1146 } 1147 .cal-day-today span[data-cal-date] { 1148 color: rgb(92, 89, 84)!important; 1149 } 1150 .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child { 1151 border: 0!important; 1152 } 1153 .cal-row-head { 1154 background: rgb(255, 255, 255)!important; 1155 } 1156 .day-highlight:hover, .day-highlight { 1157 background-color: rgb(247, 247, 247)!important; 1158 } 1159 .cal-event-list .event.pull-left { 1160 background-color: rgb(92, 89, 84)!important; 1161 opacity: 0.4; 1162 margin-top: 7px!important; 1163 } 1164 .cal-day-today { 1165 background-color: rgb(247, 247, 247)!important; 1166 } 1167 #cal-day-tick { 1168 border: 1px solid rgb(247, 247, 247)!important; 1169 background-color: rgb(247, 247, 247)!important; 1170 } 1171 .cal-day-weekend span[data-cal-date]{
1172 color: rgb(92, 89, 84)!important; 1173 } 1174 .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs { 1175 border-radius: 10px; 1176 background: #151515!important; 1177 } 1178 .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsOverflow { 1179 border-radius:0; 1180 } 1181 1182 #first_container .favorite, #first_container .fa.favorite { 1183 color: rgb(35, 35, 35); 1184 background: rgb(238, 238, 238); 1185 border: 1px solid rgb(238, 238, 238); 1186 white-space:nowrap!important; 1187 height:24px; 1188 padding:0 6px; 1189 border-radius:8px; 1190 } 1191 #first_container .favorite span, #first_container .fa.favorite span { 1192 font-family: 'Quicksand'; 1193 white-space:nowrap!important; 1194 } 1195 #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) { 1196 color: rgb(232, 190, 5); 1197 } 1198 #first_container .favorite::after, #first_container .fa.favorite::after { 1199 font-family: 'Quicksand'; 1200 margin-left: 3px; 1201 } 1202 #first_container .favorite span, #first_container .fa.favorite span{ 1203 padding-left: 4px; 1204 font-family: 'Quicksand'; 1205 font-size: 11px; 1206 letter-spacing:.5px; 1207 top:-1px; 1208 position:relative; 1209 font-weight:700; 1210 } 1211 #first_container .favorite span:empty, #first_container .fa.favorite span:empty { 1212 padding: 0; 1213 } 1214 #first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number { 1215 padding: 1px 0; 1216 border-radius: 100px; 1217 display: inline-block; 1218 font-weight: bold; 1219 min-width: 15px; 1220 font-size: .8em; 1221 vertical-align: bottom; 1222 height: 15px; 1223 line-height: 13px; 1224 margin-left: 3px; 1225 text-align: center; 1226 } 1227 #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number { 1228 background: rgb(232, 190, 5); 1229 color: #fff; 1230 } 1231 1232 span.checkbox_value::after { 1233 content: ', '; 1234 } 1235 1236 span.checkbox_value:last-child::after { 1237 content: ''; 1238 } 1239 1240 .member_results .grid_element{ 1241 position:relative; 1242 overflow:hidden; 1243 display: inline-block; 1244 width:100%; 1245} 1246.member_results .grid_element::before { 1247 position: absolute; 1248 top: 24px; 1249 text-align: center; 1250 width: 200px; 1251 left: -62px; 1252 transform: rotate(-45deg); 1253 -webkit-transform: rotate(-45deg); 1254 z-index: 1; 1255 line-height: 1.2em; 1256 padding: 6px 0; 1257 font-weight: bold; 1258 letter-spacing: 1px; 1259} 1260@media only screen and (max-width: 767px) { 1261 .member_results .grid-container > hr { 1262 border-color: transparent; 1263 } 1264 .member_results .grid_element{ 1265 overflow:visible; 1266 } 1267 .member_results .grid_element::before { 1268 top: -19px!important; 1269 transform: rotate(0deg); 1270 -webkit-transform: rotate(0deg); 1271 font-size: 10px !important; 1272 letter-spacing: 0; 1273 width: auto; 1274 padding: 3px 6px; 1275 } 1276} 1277 1278 1279 1280 .member_results .grid-container { 1281 margin-top: 30px; 1282 } 1283 .member_results .grid-container > hr { 1284 border-color: transparent; 1285 background: transparent; 1286 } 1287 .member_results.level_14 .grid_element{ 1288 overflow:visible; 1289 } 1290 .member_results.level_14 .grid_element::before { 1291 top: calc(-10px - 10px); 1292 transform: rotate(0deg); 1293 -webkit-transform: rotate(0deg); 1294 letter-spacing: 0; 1295 width: auto; 1296 padding: 3px 8px; 1297 left: calc(-4px + 0.5px); 1298 } 1299 1300 .member_results .grid-container { 1301 margin-top: 30px; 1302 } 1303 .member_results .grid-container > hr { 1304 border-color: transparent; 1305 background: transparent; 1306 } 1307 .member_results.level_15 .grid_element{ 1308 overflow:visible; 1309 } 1310 .member_results.level_15 .grid_element::before { 1311 top: calc(-10px - 10px); 1312 transform: rotate(0deg); 1313 -webkit-transform: rotate(0deg); 1314 letter-spacing: 0; 1315 width: auto; 1316 padding: 3px 8px; 1317 left: calc(-4px + 0.5px); 1318 } 1319 1320 .member_results .grid-container { 1321 margin-top: 30px; 1322 } 1323 .member_results .grid-container > hr { 1324 border-color: transparent; 1325 background: transparent; 1326 } 1327 .member_results.level_16 .grid_element{ 1328 overflow:visible; 1329 } 1330 .member_results.level_16 .grid_element::before { 1331 top: calc(-10px - 10px); 1332 transform: rotate(0deg); 1333 -webkit-transform: rotate(0deg); 1334 letter-spacing: 0; 1335 width: auto; 1336 padding: 3px 8px; 1337 left: calc(-4px + 0.5px); 1338 } 1339 1340 .member_results .grid-container { 1341 margin-top: 30px; 1342 } 1343 .member_results .grid-container > hr { 1344 border-color: transparent; 1345 background: transparent; 1346 } 1347 .member_results.level_17 .grid_element{ 1348 overflow:visible; 1349 } 1350 .member_results.level_17 .grid_element::before { 1351 top: calc(-10px - 10px); 1352 transform: rotate(0deg); 1353 -webkit-transform: rotate(0deg); 1354 letter-spacing: 0; 1355 width: auto; 1356 padding: 3px 8px; 1357 left: calc(-4px + 0.5px); 1358 } 1359 1360 .member_results.level_18 .grid_element { 1361 border-style: solid; 1362 border-radius:0px;border-width:2px;border-color:rgb(198, 198, 198); } 1363 .member_results.level_18 .grid_element::before { 1364 border-bottom-left-radius:0!important; 1365 border-radius:0px;color: #fff ;background-color:rgb(198, 198, 198);font-size:10px;content:'Featured'; 1366 } 1367 .member_results.level_18 .grid_element { 1368 padding:10px; 1369 } 1370 @media only screen and (max-width: 767px) { 1371 .member_results.level_18 .grid_element::before { 1372 left:-2px;}} 1373 .member_results .grid-container { 1374 margin-top: 30px; 1375 } 1376 .member_results .grid-container > hr { 1377 border-color: transparent; 1378 background: transparent; 1379 } 1380 .member_results.level_18 .grid_element{ 1381 overflow:visible; 1382 } 1383 .member_results.level_18 .grid_element::before { 1384 top: calc(-10px - 10px); 1385 transform: rotate(0deg); 1386 -webkit-transform: rotate(0deg); 1387 letter-spacing: 0; 1388 width: auto; 1389 padding: 3px 8px; 1390 left: calc(-2px + 0.5px); 1391 } 1392 1393 .member_results .grid-container { 1394 margin-top: 30px; 1395 } 1396 .member_results .grid-container > hr { 1397 border-color: transparent; 1398 background: transparent; 1399 } 1400 .member_results.level_19 .grid_element{ 1401 overflow:visible; 1402 } 1403 .member_results.level_19 .grid_element::before { 1404 top: calc(-10px - 10px); 1405 transform: rotate(0deg); 1406 -webkit-transform: rotate(0deg); 1407 letter-spacing: 0; 1408 width: auto; 1409 padding: 3px 8px; 1410 left: calc(-4px + 0.5px); 1411 } 1412 1413 .member_results.level_20 .grid_element { 1414 border-style: solid; 1415 border-radius:0px;border-width:4px;border-color:rgb(222, 222, 222); } 1416 .member_results.level_20 .grid_element::before { 1417 border-bottom-left-radius:0!important; 1418 border-radius:0px;color:rgb(0, 0, 0);background-color:rgb(222, 222, 222);font-size:10px;content:'Featured'; 1419 } 1420 .member_results.level_20 .grid_element { 1421 padding:10px; 1422 } 1423 @media only screen and (max-width: 767px) { 1424 .member_results.level_20 .grid_element::before { 1425 left:-4px;}} 1426 .member_results .grid-container { 1427 margin-top: 30px; 1428 } 1429 .member_results .grid-container > hr { 1430 border-color: transparent; 1431 background: transparent; 1432 } 1433 .member_results.level_20 .grid_element{ 1434 overflow:visible; 1435 } 1436 .member_results.level_20 .grid_element::before { 1437 top: calc(-10px - 10px); 1438 transform: rotate(0deg); 1439 -webkit-transform: rotate(0deg); 1440 letter-spacing: 0; 1441 width: auto; 1442 padding: 3px 8px; 1443 left: calc(-4px + 0.5px); 1444 } 1445 1446 .member_results .grid-container { 1447 margin-top: 30px; 1448 } 1449 .member_results .grid-container > hr { 1450 border-color: transparent; 1451 background: transparent; 1452 } 1453 .member_results.level_21 .grid_element{ 1454 overflow:visible; 1455 } 1456 .member_results.level_21 .grid_element::before { 1457 top: calc(-10px - 10px); 1458 transform: rotate(0deg); 1459 -webkit-transform: rotate(0deg); 1460 letter-spacing: 0; 1461 width: auto; 1462 padding: 3px 8px; 1463 left: calc(-4px + 0.5px); 1464 } 1465 1466 .member_results.level_27 .grid_element { 1467 border-style: solid; 1468 border-radius:0px;border-width:3px;border-color:rgb(232, 190, 5); } 1469 .member_results.level_27 .grid_element::before { 1470 border-bottom-left-radius:0!important; 1471 border-radius:0px;color:rgb(0, 0, 0);background-color:rgb(232, 190, 5);font-size:14px;content:'Featured '; 1472 } 1473 .member_results.level_27 .grid_element { 1474 padding:10px; 1475 } 1476 @media only screen and (max-width: 767px) { 1477 .member_results.level_27 .grid_element::before { 1478 left:-3px;}} 1479 .member_results .grid-container { 1480 margin-top: 30px; 1481 } 1482 .member_results .grid-container > hr { 1483 border-color: transparent; 1484 background: transparent; 1485 } 1486 .member_results.level_27 .grid_element{ 1487 overflow:visible; 1488 } 1489 .member_results.level_27 .grid_element::before { 1490 top: calc(-10px - 14px); 1491 transform: rotate(0deg); 1492 -webkit-transform: rotate(0deg); 1493 letter-spacing: 0; 1494 width: auto; 1495 padding: 3px 8px; 1496 left: calc(-3px + 0.5px); 1497 } 1498 1499 .member_results.level_28 .grid_element { 1500 border-style: solid; 1501 border-radius:3px;border-width:3px;border-color:rgb(170, 189, 212); } 1502 .member_results.level_28 .grid_element::before { 1503 border-bottom-left-radius:0!important; 1504 border-radius:3px;color:rgb(0, 0, 0);background-color:rgb(170, 189, 212);font-size:10px;content:'Catholic Owned!'; 1505 } 1506 .member_results.level_28 .grid_element { 1507 padding:10px; 1508 } 1509 @media only screen and (max-width: 767px) { 1510 .member_results.level_28 .grid_element::before { 1511 left:-3px;}} 1512 .member_results .grid-container { 1513 margin-top: 30px; 1514 } 1515 .member_results .grid-container > hr { 1516 border-color: transparent; 1517 background: transparent; 1518 } 1519 .member_results.level_28 .grid_element{ 1520 overflow:visible; 1521 } 1522 .member_results.level_28 .grid_element::before { 1523 top: calc(-10px - 10px); 1524 transform: rotate(0deg); 1525 -webkit-transform: rotate(0deg); 1526 letter-spacing: 0; 1527 width: auto; 1528 padding: 3px 8px; 1529 left: calc(-3px + 0.5px); 1530 } 1531 1532 .member_results.level_29 .grid_element { 1533 border-style: solid; 1534 border-radius:3px;border-width:3px;border-color:rgb(170, 189, 212); } 1535 .member_results.level_29 .grid_element::before { 1536 border-bottom-left-radius:0!important; 1537 border-radius:3px;color:rgb(0, 0, 0);background-color:rgb(170, 189, 212);font-size:10px;content:'Catholic Owned!'; 1538 } 1539 .member_results.level_29 .grid_element { 1540 padding:10px; 1541 } 1542 @media only screen and (max-width: 767px) { 1543 .member_results.level_29 .grid_element::before { 1544 left:-3px;}} 1545 .member_results .grid-container { 1546 margin-top: 30px; 1547 } 1548 .member_results .grid-container > hr { 1549 border-color: transparent; 1550 background: transparent; 1551 } 1552 .member_results.level_29 .grid_element{ 1553 overflow:visible; 1554 } 1555 .member_results.level_29 .grid_element::before { 1556 top: calc(-10px - 10px); 1557 transform: rotate(0deg); 1558 -webkit-transform: rotate(0deg); 1559 letter-spacing: 0; 1560 width: auto; 1561 padding: 3px 8px; 1562 left: calc(-3px + 0.5px); 1563 } 1564 1565 .member_results.level_30 .grid_element { 1566 border-style: solid; 1567 border-radius:3px;border-width:3px;border-color:rgb(170, 189, 212); } 1568 .member_results.level_30 .grid_element::before { 1569 border-bottom-left-radius:0!impor
1569tant; 1570 border-radius:3px;color:rgb(0, 0, 0);background-color:rgb(170, 189, 212);font-size:10px;content:'Catholic Owned!'; 1571 } 1572 .member_results.level_30 .grid_element { 1573 padding:10px; 1574 } 1575 @media only screen and (max-width: 767px) { 1576 .member_results.level_30 .grid_element::before { 1577 left:-3px;}} 1578 .member_results .grid-container { 1579 margin-top: 30px; 1580 } 1581 .member_results .grid-container > hr { 1582 border-color: transparent; 1583 background: transparent; 1584 } 1585 .member_results.level_30 .grid_element{ 1586 overflow:visible; 1587 } 1588 .member_results.level_30 .grid_element::before { 1589 top: calc(-10px - 10px); 1590 transform: rotate(0deg); 1591 -webkit-transform: rotate(0deg); 1592 letter-spacing: 0; 1593 width: auto; 1594 padding: 3px 8px; 1595 left: calc(-3px + 0.5px); 1596 } 1597 1598 .member_results.level_31 .grid_element { 1599 border-style: solid; 1600 border-radius:3px;border-width:3px;border-color:rgb(170, 189, 212); } 1601 .member_results.level_31 .grid_element::before { 1602 border-bottom-left-radius:0!important; 1603 border-radius:3px;color:rgb(0, 0, 0);background-color:rgb(170, 189, 212);font-size:10px;content:'Catholic Owned!'; 1604 } 1605 .member_results.level_31 .grid_element { 1606 padding:10px; 1607 } 1608 @media only screen and (max-width: 767px) { 1609 .member_results.level_31 .grid_element::before { 1610 left:-3px;}} 1611 .member_results .grid-container { 1612 margin-top: 30px; 1613 } 1614 .member_results .grid-container > hr { 1615 border-color: transparent; 1616 background: transparent; 1617 } 1618 .member_results.level_31 .grid_element{ 1619 overflow:visible; 1620 } 1621 .member_results.level_31 .grid_element::before { 1622 top: calc(-10px - 10px); 1623 transform: rotate(0deg); 1624 -webkit-transform: rotate(0deg); 1625 letter-spacing: 0; 1626 width: auto; 1627 padding: 3px 8px; 1628 left: calc(-3px + 0.5px); 1629 } 1630 .popover .popover-content img,.member_results .info_window img,.member_results .search_result_image, .featured-member-image img, .recent-member-image img, .member-review-image img, .member-profile-header > div:not(.member-badges) img, .review_photo, .contact-image, .member_result > div > div img, .member_sidebar .member_admin_sidemenu .img-thumbnail, .current-photo-container img, .current-logo-container img, .author-snapshot .search_result_image, .saved-member { 1631 border-radius: 1000px!important; 1632 } 1633 1634 1635 1636 /* Homepage Sections Background Color Logic */ 1637 1638 1639 .homepage-section-1 { 1640 padding: 40px 0 40px; 1641 } 1642 1643 1644 .homepage-section-1 { 1645 background: rgb(61, 79, 90); 1646 } 1647 1648 1649 .homepage-section-2 { 1650 padding: 40px 0 40px; 1651 } 1652 1653 1654 .homepage-section-3 { 1655 padding: 40px 0 40px; 1656 } 1657 1658 1659 .homepage-section-3 { 1660 background: rgb(61, 79, 90); 1661 } 1662 1663 1664 .homepage-section-4 { 1665 padding: 40px 0 40px; 1666 } 1667 1668 1669 .homepage-section-5 { 1670 padding: 40px 0 40px; 1671 } 1672 1673 1674 .homepage-section-5 { 1675 background: rgb(61, 79, 90); 1676 } 1677 1678 1679 .homepage-section-6 { 1680 padding: 40px 0 40px; 1681 } 1682 1683 1684 .homepage-section-7 { 1685 padding: 50px 0 50px; 1686 } 1687 1688 1689 .homepage-section-7 { 1690 background: rgb(24, 46, 69); 1691 } 1692 1693 1694 .homepage-section-8 { 1695 padding: 40px 0 40px; 1696 } 1697 1698 1699 .homepage-section-9 { 1700 padding: 40px 0 40px; 1701 } 1702 1703 1704 .homepage-section-9 { 1705 background: rgb(61, 79, 90); 1706 } 1707 1708 1709 .homepage-section-10 { 1710 padding: 40px 0 40px; 1711 } 1712 1713 1714 .homepage-section-11 { 1715 padding: 40px 0 40px; 1716 } 1717 1718 1719 .homepage-section-12 { 1720 padding: 40px 0 40px; 1721 } 1722 1723 1724 .homepage-section-13 { 1725 padding: 40px 0 40px; 1726 } 1727 1728 1729 .homepage-section-14 { 1730 padding: 40px 0 40px; 1731 } 1732 1733 1734 .homepage-section-15 { 1735 padding: 40px 0 40px; 1736 } 1737 1738 1739 /* Additional Settings */ 1740 1741 1742 /* Streaming Widgets Title Settings */ 1743 1744 .streaming-title { 1745 text-align: center; 1746 font-size: 48px; 1747 line-height:1.5em; 1748 font-weight: 300; 1749 font-family: 'Quicksand'; 1750 padding-bottom: 60px; 1751 } 1752 1753 @media only screen and (max-width: 990px) { 1754 .streaming-title { 1755 line-height:1.1em; 1756 } 1757 } 1758 1759 .streaming-title + hr { 1760 display: none; 1761 } 1762 1763 .homepage-join-module .module h2:first-of-type { 1764 color: rgb(62, 62, 62); 1765 } 1766 1767 .homepage-join-module .module{ 1768 background: rgb(250, 250, 250); 1769 border-color: rgb(238, 238, 238); 1770 } 1771 1772 .homepage-about-module .module h2:first-of-type { 1773 color: rgb(62, 62, 62); 1774 } 1775 1776 .homepage-about-module .module{ 1777 background: rgb(250, 250, 250); 1778 border-color: rgb(238, 238, 238); 1779 1780 } 1781 1782 .the-post-description > :is(h2, h3, h4, h5):not(:first-child) { 1783 font-weight: 600; 1784 margin-top: 20px; 1785 } 1786 1787 /* Keep: Ensure ul/ol respect padding and margins */ 1788 .the-post-description > :is(ul, ol) { 1789 display: flow-root; 1790 } 1791 .the-post-description li { 1792 margin-bottom: 8px; 1793 } 1794 1795 1796 .write_comment_container, .tab-content, .well:not(.well .well):not(.module .well):not(.tab-content .well):not(.well.make-connection):not(.slick-slide .well), .module:not(.module .module):not(.well .module):not(.tab-content .module):not(.search_box .module):not(.posted-by-snippet), .panel, .pic:not(.slick-slide .pic), .member_accounts > .account-form-box { 1797 box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a; 1798 } 1799 1800 .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 { 1801 border-radius:1000px!important; 1802 } 1803 1804 .img-rounded img, img.fr-dib.img-rounded{ 1805 border-radius: 10px!important; 1806 } 1807 1808 /* Google Translate Module */ 1809 .skiptranslate{font-size:0} 1810 .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} 1811 .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important} 1812 .goog-te-gadget .goog-te-combo{margin-bottom:-4px} 1813 .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)} 1814 @media only screen and (max-width: 1100px) { 1815 .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px} 1816 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important} 1817 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px} 1818 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important} 1819 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important} 1820 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px} 1821 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;} 1822 } 1823 @media only screen and (max-width: 767px) { 1824 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important} 1825 } 1826 1827 1828 1829</style> 1830 1831 <!-- ON-PAGE CSS FUNCTIONS --> 1832 <style type="text/css"> 1833 hr { 1834 border-top: 2px solid #e4e4e4; 1835 padding-top: 5px; 1836} 1837 1838.ep-iFrameLarge { 1839 height: 300px !important; 1840} </style> 1841 <style> 1842.announcement-bar { 1843 background-color: rgb(182, 39, 45); 1844 color: rgb(244, 244, 244); 1845 font-size: 20px; 1846 font-family: Array; 1847 text-align: center; 1848 line-height: 1.1em; 1849 position: relative; 1850} 1851 1852 1853 1854 1855.announcement-bar .btnAnnouncement { 1856 background-color: rgb(0, 0, 0); 1857 color: rgb(255, 255, 255); 1858 vertical-align: middle; 1859 line-height:1em; 1860 font-weight:bold; 1861} 1862 1863.announcement-close-btn { 1864 position: absolute; 1865 right: 15px; 1866 top: 50%; 1867 transform: translateY(-50%); 1868 background: none; 1869 border: none; 1870 color: rgb(244, 244, 244); 1871 font-size: max(20px, 24px); 1872 font-weight: bold; 1873 cursor: pointer; 1874 padding: 0; 1875 width: 30px; 1876 height: 30px; 1877 display: flex;
1878 align-items: center; 1879 justify-content: center; 1880 opacity: 0.7; 1881 transition: opacity 0.3s ease; 1882} 1883 1884.announcement-close-btn:hover { 1885 opacity: 1; 1886} 1887 1888.announcement-bar.hidden { 1889 display: none; 1890} 1891 1892@media (max-width: 1100px) { 1893 1894 .announcement-bar { 1895 margin-top: 50px; z-index:8; 1896 } 1897 1898 body #announcementBar + .header { 1899 margin-top: 0; 1900 } 1901 1902} 1903 1904 1905@media (max-width: 992px) { 1906 .btnAnnouncement { 1907 margin-top: 10px; 1908 } 1909 1910 .announcement-close-btn { 1911 right: 10px; 1912 font-size: 20px; 1913 } 1914} 1915 1916 1917 1918 1919</style>
1919<script> 1920 document.addEventListener("DOMContentLoaded", function() { 1921 const announcementBar = document.getElementById("announcementBar"); 1922 announcementBar.style.display = ""; 1923 }); 1924 </script>
1924 1925 <div class='announcement-bar vpad ' id="announcementBar" style="display: none;"> 1926 <div class="container"> 1927 We now have a Catholic Best Gift Guide! <a class="btn hmargin btnAnnouncement" href="https://www.thecatholicbest.com/gifts">CHECK IT OUT</a> </div> 1928 </div> 1929 1930<div class="header"> 1931 <div class="container"> 1932 <div class="row header-main-row"> 1933 <style type='text/css'> .logo-text:has(.logo_title:empty) { 1934 display:none 1935} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container"> 1936 <a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.thecatholicbest.com" title="The Catholic Best"> 1937 <img width="300" height="140" src="/images/Untitled-design-(3).png" alt="The Catholic Best"> 1938 </a> 1939 <div class="clearfix"></div> 1940</div> 1941 <style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query { 1942 background-color: white !important; 1943} 1944.mini-nav:not(:has(li)) { 1945 display: none!important; 1946} 1947/* Parent Container - Main List */ 1948.mini-nav li:has(ul) { 1949 position: relative; 1950 border-radius: 8px 8px 0 0; 1951} 1952.mini-nav > li:has(ul) { 1953 padding-left: 0; 1954 padding-right: 0; 1955 background: rgb(0, 0, 0); 1956} 1957.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span { 1958 padding: 10px 15px; 1959 margin: 0!important; 1960} 1961.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) { 1962 box-shadow: 0 -1px 3px rgba(255, 255, 255,0.25); 1963} 1964/* Parent Links */ 1965.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) { 1966 display:inline-block; 1967 border-radius: 8px 8px 0 0; 1968} 1969.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span { 1970 background: rgb(0, 0, 0); 1971 display: inline-block; 1972 position: relative; 1973 z-index: 1000; 1974} 1975/* First Level Dropdowns */ 1976.mini-nav li ul { 1977 background: rgb(0, 0, 0); 1978 box-shadow: 0 0px 3px rgba(255, 255, 255,0.25), 0 5px 5px 5px rgba(255, 255, 255,0.05); 1979 text-align: left; 1980 display: none; 1981 border-radius: 0 8px 8px 8px; 1982 list-style: none; 1983 padding: 10px; 1984 position: absolute; 1985 white-space: nowrap; 1986 min-width: 130%; 1987 width: auto; 1988 top: 100%; 1989 left: 0; 1990 z-index: 999; 1991 margin-top: -1px; 1992} 1993.mini-nav li:hover > ul { 1994 display: block; 1995} 1996/* First Level Dropdown Items */ 1997.mini-nav li ul li { 1998 position: relative; 1999 display: block; 2000 width: 100%; 2001} 2002.mini-nav li ul li a, .mini-nav li ul li span { 2003 font-size: 13.875px !important; 2004 display: block; 2005 font-weight: 400; 2006 padding: 8px 12px; 2007 border-radius: 8px; 2008 text-decoration: none; 2009 width: 100%; 2010} 2011.mini-nav li ul li a:hover, .mini-nav li ul li span:hover { 2012 box-shadow: 0 0 0 25px rgba(255, 255, 255,0.05) inset; 2013} 2014/* Second Level Dropdowns */ 2015.mini-nav li ul li ul { 2016 display: none; 2017 position: absolute; 2018 top: 0; 2019 left: 100%; 2020 margin: 0; 2021 border-radius: 8px; 2022} 2023.mini-nav li ul li:hover > ul { 2024 display: block; 2025} 2026/* Edge Positioning - Last Child Dropdowns */ 2027.mini-nav > li:last-child ul { 2028 right: 0; 2029 left: auto; 2030 border-radius: 8px 0 8px 8px; 2031} 2032.mini-nav > li:last-child ul li ul { 2033 right: 100%; 2034 left: auto; 2035} 2036/* Flex Spacing Utility */ 2037.mini-nav.mini-nav-flex-spaced { 2038 display: flex; 2039 justify-content: space-between; 2040 align-items: center; 2041 flex-wrap: wrap; 2042 row-gap: 0;
2043} 2044.mini-nav.mini-nav-flex-spaced > li { 2045 flex: none; 2046 padding: 0; 2047 margin: 2px 0; 2048 order: 2; 2049} 2050.mini-nav.mini-nav-flex-spaced > li.header-member-account-links, 2051.mini-nav:has(li ul) > li.header-member-account-links { 2052 order: 1; 2053 margin-left: auto; 2054 width: 100%; 2055 margin-bottom: 10px; 2056} 2057.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li { 2058 line-height: 1em; 2059 min-height: 0; 2060} 2061@media (min-width: 992px) { 2062 .header-main-row { 2063 display: flex; 2064 align-items: center; 2065 flex-wrap: wrap; 2066 } 2067} 2068@media (max-width: 991px) { 2069 .mini-nav.mini-nav-flex-spaced { 2070 justify-content: center; 2071 } 2072 .mini-nav.mini-nav-flex-spaced > li { 2073 margin-left: 5px !important; 2074 margin-right: 5px !important; 2075 } 2076} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad"> 2077 <ul class="mini-nav nobmargin list-inline xs-nopad xs-tmargin tpad"> 2078 <li class='bmargin xs-nomargin'><span id='link923' class='bmargin'> </span></li><li class='bmargin xs-nomargin'><a href='/contact' id='link924' class='hpad bmargin'>Contact Us</a></li><li class='bmargin xs-nomargin'><a href='/login' id='link925' class='rpad bmargin'>Member Login</a></li><li class='bmargin norpad xs-nopad xs-vmargin'><a href='/join' id='link926' class='btn btn_get_listed bold'>Listings - Get Listed Today</a></li> </ul> 2079 <div class="clearfix"></div> 2080 <form action="/sitesearch" name="frm1" class="form-inline website-search"> 2081 <div class="input-group input-group-sm bmargin sm-autosuggest"> 2082 <span class="input-group-addon"><i class="fa fa-search"></i></span> 2083 <input type="text" 2084 placeholder=" Search by Keyword " value="" name="q" 2085 class="global_search form-control input-sm" autocomplete="off"> 2086 </div> 2087 <div class="input-group input-group-sm bmargin"> 2088 <span class="input-group-addon"><i class="fa fa-location-arrow"></i></span> 2089 <input type="text" autocomplete="off" placeholder="City or Post Code" 2090 value="" id="location_google_maps_header" name="location_value" 2091 class="googleSuggest googleLocation form-control"> 2092 </div> 2093 <input type="submit" value="Discover!" class="btn btn-sm btn_search bmargin xs-btn-block bold"> 2094 </form> 2095 </div> 2096 </div> 2097 </div> 2098 <style type='text/css'> .mobile-main-menu .hasChildren span a { 2099 padding: 0px; 2100} 2101 2102.user_sidebar > img { 2103 width: 32px; 2104 height: 32px; 2105 position: absolute; 2106 z-index: 10; 2107 border-radius: 100px; 2108 top: -1px; 2109 object-fit: cover; 2110 left: -10px; 2111 background: rgb(238, 238, 238); 2112} 2113#member_sidebar_toggle img+.fa { 2114 display: none; 2115} 2116.main_menu, .user_sidebar, .compact-mobile-search { 2117 padding: 5px 8px; 2118 margin-right:0; 2119 min-height: 33.0333px; 2120 min-width: 38.116px; 2121} 2122.main_menu i, .user_sidebar i { 2123 font-size: 16px; 2124} 2125.navbar-nav li { 2126 float: none!Important; 2127} 2128.navbar-default{ 2129 -webkit-transition: all .6s ease-in-out; 2130 -moz-transition: all .6s ease-in-out; 2131 -o-transition: all .6s ease-in-out; 2132 transition: all .6s ease-in-out; 2133} 2134.transparent_menu { 2135 background-color: rgba(232, 190, 5,0.95)!important; 2136} 2137@media only screen and (max-width: 991px) { 2138 #popover {display: none} 2139} 2140@media only screen and (max-width: 1100px){ 2141 .mobile-main-menu{display:block!important} 2142 .navbar-toggle {display: block} 2143 #bs-main_menu .nav {display: none!important} 2144} 2145.mobile-main-menu { 2146 position: fixed; 2147 height: calc(100% - 50px)!important; 2148 width: 250px; 2149 background: rgb(232, 190, 5); 2150 z-index: 99999; 2151 right: -250px; 2152 top: 50px; 2153 display: none; 2154 -webkit-transition: all .6s ease-in-out; 2155 -moz-transition: all .6s ease-in-out; 2156 -o-transition: all .6s ease-in-out; 2157 transition: all .6s ease-in-out; 2158 overflow-y: auto!important; 2159 overflow-x: hidden!important; 2160} 2161.mobile-main-menu ul li i { 2162 color: rgb(0, 0, 0); 2163 cursor: pointer; 2164 float: right; 2165 padding: 13px; 2166} 2167.mobile-main-menu.opened{ 2168 right: 0px!important; 2169} 2170.mobile-main-menu ul li a, .mobile-main-menu ul li span { 2171 display: inline-block; 2172 float: left; 2173 -webkit-touch-callout: none; 2174 -webkit-user-select: none; 2175 -khtml-user-select: none; 2176 -moz-user-select: none; 2177 -ms-user-select: none; 2178 user-select: none; 2179 padding: 10px 0px; 2180 width: 80%; 2181 width: calc(100% - 40px); 2182} 2183.mobile-main-menu .sidebar-nav li ul { 2184 height: 0px; 2185 overflow: hidden; 2186 list-style: none; 2187 color: rgb(0, 0, 0); 2188 padding-left: 10px; 2189} 2190.mobile-main-menu .sidebar-nav li.sub_open > ul{ 2191 height: 100%; 2192} 2193.mobile-main-menu ul.sidebar-nav { 2194 position: absolute; 2195 width: 250px; 2196 margin: 0; 2197 padding: 0; 2198 list-style: none; 2199 font-size: 14px; 2200} 2201.mobile-main-menu .sidebar-nav > li { 2202 display: block; 2203 line-height: 20px; 2204 padding: 0 15px 0 20px; 2205} 2206.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span { 2207 text-decoration: none; 2208 color: rgb(0, 0, 0); 2209 padding-left:10px; 2210} 2211.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i { 2212 display: none; 2213} 2214 2215 </style><div class="mobile-main-menu"> 2216 <ul class="sidebar-nav"> 2217 <li class=''><a href='/home' id='link320'>Home</a></li><li class=''><span id='link921'> About</span><ul><li class=''><a href='/about' id='link928'>About Us</a></li><li class=''><a href='/faq' id='link929'>FAQ's</a></li></ul></li><li class=''><span id='link329'> People</span><ul><li class=''><a href='/profiles/catholic-consultants' id='link325'>Consultants</a></li><li class=''><a href='/profiles/catholic-medical-professionals' id='link934'>Medical Professionals</a></li><li class=''><a href='/profiles/catholic-photographers' id='link922'>Photographers</a></li><li class=''><a href='/catholic-speakers' id='link676'>Speakers</a></li><li class=''><a href='/profiles/catholic-spiritual-directors' id='link933'>Spiritual Directors</a></li><li class=''><a href='/categories' id='link675'>Browse All Categories</a></li></ul></li><li class=''><a href='/catholic-businesses-organizations' id='link332'>Organizations</a><ul><li class=''><a href='/catholic-businesses-organizations/501-c-3-nonprofit-organization' id='link333'>501(c)(3) Nonprofit Organization</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-publishers' id='link932'>Publishers</a></li><li class=''><a href='/catholic-radio-stations' id='link334'>Radio Stations</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-retreat-conference-centers' id='link677'>Retreat & Conference Centers</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-travel-agencies' id='link1011'>Travel Agenices</a></li><li class=''><a href='/categories' id='link931'>Browse All Categories</a></li></ul></li><li class=''><span id='link853'>
2217 Other</span><ul><li class=''><a href='/gifts' id='link326'>Gift Guide - New!</a></li><li class=''><a href='/announcements' id='link1009'>Announcements</a></li><li class=''><a href='/catholic-apps' id='link1012'>Apps</a></li><li class=''><a href='/catholic-books' id='link935'>Books</a></li><li class=''><a href='/coupons' id='link936'>Coupons</a></li><li class=''><a href='/catholic-events' id='link937'>Events</a></li><li class=''><a href='/giveaways' id='link1010'>Giveaways</a></li><li class=''><a href='/best-catholic-podcasts' id='link854'>Podcasts</a></li><li class=''><a href='/catholic-programs' id='link1008'>Programs</a></li><li class=''><a href='/catholic-online-shops' id='link930'>Online Shops</a></li></ul></li><li class=''><a href='/join' id='link323'>Join Our Directory!</a></li> </ul> 2218</div> 2219<nav class="navbar navbar-default "> 2220 <div class="container container-fluid"> 2221 2222 <div class="navbar-header"> 2223 <button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu"> 2224 <i class="fa fa-bars fa-fw"></i> 2225 </button> 2226 2227 2228 2229 </div> 2230 2231 2232 <div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu"> 2233 <ul class="tablet-menu-ul nav navbar-nav nav-justified"> 2234 <li class=''><a href='/home' id='link320'>Home</a></li><li class=''><span id='link921'> About</span><ul><li class=''><a href='/about' id='link928'>About Us</a></li><li class=''><a href='/faq' id='link929'>FAQ's</a></li></ul></li><li class=''><span id='link329'> People</span><ul><li class=''><a href='/profiles/catholic-consultants' id='link325'>Consultants</a></li><li class=''><a href='/profiles/catholic-medical-professionals' id='link934'>Medical Professionals</a></li><li class=''><a href='/profiles/catholic-photographers' id='link922'>Photographers</a></li><li class=''><a href='/catholic-speakers' id='link676'>Speakers</a></li><li class=''><a href='/profiles/catholic-spiritual-directors' id='link933'>Spiritual Directors</a></li><li class=''><a href='/categories' id='link675'>Browse All Categories</a></li></ul></li><li class=''><a href='/catholic-businesses-organizations' id='link332'>Organizations</a><ul><li class=''><a href='/catholic-businesses-organizations/501-c-3-nonprofit-organization' id='link333'>501(c)(3) Nonprofit Organization</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-publishers' id='link932'>Publishers</a></li><li class=''><a href='/catholic-radio-stations' id='link334'>Radio Stations</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-retreat-conference-centers' id='link677'>Retreat & Conference Centers</a></li><li class=''><a href='/catholic-businesses-organizations/catholic-travel-agencies' id='link1011'>Travel Agenices</a></li><li class=''><a href='/categories' id='link931'>Browse All Categories</a></li></ul></li><li class=''><span id='link853'> Other</span><ul><li class=''><a href='/gifts' id='link326'>Gift Guide - New!</a></li><li class=''><a href='/announcements' id='link1009'>Announcements</a></li><li class=''><a href='/catholic-apps' id='link1012'>Apps</a></li><li class=''><a href='/catholic-books' id='link935'>Books</a></li><li class=''><a href='/coupons' id='link936'>Coupons</a></li><li class=''><a href='/catholic-events' id='link937'>Events</a></li><li class=''><a href='/giveaways' id='link1010'>Giveaways</a></li><li class=''><a href='/best-catholic-podcasts' id='link854'>Podcasts</a></li><li class=''><a href='/catholic-programs' id='link1008'>Programs</a></li><li class=''><a href='/catholic-online-shops' id='link930'>Online Shops</a></li></ul></li><li class=''><a href='/join' id='link323'>Join Our Directory!</a></li> </ul> 2235 </div> 2236 </div> 2237</nav> 2238<!--CSS IF MENU IS FIXED TOP--> 2239 2240</div> 2241<!-- 2242 2243IMPORTANT: 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. 2244 2245--> 2246<div class="container clearfix text-center banner-ad-unit above-content-banner-ad"> 2247 <div class="clearfix"></div> 2248</div> 2249<div class="clearfix"></div><div class="clearfix"></div> 2250<!-- Begin Content --> 2251<main role="main" id="main-content"> 2252<div id="first_container" class="content-container fr-view"> 2253 <div class="container"> 2254 <div class="clearfix body-content"></div> 2255 <style type="text/css"> 2256 .search_results_royalSlider .rsMainSlideImage { 2257 width: 100%!important; 2258 height: 100%!important; 2259 margin-top:0!important; 2260 object-fit: cover; /* Ensures the image covers the container without stretching */ 2261 object-position: center; /* Centers the image within the container */ 2262 } 2263 @media only screen and (max-width: 768px) { 2264 .content_w_sidebar .cal-month-box .pull-right { 2265 float: none !important; 2266 } 2267 .grid_element .img_section { 2268 flex: 0 0 100%; 2269 width: 100%; 2270 } 2271 } 2272 </style> 2273<div class="row content_w_sidebar feature-search feature-blog"> 2274 <div class='col-md-8 col-md-push-4'><div class="post-search-result-count-container"> 2275 <div class="col-sm-4 nopad xs-hpad bmargin post-search-result-count"> 2276 Showing 1 - <span class="current__amount__js">
22769</span> of 2277 2278 <span class="total__js">12</span> Results 2279 </div> 2280 <div class="col-sm-8 nopad text-right bmargin post-search-result-sorting"> 2281 <div class="form-inline"> 2282 </div> 2283 <div class="clearfix"></div> 2284 </div> 2285 <div class="clearfix"></div> 2286</div> 2287<div class="clearfix"></div> 2288 <div class="col-xs-12 col-sm-11 col-md-10 nopad xs-hpad pull-left feature_results_header"> 2289 <h1 class="nopad nomargin bold"> 2290 Website Blog </h1> 2291 <div class="clearfix"></div> 2292 </div> 2293 <div itemscope itemtype="https://schema.org/CollectionPage" itemid="https://www.thecatholicbest.com/blog#entity"> 2294 <meta itemprop="name" content="Website Blog"> 2295 <meta itemprop="headline" content="Website Blog"> 2296 <meta itemprop="description" content="Find the best Catholic Website Blog Articles now. Discover the latest Website Blog Articles posted by Listings near you."> 2297 <meta itemprop="about" content="Website Blog"> 2298 <meta itemprop="keywords" content="Website Blog, The Catholic Best, Website Blog Article"> 2299 <meta itemprop="inLanguage" content="en-US"> 2300 <link itemprop="url" href="https://www.thecatholicbest.com/blog"> 2301 <meta itemprop="mainEntityOfPage" content="https://www.thecatholicbest.com/blog"> 2302 <meta itemprop="copyrightYear" content="2026"> 2303 <link itemprop="copyrightHolder" href="https://www.thecatholicbest.com/#organization"> 2304 <link itemprop="isPartOf" href="https://www.thecatholicbest.com/#website"> 2305 <link itemprop="publisher" href="https://www.thecatholicbest.com/#organization"> 2306 <div itemprop="mainEntity" itemscope itemtype="https://schema.org/ItemList" itemid="https://www.thecatholicbest.com/blog#itemlist"> 2307 <meta itemprop="name" content="Website Blog">
2308 <link itemprop="url" href="https://www.thecatholicbest.com/blog"> 2309 <meta itemprop="description" content="Find the best Catholic Website Blog Articles now. Discover the latest Website Blog Articles posted by Listings near you."> 2310 <meta itemprop="mainEntityOfPage" content="https://www.thecatholicbest.com/blog"> 2311 <meta itemprop="itemListOrder" content="http://schema.org/ItemListOrderAscending"> 2312 <meta itemprop="numberOfItems" content="9"> 2313 <style type='text/css'> .gridBreak { 2314 display:block!important; 2315 border: 0; 2316 margin: 0; 2317 } 2318 2319.search_result.grid { 2320 display: grid; 2321} 2322.views > i { 2323 font-size: 18px; 2324 margin-left: 5px; 2325 border-radius: 4px; 2326 cursor: pointer; 2327 width: 30px; 2328 height: 30px; 2329 line-height: 30px; 2330 display: inline-flex; 2331 align-items: center; 2332 justify-content: center; 2333 text-align: center; 2334 vertical-align: top; 2335 transition: all 100ms linear 0ms; 2336} 2337a.gridA { 2338 font-size: 18px; 2339 text-align: center; 2340 margin: 10px 0; 2341 display: block; 2342} 2343.grid .favorite::after, .grid p + .clearfix.fpad-sm, .grid .clearfix.fpad-sm + .clearfix.fpad-sm, .map_container, .views .mapView, .grid .member-search-full-name::after { 2344 display:none; 2345} 2346.visible-lg { 2347 word-wrap: break-word; 2348} 2349.grid .post-location-snippet b + span { 2350 display: block; 2351} 2352@media only screen and (max-width: 767px) { 2353 .member_results .sort-members-select, .member_results .overall_rating_filter { 2354 float: left; 2355 width: 150px; 2356 } 2357} </style> <div class='views pull-right '> 2358 <i class='fa fa-th-list activeView listView'></i> 2359 <i class='fa fa-th js-click gridView hidden-xs'></i> 2360 <i class="fa fa-map-marker mapView"></i> 2361 </div> 2362<hr> 2363<div class="grid-container"><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2364 <meta itemprop="position" content="1"> 2365 <meta itemprop="url" content="/blog/natural-family-planning-awareness-week-q-a-with-instructors"> 2366 <meta itemprop="name" content="Natural Family Planning Awareness Week: Q&A with Instructors"> 2367 <!-- Structured Data Markup -->
2368<script type="application/ld+json"> 2369{ 2370 "@context": "https://schema.org/", 2371 "@type": "DiscussionForumPosting", 2372 "@id": "https://www.thecatholicbest.com/blog/natural-family-planning-awareness-week-q-a-with-instructors#entity", 2373 "mainEntityOfPage": { 2374 "@type": "WebPage", 2375 "@id": "https://www.thecatholicbest.com/blog/natural-family-planning-awareness-week-q-a-with-instructors" 2376 }, 2377 "headline": "Natural Family Planning Awareness Week: Q&A with Instructors", 2378 "name": "Natural Family Planning Awareness Week: Q&A with Instructors", 2379 "author": { 2380 "@type": "Organization", 2381 "url": "https://www.thecatholicbest.com/blog", 2382 "name": "The Catholic Best" 2383 }, 2384 "datePublished": "2024-07-24T14:28:00-05:00", 2385 "dateModified": "2024-08-01T12:01:39-05:00", 2386 "image": "/uploads/news-pictures/508--blog-post-image-20240724143024.png", 2387 "articleSection": "General", 2388 "about": { 2389 "@type": "Thing", 2390 "name": "General" 2391 }, 2392 "keywords": [ 2393 "General", 2394 "The Catholic Best", 2395 "Website Blog Article" 2396 ], 2397 "inLanguage": "en-US", 2398 "wordCount": 1980, 2399 "articleBody": "Happy Natural Family Planning Awareness Week! We interviewed Anna Lacey of Foremost Fertility Care and Christina Valenzuela of Pearl and Thistle to learn some more about Natural Family Planning (NFP). Q: Can you briefly explain what Natural Family Planning is?Anna: NFP at its core is a tool for a couple to use to plan their family. The couple is able to discern if they use their method of choice, as a plan to expand or a plan to prevent. Most methods of NFP are able to be used in two ways, to achieve a pregnancy or to avoid a pregnancy, something that contraceptives cannot do. Many contraceptives require you to 'detox' for several months before trying to achieve a pregnancy. How do you suppose one is to avoid a pregnancy without using the only method they know? NFP can be used as a means of avoiding a pregnancy and the next cycle, or even the next day, be used as a means of achieving a pregnancy, there is no need for a period of transition. The Creighton Model System, the one I use and teach, was created out of a calling Dr. Thomas Hilgers had in response to Saint Paul VI's encyclical letter, Humanae Vitae. Saint Paul VI called out against birth control and abortion and called on those in science to find an alternative for couples and women to use that promoted the Church's teachings and upheld Catholic values. Dr. Hilger's and his team did just that.Christina: Natural Family Planning is an umbrella term for any method which allows couples to navigate natural times of fertility and infertility within a menstrual cycle to plan their family. Depending on which method of NFP you might choose, the practice of NFP looks like observing biomarkers relative to ovulation and then making informed decisions about actions you may take (or not take!) depending on how those biomarkers would be interpreted for fertility. Notice that in this definition, I really am focusing on NFP as something that is applied knowledge used by couples for the specific intention of family planning. But with this same knowledge base, women can also learn a lot about tracking their menstrual cycles for health-- which is sort of an emerging application in the field of medicine and whole-person healthcare. Q: What got you interested in becoming a Natural Family Planning instructor?Anna: I had learned the Creighton Method when I was in college and engaged. I loved learning more about my fertility, something I had not had the chance to before. I was a nursing major who was about to graduate and had not learned any of this from my professors. We hosted a large intro session for young women on campus, I should mention here that I went to Saint Mary's College, an all women's college. A few years into our marriage my husband and I were told we would likely have difficulty getting, and staying, pregnant. In using the Creighton Method we were able to time conception and start on progesterone immediately in order to help my body, in its hormone deficits, until my body recognized I was pregnant. I had a healthy, term baby boy and was fortunate to find a midwife who was also trained in the Creighton Method for my prenatal care, delivery, and postnatal care. On our journey to expand our family once more, we did run into a few more issues trying to conceive and suffered from unexplained secondary infertility. The benefit here was that because I was charting, I was able to re
2399ceive medical assistance at 6 months of trying to conceive instead of 12 months, which is a timeline most medical professionals use. Six months may not seem like a very long time but when you are hoping all month long for a positive pregnancy test, six (or more) negative tests can be gut wrenching. We did end up conceiving 13 months after beginning our journey and again I needed progesterone support through my entire pregnancy but had another healthy, term baby boy. We moved up to Gettysburg, SD, my hometown shortly after our second son was born and it was then that I became interested in becoming an instructor. I was now four hours away from my instructor and my midwife and although we met virtually I wanted to provide another option for women or couples in the middle of our state. I applied, was accepted and journeyed to Omaha for training. I found out I was pregnant with our third shortly after coming home from Omaha, and we conceived our very first month of trying. I was taking supplemental progesterone according to my charting and was able to increase my progesterone, with the help of my midwife, to have a third healthy, term baby boy. Christina: I became an NFP instructor because I had been so frustrated about how difficult it was for me to find an instructor after the birth of my first baby! I asked my doctor for help (that didn't go well), asked my pastor for help (he had no idea!) and felt sort of lost. After my second baby was born I did end up finding an incredible instructor and it was actually her prompting which led me to apply for the training. I thought to myself, "If there is an obvious need in this area, someone should step in and fill it!" Clearly the Holy Spirit had plans for me to answer that call. And it's funny looking back, to realize that this sort of made sense for me anyway. I had begun college as a pre-med bio student and actually switched majors to get my degree in Philosophy & Theology. I saw NFP as an extension of ministry work in the church, but a client of mine (who had known me in undergrad!) actually pointed out that NFP is a great mix of these two great loves of mine: biology and theology. Q: How has Natural Family Planning impacted you? Anna: I was fooled into birth control when I was a teen as a remedy for painful heavy periods and PMS. I never found one that I liked and bounced from many different brands all promising relief. Once I started charting and we found my hormones were less than ideal and that I also had PCOS, there was finally a reason and something that could be treated, not just covered up. I was able to learn and subsequently appreciate my body, femininity, and fertility in a new and deeper way. Once I was married I was able to share this knowledge with my husband, and our marriage deepend. I was the observer of my fertility markers, he became the one who charted and we used the system together. We both knew where I was within my cycle and we could make the decision together on how to use our fertility that month. One quote from Humanae Vitae that I would like to end with is this, "Married love is before everything else a love distinctly human, that is, of the senses and of the spirit. It is not merely a matter of an impulse of nature or of feelings, but also and especially, it is a matter of movement of free will, striving, through the joys and sorrows of daily life, for this love not only to endure, but, beyond this, to increase, so much so that husband and wife become, as it were, one heart and one spirit, and reach their human perfection together. Married love is a matter also of full love, a special form of personal friendship in which husband and wife generously share everything with each other. They do not allow unfair exceptions, nor are they anxious solely for their own comforts. "Whoever truly loves a spouse, loves not so much because of what is received, but because of who the other is, and loves willingly so that the other may be enriched by the gift of oneself."Christina: I'll be honest to say that it has impacted me in both positive and negative ways. It's important for the Church to be honest about that! There have certainly been times when NFP felt like a heavy cross, because abstaining for long stretches of time in the midst of raising tiny humans and navigating graduate school is just not easy. But the issue was never really NFP itself. The issue was that I was bitter about the fact that we needed to abstain in the first place. I have very severe hyperemsis with all my pregnancies and it just didn't seem fair that God was asking us to carry that burden. And NFP became an obvious target for some of that anger and bitterness. But it has also been an incredible tool for learning about my body, and has given me some great insight into health issues that have popped up over the years. It has also been a way that I get to see how much my husband loves and respects me, as we navigate charts together and as he has adapted the way he cares for me throughout my cycle, too. One example I love to share in my Cycle Prep program is a story I talk about when I encourage families to build a Culture of Care. I tell them how my husband and I usually trade off sleeping in on the weekends, so each of us gets at least one leisurely morning of rest. I sleep in on Saturdays, and he usually sleeps in on Sundays. But one weekend, on a Sunday, I woke up and it was after 9 am! He had gotten up early and taken care of the kids, letting me sleep because he knew that it was Cycle Day 2 (day 2 of my period) and that is a time when I'm usually exhausted. What a great gift! And what a beautiful example that was for our children as well. Q: Is there anything else you'd like to share about yourself, your business, or Natural Family Planning?Anna: I teach clients in person and virtually. I have a link
2399within my profile at The Catholic Best for scheduling an Intro Session. I would love to be hosted by a parish or school to teach groups and would travel to you! I wish I would have learned this system as a young woman in high school, shortly after having my first cycle. It would have saved me so many years of pain and suffering. This model is able to be used from your first cycle until your last cycle. I would love to teach everyone about this system. I am deeply passionate about the Creighton Method specifically because if there is an issue within a woman's fertility we have the ability to use NaPro Technology in order to assist in fixing the issue. NaPro stands for Natural Procreative Technology and was created by Dr. Thomas Hilgers to support the Creighton Method findings and provide treatment for women and couples who need it. Christina: I would love to share about my brand new book which was just released through Our Sunday Visitor, called The Language of Your Body: Embracing God's Design for Your Cycle. It's an invitation for us to consider how the Church (and individual women!) might benefit from taking new knowledge we have about menstrual cycles and applying it to both our theology and pastoral ministry, as it helps us better understand the unique way women are made in God's image. If anyone is interested in learning more about that book or my work, they can visit pearlandthistle.com or find me @pearlandthistle on IG and FB!", 2400 "url": "https://www.thecatholicbest.com/blog/natural-family-planning-awareness-week-q-a-with-instructors", 2401 "isPartOf": [ 2402 { 2403 "@type": "WebSite", 2404 "@id": "https://www.thecatholicbest.com/#website" 2405 }, 2406 { 2407 "@type": "CollectionPage", 2408 "@id": "https://www.thecatholicbest.com/blog#entity" 2409 }, 2410 { 2411 "@type": "CollectionPage", 2412 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 2413 } 2414 ], 2415 "publisher": { 2416 "@id": "https://www.thecatholicbest.com/#organization" 2417 }, 2418 "comment": null 2419}</script>
2419 2420 <div class="grid_element"> 2421 2422 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2423 <span> 2424 Posted 2425 07/24/2024 </span> 2426 2427 </div> 2428 2429 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2430 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="784"></span><button class="item-post-list-784 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="784" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-784'></span></button> <a class="btn btn-default btn-xs pull-right favorite search-comment-count" style="margin-right: 5px; vertical-align: top;" href="/blog/natural-family-planning-awareness-week-q-a-with-instructors#the-post-comments"> 2431 <i class="bi bi-chat-square-text" aria-hidden="true"></i> 2432 <span class="bookmark-number label-secondary-subtle"> 2433 2 </span> 2434 2435 </a> 2436 2437 </div> 2438 2439 <div class="clearfix"></div> 2440 2441 <div class="img_section col-sm-4 nopad sm-bmargin"> 2442 <a title="Natural Family Planning Awareness Week: Q&A with Instructors" href="/blog/natural-family-planning-awareness-week-q-a-with-instructors"> 2443 <div class="alert-secondary btn-block text-center"> 2444 <img width="525" height="280" class="search_result_image center-block" alt="Natural Family Planning Awareness Week: Q&A with Instructors" title="Natural Family Planning Awareness Week: Q&A with Instructors" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240724143024.png"/> 2445 </div> 2446 </a> 2447 </div> 2448 2449 <div class="mid_section xs-nopad col-sm-8 "> 2450 2451 <a class="h3 bold bmargin center-block" title="Natural Family Planning Awareness Week: Q&A with Instructors" href="/blog/natural-family-planning-awareness-week-q-a-with-instructors"> 2452 Natural Family Planning Awareness Week: Q&A with Instructors </a> 2453 2454 <div class="clearfix"></div> 2455 2456 <p class="xs-nomargin"> 2457 Happy Natural Family Planning Awareness Week! We interviewed Anna Lacey of Foremost Fertility... 2458 <a class="inline-block bold" title="Natural Family Planning Awareness Week: Q&A with Instructors" aria-label="Natural Family Planning Awareness Week: Q&A with Instructors" href="/blog/natural-family-planning-awareness-week-q-a-with-instructors"> 2459 Read More 2460 </a> 2461 </p> 2462 2463 <div class="clearfix"></div> 2464 2465 2466 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 2467 Category 2468 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 2469 General </a> 2470 </div> 2471 2472 </div> 2473 </div> 2474 <div class="clearfix"></div> 2475</div> 2476<div class="clearfix"></div> 2477<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2478 <meta itemprop="position" content="2"> 2479 <meta itemprop="url" content="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood"> 2480 <meta itemprop="name" content="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood"> 2481 <!-- Structured Data Markup -->
2482<script type="application/ld+json"> 2483{ 2484 "@context": "https://schema.org/", 2485 "@type": "DiscussionForumPosting", 2486 "@id": "https://www.thecatholicbest.com/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood#entity", 2487 "mainEntityOfPage": { 2488 "@type": "WebPage", 2489 "@id": "https://www.thecatholicbest.com/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood" 2490 }, 2491 "headline": "Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood", 2492 "name": "Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood", 2493 "author": { 2494 "@type": "Organization", 2495 "url": "https://www.thecatholicbest.com/blog", 2496 "name": "The Catholic Best" 2497 }, 2498 "datePublished": "2024-06-16T07:07:00-05:00", 2499 "dateModified": "2024-06-16T07:21:44-05:00", 2500 "image": "/uploads/news-pictures/508--blog-post-image-20240616072144.jpg", 2501 "articleSection": "General", 2502 "about": { 2503 "@type": "Thing", 2504 "name": "General" 2505 },
2506 "keywords": [ 2507 "General", 2508 "The Catholic Best", 2509 "Website Blog Article" 2510 ], 2511 "inLanguage": "en-US", 2512 "wordCount": 867, 2513 "articleBody": "Blog Contributed by Rich King from Catholic Faith StoreToday I bury my father. As I reflect on the eulogy and obituary for my dad; they were each well written and heartfelt. My mother and siblings chose to reflect on the quiet, spiritual leadership of my father over our family. He led by example, attending daily mass followed by a daily Rosary. He entreated us—his children—to do the same. He was deeply devoted to St Joseph, especially in his role as the Foster Father to Jesus. Richard died a holy, peaceful death. He was surrounded by his family as they prayed Rosary after Rosary along with numerous divine mercy chaplets. His wife stood by his bedside courageously invoking Saint Benedict to keep the evil one away at the final moments before death. The priest said last rites and administered the Apostolic blessing. In the moments after death, the prayers for the dead were said. We should all pray for such a holy and beautiful end to our time on this earth. The obituary didn’t mention my father’s worldly accomplishments, and they were many. He was an intelligent, well-educated man. He was an engineer, loved math and logic, and was fluent in several languages. He had several adventures that would have made for entertaining memories—but the focus wasn’t on such things. Rather, it was with his spiritual and familial accomplishments. In the eyes of the world, he lived an unconventional life. He and his wife of 49 years had eleven children in twenty-two years. Each child was welcomed with joy and delight. Their primary focus was raising Catholic children. They also fostered seven nieces and nephews after a sister-in-law unexpectedly passed away. Richard and Mia had a spirit of hospitality that knew no bounds. As I reflect on the memories of my father, the obituary’s focus on his life as the priest of his family, the spiritual leader to those around him, the love he showed to his fellow man, those are the things that matter. We live in a world where the platitudes “be kind” and “be a good person” are often given lip service—but how many people actually walk the walk of being a kind person, a good person? I stand at the grave of my father, and I am convicted. I am a father of seven, have I led my family as well as my father led his? He gave us the blueprint on how to live as a man of faith, serving God and serving his family. He sacrificed himself for his family. He surrendered to his terminal health diagnosis with humility, fighting as long as God allowed him to. He died well, no fear, no anxiety, no regrets. He made amends with those whom he needed to. He fought the fight, finished the race. Being a good dad who led by example, he showed us how to do it. He embraced Catholic fatherhood in all aspects. I stand on the shoulders of a spiritual giants. May I have the courage to live an authentically Catholic life as the spiritual priest of my family. May my example of living as a Christ-like life inspire my five sons to likewise become courageous Catholic men—may they in turn inspire the people they come in contact with. In this day’s world, one with men like Al Bundy and Homer Simpson; one where the selfish man and bumbling father are thought to be the status quo, Catholic men are called to more. These other incomplete notions of masculinity cannot be entertained but discarded in favor of something lasting—something brave, competent, and selfless. Catholic men must take up a masculinity which challenges them and, in doing so, draws them beyond themselves, even to the point of self-sacrifice. This man we need is one who serves his family, honors his wife, loves his children. This is exactly what my father did throughout his 74 years. Let us focus on what is important—not the job or the promotions. But rather, how did he live? The obituary was perfect, it mentioned the accomplishments that mattered. It is not in material success by which we measure a man, but in how he serves those with whom he is entrusted. It is in how close he approaches living like Christ. May we all live with the integrity and conviction of Catholic masculinity that my father did. May we all die as he did, surrounded by loved one
2513s, encircled in prayers and well-prepared to meet his maker.About The AuthorRich KingBusiness Owner and Father of 7Rich graduated from Thomas Aquinas College with a Bachelor of Arts in Liberal Arts. Rich and his wife, Caroline, own and operate CatholicFathStore.com in the Kansas City metro. They are each cradle Catholics, seeking to raise their children to be holy men and women and inspire their customers to greater levels of sanctity through meaningful religious items. Rich’s greatest accomplishment to date is being father to 7 great kids, 5 boys and 2 girls. ", 2514 "url": "https://www.thecatholicbest.com/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood", 2515 "isPartOf": [ 2516 { 2517 "@type": "WebSite", 2518 "@id": "https://www.thecatholicbest.com/#website" 2519 }, 2520 { 2521 "@type": "CollectionPage", 2522 "@id": "https://www.thecatholicbest.com/blog#entity" 2523 }, 2524 { 2525 "@type": "CollectionPage", 2526 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 2527 } 2528 ], 2529 "publisher": { 2530 "@id": "https://www.thecatholicbest.com/#organization" 2531 }, 2532 "comment": null 2533}</script>
2533 2534 <div class="grid_element"> 2535 2536 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2537 <span> 2538 Posted 2539 06/16/2024 </span> 2540 2541 </div> 2542 2543 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2544 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="773"></span><button class="item-post-list-773 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="773" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-773'></span></button> 2545 </div> 2546 2547 <div class="clearfix"></div> 2548 2549 <div class="img_section col-sm-4 nopad sm-bmargin"> 2550 <a title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" href="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood"> 2551 <div class="alert-secondary btn-block text-center"> 2552 <img width="525" height="280" class="search_result_image center-block" alt="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240616072144.jpg"/> 2553 </div> 2554 </a> 2555 </div> 2556 2557 <div class="mid_section xs-nopad col-sm-8 "> 2558 2559 <a class="h3 bold bmargin center-block" title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" href="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood"> 2560 Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood </a> 2561 2562 <div class="clearfix"></div> 2563 2564 <p class="xs-nomargin"> 2565 Blog Contributed by Rich King from Catholic Faith Store Today I bury my father. As I reflect on the eulogy... 2566 <a class="inline-block bold" title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" aria-label="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" href="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood"> 2567 Read More 2568 </a> 2569 </p> 2570 2571 <div class="clearfix"></div> 2572 2573 2574 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 2575 Category 2576 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 2577 General </a> 2578 </div> 2579 2580 </div> 2581 </div> 2582 <div class="clearfix"></div> 2583</div> 2584<div class="clearfix"></div> 2585<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2586 <meta itemprop="position" content="3"> 2587 <meta itemprop="url" content="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals"> 2588 <meta itemprop="name" content="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)"> 2589 <!-- Structured Data Markup -->
2590<script type="application/ld+json"> 2591{ 2592 "@context": "https://schema.org/", 2593 "@type": "DiscussionForumPosting", 2594 "@id": "https://www.thecatholicbest.com/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals#entity", 2595 "mainEntityOfPage": { 2596 "@type": "WebPage", 2597 "@id": "https://www.thecatholicbest.com/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals" 2598 }, 2599 "headline": "Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)", 2600 "name": "Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)", 2601 "author": { 2602 "@type": "Organization", 2603 "url": "https://www.thecatholicbest.com/blog", 2604 "name": "The Catholic Best" 2605 }, 2606 "datePublished": "2024-06-10T11:23:00-05:00", 2607 "dateModified": "2024-06-10T11:44:27-05:00", 2608 "image": "/uploads/news-pictures/508--blog-post-image-20240610114427.jpg", 2609 "articleSection": "General", 2610 "about": { 2611 "@type": "Thing", 2612 "name": "General" 2613 },
2614 "keywords": [ 2615 "General", 2616 "The Catholic Best", 2617 "Website Blog Article" 2618 ], 2619 "inLanguage": "en-US", 2620 "wordCount": 858, 2621 "articleBody": "Blog Contributed by Matthew from The Simple CatholicIn the words of Saint Josemaria Escriva, "Professional work is also an apostolate, an opportunity to give ourselves to others, to reveal Christ to them and lead them to God the Father." This underscores the significance of integrating our faith into every aspect of our lives, including our professions. We are given gifts by God to develop and share with others. Our professional work is a means to grow in holiness while also providing goods/services to promote the good of society. Along with our work, we have various needs that come up in our lives. These opportunities help build up the Kingdom of God by supporting people whose work and business are aligned with Catholic values. Whether it's for financial advice, medical care, or legal matters, having a Catholic professional by your side can make a significant difference. Let's look at why it's crucial to have a Catholic professional in various aspects of our lives.Someone You Can Trust Trust is the cornerstone of any relationship, especially when it comes to seeking professional advice or assistance. When you share the same faith and moral compass with your advisor, trust can be established more easily and maintained consistently. This mutual understanding fosters a deeper level of trust. You know that your values are respected and upheld throughout your professional interactions. Building Up the Catholic Ecosystem Supporting Catholic professionals not only benefits individuals but also strengthens the Catholic community. By patronizing Catholic businesses and seeking services from Catholic professionals, we contribute to the growth and sustainability of our faith-based institutions. This, in turn, fosters a supportive ecosystem where Catholic values are promoted and upheld in various spheres of life. Examples of Industries Requiring Catholic Professionals Financial Advisors: The realm of financial planning is one where ethical considerations hold immense significance. According to Bishop Gregory Parks, chairman of the USCCB’s Committee of Budget and Finance, investment strategies should prioritize the defense and promotion of life. Catholic-based organizations such as the Knights of Columbus and Catholic United Financial offer financial planning services aligned with Church teachings. They provide a reliable resource for Catholic families seeking financial guidance. Find Catholic Financial Professionals on The Catholic Best.Medical Professionals: Health care is a fundamental aspect of human well-being. Having trusted medical professionals who share our faith is invaluable. Over the centuries the Catholic Church has been a bastion for the welfare of the human person at all stages. According to the Church, "Every human life, from the moment of conception until death, is sacred because the human person has been willed for its own sake in the image and likeness of the living and holy God (CCC 2319)." This is the premise by which all medical decisions should be made. Having healthcare providers who understand and respect Catholic ethical principles ensures that our medical care matches our beliefs and values. Find Catholic medical professionals who embody the servant leadership and wisdom that mirror Christ the Divine Physician and saints like Raphael the Archangel, Luke the Evangelist, and Agatha of Sicily. Find Catholic Medical Professionals on The Catholic Best.Lawyers: Legal matters, especially those concerning estate planning and family law, require careful consideration and expertise. Having a Catholic legal professional to navigate these complexities is essential. They ensure that our legal affairs are handled in accordance with our faith. Saints Thomas More and Ivo of Kermartin serve as inspiring examples of lawyers who prioritized their faith while fulfilling their professional duties. Embracing Values in Work According to the Catechism of the Catholic Church paragraph 2427, "Human work proceeds directly from persons created in the image of God and called to prolong the work of creation by subduing the earth, both with and for one another. Hence work is a duty: 'If any one will not work, let him not eat.' Work honors the Creator'
2621s gifts and the talents received from him. It can also be redemptive." The work you provide is not only a reflection of God's work in creation. Your work is an opportunity to serve your neighbor. An opportunity to share the Gospel message, not merely in words but through your actions and how you conduct business. Finding a trusted professional who takes their Catholic faith seriously and allows it to inform their work is invaluable. Legal, financial, and medical advisors are key examples of industries where it's important to find a reliable Catholic professional. Having a Catholic professional in various facets of our lives is not merely a matter of convenience. It is a conscious choice to uphold our faith values in every aspect of our journey. By seeking guidance and assistance from individuals who share our beliefs, we reinforce the bonds of trust, contribute to the growth of our faith community, and ensure that our actions are in harmony with our Catholic identity. Related Resources United States Conference of Catholic Bishops- Ethical and Religious Directives in Health Care MyCatholicWill.comCatholic United Financial", 2622 "url": "https://www.thecatholicbest.com/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals", 2623 "isPartOf": [ 2624 { 2625 "@type": "WebSite", 2626 "@id": "https://www.thecatholicbest.com/#website" 2627 }, 2628 { 2629 "@type": "CollectionPage", 2630 "@id": "https://www.thecatholicbest.com/blog#entity" 2631 }, 2632 { 2633 "@type": "CollectionPage", 2634 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 2635 } 2636 ], 2637 "publisher": { 2638 "@id": "https://www.thecatholicbest.com/#organization" 2639 }, 2640 "comment": null 2641}</script>
2641 2642 <div class="grid_element"> 2643 2644 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2645 <span> 2646 Posted 2647 06/10/2024 </span> 2648 2649 </div> 2650 2651 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2652 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="768"></span><button class="item-post-list-768 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="768" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-768'></span></button> 2653 </div> 2654 2655 <div class="clearfix"></div> 2656 2657 <div class="img_section col-sm-4 nopad sm-bmargin"> 2658 <a title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" href="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals"> 2659 <div class="alert-secondary btn-block text-center"> 2660 <img width="525" height="280" class="search_result_image center-block" alt="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240610114427.jpg"/> 2661 </div> 2662 </a> 2663 </div> 2664 2665 <div class="mid_section xs-nopad col-sm-8 "> 2666 2667 <a class="h3 bold bmargin center-block" title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" href="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals"> 2668 Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals) </a> 2669 2670 <div class="clearfix"></div> 2671 2672 <p class="xs-nomargin"> 2673 Blog Contributed by Matthew from The Simple Catholic In the words of Saint Josemaria Escriva, "Professional... 2674 <a class="inline-block bold" title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" aria-label="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" href="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals"> 2675 Read More 2676 </a> 2677 </p> 2678 2679 <div class="clearfix"></div> 2680 2681 2682 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 2683 Category 2684 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 2685 General </a> 2686 </div> 2687 2688 </div> 2689 </div> 2690 <div class="clearfix"></div> 2691</div> 2692<div class="clearfix"></div> 2693<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2694 <meta itemprop="position" content="4"> 2695 <meta itemprop="url" content="/blog/a-guide-to-digital-protection-for-catholic-parents"> 2696 <meta itemprop="name" content="A Guide to Digital Protection for Catholic Parents"> 2697 <!-- Structured Data Markup -->
2698<script type="application/ld+json"> 2699{ 2700 "@context": "https://schema.org/", 2701 "@type": "DiscussionForumPosting", 2702 "@id": "https://www.thecatholicbest.com/blog/a-guide-to-digital-protection-for-catholic-parents#entity", 2703 "mainEntityOfPage": { 2704 "@type": "WebPage", 2705 "@id": "https://www.thecatholicbest.com/blog/a-guide-to-digital-protection-for-catholic-parents" 2706 }, 2707 "headline": "A Guide to Digital Protection for Catholic Parents", 2708 "name": "A Guide to Digital Protection for Catholic Parents", 2709 "author": { 2710 "@type": "Organization", 2711 "url": "https://www.thecatholicbest.com/blog", 2712 "name": "The Catholic Best" 2713 }, 2714 "datePublished": "2024-05-22T11:08:00-05:00", 2715 "dateModified": "2024-05-22T11:35:22-05:00", 2716 "image": "/uploads/news-pictures/508--blog-post-image-20240522113522.jpg", 2717 "articleSection": "General", 2718 "about": { 2719 "@type": "Thing", 2720 "name": "General" 2721 }, 2722 "keywords": [ 2723 "General", 2724 "The Catholic Best", 2725 "Website Blog Article" 2726 ], 2727 "inLanguage": "en-US", 2728 "wordCount": 1358, 2729 "articleBody": "Blog Contributed by Jesse Kramer from Alto SolutionsAs Catholic parents, you are not only protecting your children at home and at school, but you also protecting them online. The digital landscape, unfortunately, is time consuming to learn and is constantly changing. However much you may want to raise your kids in a virtuous environment, everybody has a limited amount of time. To protect your children online, you need a framework to ensure they are protected comprehensively. One such framework is the 5 Layers of Digital Defense which was developed by Protect Young Eyes. By using this framework, you can help your families develop a more private, secure, and virtuous relationship with technology. You will not only be defensively reacting to the attacks of vice, but you will also be offensively reacting with the sword of virtue.The Five Layers of Digital Technology1. Relationships (a.k.a Digital Trust Framework)Relationships are, quite obviously, the foundation for protecting your family. The call of Christ was to enter into a relationship with Him. If we are supposed to model Christ to our children, we cannot do so without first cultivating a relationship. There are five aspects to the relationship level of protection.Copy meChildren are, as any parent knows, master copy-cats. If one child expresses distaste at a task, the younger sibling suddenly develops a new-found distaste for the same thing. When it comes to technology, the same principle applies. Children copy their technological behaviors from the best. And who are the best in their eyes? . . . You. If you want them to follow household tech rules, you must lead by example. Co-PlayPlay with them instead of letting them play by themselves! Reframe technology to be a “we” activity instead of an “I” activity. No matter how boring the average adult finds funny cat videos on YouTube, they need to be involved in that activity.CuriosityWhen implementing good tech habits in your family, maintain a spirit of curiosity and not condemnation. Your goal is not to catch them doing something bad, it is to be a part of their life.ConversationTalk about everything! By talking to your kids about what they see online, you are not only keeping an eye on what they see but also telling them that you value their interests. Talk to them about what is cool, weird, and, yes, awkward.CoachingHave an attitude of coaching and not controlling. Help your children understand that you are not there to be a pointless rule-maker, but someone rooting for their success. 2. Wi-Fi: The most important digital deviceAhhhh, you all know that little devil box sitting on top of that shelf. I am sure many of you have dreamed of taking a baseball bat to it at times, and for good reason. Any devices connected to your home Wi-Fi obtain access to the internet through your router. If you secure this, you secure many more devices automatically.When managing your router, you should look for two groups of settings: security and parental controls. SecurityAll routers have an interface that you can change these settings from. Instructions to do this can be found by looking in the manual, on the bottom of your router, and by searching it online. After logging in, it is good to check that certain security features are enabled (i.e. make sure to change the default Wi-Fi network password).Parental ControlsMany routers will, in fact, offer very rudimentary parental controls. Logging into your router interface may present you with options to block certain websites and turn off the internet at certain times of day. These combined with classic parental controls can create a strong wall of defenseFor a master guide on routers, see Protect Young Eyes article: https://protectyoungeyes.com/the-ultimate-guide-to-understanding-routers/ 3. Device: Parental ControlsAs someone trying to instill a love for the Catholic Faith in you child, you do not feel comfortable with your child having online access to unlimited information of any type. This is where Parental Controls come in. Parental controls are typically a separate app that you install on your child’s devices. They can come with a wide range of features. Many can record what is done on devices, block websites, block apps, and set screentime limits. Some solutions, like Covenant Eyes and Truple, are focused more on beating pornography addiction while others, like Bark and Qustodio are more focused on monitoring social media and web browsing. It is up to each family to decide on what works best for them.A list of parental controls may be found here: https://altosolutions.us/resources/4. Location: Stay PublicWhile you may be able to cultivate an environment of virtue in y
2729our home, all your work may be undone if your child is in a different environment. These are known as the Danger Places. These are places like bedrooms, sleepovers, bathrooms, buses, and grandparents' House. Before saying “yes” to a sleepover, ask what their rules are regarding technology. Children, being master copy-cats, will begin to imitate their environment. If they are in a bad environment, they will pick up bad behaviors. While it is best to avoid these circumstances, this is often impossible. Set up rules and guidelines for what kids should do in certain situations. By giving them an action plan, instead of only avoiding those situations, you empower them to choose the virtuous path without deliberation.When it comes to places and setting rules, trust your gut! If anything more than the Pope is infallible, it would be a parent’s gut.5. Apps – Often WeakApps are often the hardest things to secure. In 2023, there were nearly 2.4 million apps available for download on the Google Play store. Every year there is a different app that becomes the next fad. While parental controls have made leaps and bounds in monitoring apps, many can still only monitor them partially. Protect Young Eyes has put together reviews for apps’ and devices’ built-in parental controls which, though limited, can help. When choosing official 3rd party parental controls, choose ones that will fill in the gaps of the application’s built in parental controls. Lastly, use the Co-Play rule, any app your child wants to get, you should try first for 10 days. By the end of the 10 days, you will be able to make an informed decision.ClosingRaising a Catholic family in the middle of a technological revolution is certainly hectic and overwhelming. However, by implementing proper measures in a systematic way, you can stay one (or several!) step ahead. By developing an environment that promotes privacy, security, and (most importantly!) virtue you can set them up to succeed in life and in sainthood.Ultimately, remember that you will never be enough for your family. You heard that right, you will never be enough at home, at work, or in your faith. Only Christ and His grace is enough for the tasks of this life. It is not your job, as the culture tells us, to “be enough”. It is not your job to, by your own power, create a home of perfect love and virtue. Your only job is to give all you have to Christ, He will make it sufficient. Business PlugI have created a business (Alto Solutions) to help parents and individuals develop a more private, secure, and virtuous relationship with technology. I have created a website (https://altosolutions.us/start-here) with a resources page on it. There you can find a selection of parental controls and other tools that can help you implement the 5 Layers of Digital Protection. If you would like assistance to professionally implement this, feel free to contact me and schedule an appointment.Additional ResourcesIf you are not sure where to start in helping to protect your family, here is what I recommend.Visit Protect Young Eyes: https://protectyoungeyes.com/Watch Parenthood 2.0: https://www.childhood2movie.com/Read Parenting Kids with Anxiety: https://www.theatlantic.com/magazine/archive/2020/05/childhood-in-an-anxious-age/609079/ Visit my resources page: https://altosolutions.us/resources/And lastly, pray, hope, and don’t worry!: https://applepie.weblog.lol/2024/03/prayer-to-st-isidore-patron-saint-of-technology", 2730 "url": "https://www.thecatholicbest.com/blog/a-guide-to-digital-protection-for-catholic-parents", 2731 "isPartOf": [ 2732 { 2733 "@type": "WebSite", 2734 "@id": "https://www.thecatholicbest.com/#website" 2735 }, 2736 { 2737 "@type": "CollectionPage", 2738 "@id": "https://www.thecatholicbest.com/blog#entity" 2739 }, 2740 { 2741 "@type": "CollectionPage", 2742 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 2743 } 2744 ], 2745 "publisher": { 2746 "@id": "https://www.thecatholicbest.com/#organization" 2747 }, 2748 "comment": null 2749}</script>
2749 2750 <div class="grid_element"> 2751 2752 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2753 <span> 2754 Posted 2755 05/22/2024 </span> 2756 2757 </div> 2758 2759 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2760 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="759"></span><button class="item-post-list-759 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="759" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-759'></span></button> 2761 </div> 2762 2763 <div class="clearfix"></div> 2764 2765 <div class="img_section col-sm-4 nopad sm-bmargin"> 2766 <a title="A Guide to Digital Protection for Catholic Parents" href="/blog/a-guide-to-digital-protection-for-catholic-parents"> 2767 <div class="alert-secondary btn-block text-center"> 2768 <img width="525" height="280" class="search_result_image center-block" alt="A Guide to Digital Protection for Catholic Parents" title="A Guide to Digital Protection for Catholic Parents" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240522113522.jpg"/> 2769 </div> 2770 </a> 2771 </div> 2772 2773 <div class="mid_section xs-nopad col-sm-8 "> 2774 2775 <a class="h3 bold bmargin center-block" title="A Guide to Digital Protection for Catholic Parents" href="/blog/a-guide-to-digital-protection-for-catholic-parents"> 2776 A Guide to Digital Protection for Catholic Parents </a> 2777 2778 <div class="clearfix"></div> 2779 2780 <p class="xs-nomargin"> 2781 Blog Contributed by Jesse Kramer from Alto Solutions As Catholic parents, you are not only protecting your children... 2782 <a class="inline-block bold" title="A Guide to Digital Protection for Catholic Parents" aria-label="A Guide to Digital Protection for Catholic Parents" href="/blog/a-guide-to-digital-protection-for-catholic-parents"> 2783 Read More 2784 </a> 2785 </p> 2786 2787 <div class="clearfix"></div> 2788 2789 2790 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 2791 Category 2792 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 2793 General </a> 2794 </div> 2795 2796 </div> 2797 </div> 2798 <div class="clearfix"></div> 2799</div> 2800<div class="clearfix"></div> 2801<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2802 <meta itemprop="position" content="5"> 2803 <meta itemprop="url" content="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation"> 2804 <meta itemprop="name" content="Discerning Godâs Voice Through Emotional Awareness and Regulation"> 2805 <!-- Structured Data Markup -->
2806<script type="application/ld+json"> 2807{ 2808 "@context": "https://schema.org/", 2809 "@type": "DiscussionForumPosting", 2810 "@id": "https://www.thecatholicbest.com/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation#entity", 2811 "mainEntityOfPage": { 2812 "@type": "WebPage", 2813 "@id": "https://www.thecatholicbest.com/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation" 2814 }, 2815 "headline": "Discerning Godâs Voice Through Emotional Awareness and Regulation", 2816 "name": "Discerning Godâs Voice Through Emotional Awareness and Regulation", 2817 "author": { 2818 "@type": "Organization", 2819 "url": "https://www.thecatholicbest.com/blog", 2820 "name": "The Catholic Best" 2821 }, 2822 "datePublished": "2024-05-07T13:00:00-05:00", 2823 "dateModified": "2024-05-10T10:59:25-05:00", 2824 "image": "/uploads/news-pictures/508--blog-post-image-20240510105924.jpg", 2825 "articleSection": "General", 2826 "about": { 2827 "@type": "Thing", 2828 "name": "General" 2829 }, 2830 "keywords": [ 2831 "General", 2832 "The Catholic Best", 2833 "Website Blog Article" 2834 ], 2835 "inLanguage": "en-US", 2836 "wordCount": 1016, 2837 "articleBody": "Blog Contributed by Jean MacKenzie, MA Counselling, R. Psych from Holy Union ConnectUnderstanding Emotions: A Theological and Scientific Perspective As a psychologist, I’ve worked with many Christians who think it’s bad to feel certain emotions. There may be several reasons for this, but I believe that sometimes these beliefs stem from a misinterpretation of scripture. In Ephesians 4:26, it warns against anger leading to sin, so some folks might think all anger is sinful. Some might also fear that allowing certain powerful emotions can lead to a loss of control and thus sinful behaviour, leading to the belief that emotions need to be tightly regulated. However, if we believe God made us in His image and likeness and that He also gave us emotions, then it is hard to believe that he gave us some emotions just to trip us up. Science says emotions are like messages from our brains that tell us how we feel about something. They’re like signals that help us navigate our lives. When something happens, our brain quickly assesses it and sends out an emotional response based on past experiences, instincts, and even our physical state. For example, if we see a cute puppy, we might feel happy and excited because our brain associates puppies with positive experiences. Conversely, if we encounter a threat, like a loud noise or a dangerous situation, our brain might trigger feelings of fear or anxiety to help us stay safe. Emotions are not just in our heads—they also affect our bodies. When we feel powerful emotions, like joy or anger, our heart rate might increase, we might sweat, or we might feel butterflies in our stomachs. These physical reactions are part of our body’s way of responding to what our brain is telling us. Overall, emotions are a fundamental part of being human, helping us make sense of the world around us and guiding our behaviour in ways that keep us safe, connected, and fulfilled. It’s important to recognize that emotions themselves are not inherently good or bad; rather, it’s how we respond to and express them that matters. While Christians are called to exercise self-control and strive for virtues such as love, patience, and humility, we are also encouraged to acknowledge and process our emotions in healthy and constructive ways. This may involve seeking guidance from scripture, prayer, community support, a priest or religious person, or professional counselling when needed. Cultivating Emotional Awareness for Spiritual Growth According to the Catechism of the Catholic Church 1763-1769, emotions or passions are feelings or impulses of the sensitive appetite that motivate us to take action or refrain from it based on our perception of good or evil. In order to use your emotions to direct you toward what is good, you must first be aware of your emotions. A lack of emotional awareness can have profound implications for mental health. When individuals struggle to identify and express their emotions, they may resort to suppressing or ignoring them, leading to emotional numbness and an increased risk of depression, anxiety, and substance abuse. This emotional disconnect can hinder social interactions, contributing to feelings of isolation and loneliness. Additionally, without awareness of their emotional states, individuals may struggle to manage stress and anxiety effectively, leading to poor decision-making and difficulties in seeking help when needed. Ultimately, cultivating emotional awareness is crucial for promoting mental well-being, facilitating self-understanding and healthy relationships, and navigating life’s challenges with resilience and clarity. A simple way to develop better emotional awareness is to notice where you feel your emotions in your body. As you become more aware of when and where your emotions show up, you will develop a greater insight into what events or circumstances trigger those responses, leading to self-awareness and understanding of the person God made you to be, improved communication, and healthier relationships. Practical Strategies for Faith-Integrated Emotion Regulation Once you develop a greater ability to be aware of your emotions, the next step to being able to use our emotions to help you grow in holiness is to be able to regulate your emotions. When you are able to keep your emotions at a manageable level, you will be better able to consciously respond to your emotions and use your rational mind to make decisions to respond in ways that help you grow in virtue. Fortunately, many of the practices that help us to develop our faith and grow in our relationship with God, such as prayer, meditating on scripture, reception of the sacraments and trusting in God’s providence, are also very regulating. Of course, it makes sense that we would be most at ease when we are feeling most connected to God. Other popular emotion regulation strategies include journaling, which can help you to reflect on your emotions in light of your faith or deep breathing, which uses the natural way that God made our bodies to counter the physical symptoms of intense emotions. For example, if you are angry, your heart rate is likely to speed up and your breath is likely to become shallow, resulting is taking in less oxygen. Breathing deeply will slow down your heart rate and allow you to take in more oxygen. Using Emotions as a Tool for Discerning God’s Will Discernment plays a crucial role in understanding God’s plan for you, and emotions can be a valuable component of spiritual discernment. By taking the time to slow down and invite Christ to walk alongside you as you explore your emotions, you can develop a deeper understanding of the person God made you to be and the plan He has for your life. In Christ&r
2837squo;s presence, observe with curiosity the feelings you experience. Through prayer, meditation, and seeking guidance from spiritual mentors, you can discern God’s messages through the emotions you experience, leading to a deeper connection with your faith and purpose.", 2838 "url": "https://www.thecatholicbest.com/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation", 2839 "isPartOf": [ 2840 { 2841 "@type": "WebSite", 2842 "@id": "https://www.thecatholicbest.com/#website" 2843 }, 2844 { 2845 "@type": "CollectionPage", 2846 "@id": "https://www.thecatholicbest.com/blog#entity" 2847 }, 2848 { 2849 "@type": "CollectionPage", 2850 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 2851 } 2852 ], 2853 "publisher": { 2854 "@id": "https://www.thecatholicbest.com/#organization" 2855 }, 2856 "comment": null 2857}</script>
2857 2858 <div class="grid_element"> 2859 2860 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2861 <span> 2862 Posted 2863 05/07/2024 </span> 2864 2865 </div> 2866 2867 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2868 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="753"></span><button class="item-post-list-753 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="753" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-753'></span></button> 2869 </div> 2870 2871 <div class="clearfix"></div> 2872 2873 <div class="img_section col-sm-4 nopad sm-bmargin"> 2874 <a title="Discerning Godâs Voice Through Emotional Awareness and Regulation" href="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation"> 2875 <div class="alert-secondary btn-block text-center"> 2876 <img width="525" height="280" class="search_result_image center-block" alt="Discerning Godâs Voice Through Emotional Awareness and Regulation" title="Discerning Godâs Voice Through Emotional Awareness and Regulation" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240510105924.jpg"/> 2877 </div> 2878 </a> 2879 </div> 2880 2881 <div class="mid_section xs-nopad col-sm-8 "> 2882 2883 <a class="h3 bold bmargin center-block" title="Discerning Godâs Voice Through Emotional Awareness and Regulation" href="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation"> 2884 Discerning Godâs Voice Through Emotional Awareness and Regulation </a> 2885 2886 <div class="clearfix"></div> 2887 2888 <p class="xs-nomargin"> 2889 Blog Contributed by Jean MacKenzie, MA Counselling, R. Psych from Holy Union Connect Understanding Emotions:... 2890 <a class="inline-block bold" title="Discerning Godâs Voice Through Emotional Awareness and Regulation" aria-label="Discerning Godâs Voice Through Emotional Awareness and Regulation" href="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation"> 2891 Read More 2892 </a> 2893 </p> 2894 2895 <div class="clearfix"></div> 2896 2897 2898 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 2899 Category 2900 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 2901 General </a> 2902 </div> 2903 2904 </div> 2905 </div> 2906 <div class="clearfix"></div> 2907</div> 2908<div class="clearfix"></div> 2909<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 2910 <meta itemprop="position" content="6"> 2911 <meta itemprop="url" content="/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher"> 2912 <meta itemprop="name" content="The Best Teacher Appreciation Gifts for your Catholic School Teacher"> 2913 <!-- Structured Data Markup -->
2914<script type="application/ld+json"> 2915{ 2916 "@context": "https://schema.org/", 2917 "@type": "DiscussionForumPosting", 2918 "@id": "https://www.thecatholicbest.com/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher#entity", 2919 "mainEntityOfPage": { 2920 "@type": "WebPage", 2921 "@id": "https://www.thecatholicbest.com/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher" 2922 }, 2923 "headline": "The Best Teacher Appreciation Gifts for your Catholic School Teacher", 2924 "name": "The Best Teacher Appreciation Gifts for your Catholic School Teacher", 2925 "author": { 2926 "@type": "Organization", 2927 "url": "https://www.thecatholicbest.com/blog", 2928 "name": "The Catholic Best" 2929 }, 2930 "datePublished": "2024-05-04T07:15:00-05:00", 2931 "dateModified": "2024-05-04T07:43:14-05:00", 2932 "image": "/uploads/news-pictures/508--blog-post-image-20240504074245.jpg", 2933 "articleSection": "Catholic Gift Ideas", 2934 "about": { 2935 "@type": "Thing", 2936 "name": "Catholic Gift Ideas" 2937 },
2938 "keywords": [ 2939 "Catholic Gift Ideas", 2940 "The Catholic Best", 2941 "Website Blog Article" 2942 ], 2943 "inLanguage": "en-US", 2944 "wordCount": 653, 2945 "articleBody": "Blog Contributed by Abby Baumberger from The Catholic BestAs the school year wraps up Teacher Appreciation Week is the perfect time to say thank you for all the ways teachers have nurtured your children throughout the school year. It can be difficult in all the craziness of spring concerts, final projects and spring extracurriculars to make time to show appreciation and gratitude. This guide is designed to help make it easy to find a great gift for your Catholic School Teacher or other teachers in your life!*note this post contains affiliate links which means we may collect a commission from purchases made through our recommendations at no extra cost to you. As an Amazon Associate, we earn from qualifying purchases.Catholic Gifts:Sock Religious Socks (Amazon): These socks are always a win. Any Catholic School teacher is sure to love a fun pair of socks from Sock Religious. Catholic Stickers: Teachers have tons of surfaces for cool Catholic stickers. They can stick them on their laptop, their water bottle, phone case, grade book and more! Some shops to check out; Just Love Prints, Saint Sprites, Prostrada Designs and SaintSprouts.Catholic Lanyard: This Lanyard from Brick House in the City has the quote, “Love the children first, then teach them.” by Saint Mother Theodore Guerin. This is a perfect accessory for the teacher that has done just that! They have this quote available in a T-shirt too!A Saint Squad for Teachers by Amy J Cattapan: This book is the perfect companion for teachers in the ups and downs of their day to day! It introduces teachers to new saints and how they can intercede for their class.Saint Imagery: Speaking of saints, a print of a saint or a statue can make a great gift for teachers to display in their classroom or in their home! The school patron is always a safe choice, but you may be able to tell who some of their favorites saints are by which ones your children have learned about this year! Be sure to check out the Ultimate Catholic Gift Guide on The Catholic Best for even more gift ideas!Other ideas:A Note: Teachers always enjoy a short note or card from students! Acrostic poems can be a fun prompt for kids to get them thinking about the traits they enjoy about their teacher. Gift cards: Always a safe bet! Support a small catholic business, a local small business, or someplace you know they love!Favorite Drinks: Students usually pick up on what teachers are sipping on all day. There are lots of very obvious diet coke drinkers, tea lovers and coffee connoisseurs. Dropping off a case of their favorite pop or a bag of some great smelling coffee is always appreciated!A Video: This can be a big project, but having each student in the class record a small snippet of what they love about their teacher and editing them all together can be an invaluable expression of appreciation that the teacher will watch over and over!Final Notes:It doesn’t hurt to ask! As a former teacher, I always appreciated when someone was intentional enough to ask me about my favorites or preferences! It’s ok to ask your teacher what their favorite snack, saint, drink, lunch spot, store is, etc. As Teacher Appreciation Week approaches and we reflect on the invaluable role our Catholic School teachers play in shaping young minds, it's the perfect time to express our gratitude with thoughtful gifts, or another expression of appreciation. Whether it's a pair of whimsical Sock Religious socks, inspiring Catholic stickers, or a meaningful book like "A Saint Squad for Teachers," each gift embodies appreciation for their dedication. Let's celebrate our teachers and all they do to nurture our children's faith and education!", 2946 "url": "https://www.thecatholicbest.com/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher", 2947 "isPartOf": [ 2948 { 2949 "@type": "WebSite", 2950 "@id": "https://www.thecatholicbest.com/#website" 2951 }, 2952 { 2953 "@type": "CollectionPage", 2954 "@id": "https://www.thecatholicbest.com/blog#entity" 2955 }, 2956 { 2957 "@type": "CollectionPage", 2958 "@id": "https://www.thecatholicbest.com/blog?category[]=Catholic+Gift+Ideas#entity" 2959 } 2960 ], 2961 "publisher": { 2962 "@id": "https://www.thecatholicbest.com/#organization" 2963 }, 2964 "comment": null 2965}</script>
2965 2966 <div class="grid_element"> 2967 2968 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 2969 <span> 2970 Posted 2971 05/04/2024 </span> 2972 2973 </div> 2974 2975 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 2976 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="745"></span><button class="item-post-list-745 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="745" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-745'></span></button> 2977 </div> 2978 2979 <div class="clearfix"></div> 2980 2981 <div class="img_section col-sm-4 nopad sm-bmargin"> 2982 <a title="The Best Teacher Appreciation Gifts for your Catholic School Teacher" href="/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher"> 2983 <div class="alert-secondary btn-block text-center"> 2984 <img width="525" height="280" class="search_result_image center-block" alt="The Best Teacher Appreciation Gifts for your Catholic School Teacher" title="The Best Teacher Appreciation Gifts for your Catholic School Teacher" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240504074245.jpg"/> 2985 </div> 2986 </a> 2987 </div> 2988 2989 <div class="mid_section xs-nopad col-sm-8 "> 2990 2991 <a class="h3 bold bmargin center-block" title="The Best Teacher Appreciation Gifts for your Catholic School Teacher" href="/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher"> 2992 The Best Teacher Appreciation Gifts for your Catholic School Teacher </a> 2993 2994 <div class="clearfix"></div> 2995 2996 <p class="xs-nomargin"> 2997 Blog Contributed by Abby Baumberger from The Catholic Best As the school year wraps up Teacher Appreciation... 2998 <a class="inline-block bold" title="The Best Teacher Appreciation Gifts for your Catholic School Teacher" aria-label="The Best Teacher Appreciation Gifts for your Catholic School Teacher" href="/blog/the-best-teacher-appreciation-gifts-for-your-catholic-school-teacher"> 2999 Read More 3000 </a> 3001 </p> 3002 3003 <div class="clearfix"></div> 3004 3005 3006 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 3007 Category 3008 <a class="bold" title="Website Blog Article - Catholic Gift Ideas" href="/blog?category[]=Catholic+Gift+Ideas"> 3009 Catholic Gift Ideas </a> 3010 </div> 3011 3012 </div> 3013 </div> 3014 <div class="clearfix"></div> 3015</div> 3016<div class="clearfix"></div> 3017<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 3018 <meta itemprop="position" content="7"> 3019 <meta itemprop="url" content="/blog/great-catholic-gift-ideas-for-boys-ages-8-12"> 3020 <meta itemprop="name" content="Great Catholic Gift Ideas for Boys Ages 8-12"> 3021 <!-- Structured Data Markup -->
3022<script type="application/ld+json"> 3023{ 3024 "@context": "https://schema.org/", 3025 "@type": "DiscussionForumPosting", 3026 "@id": "https://www.thecatholicbest.com/blog/great-catholic-gift-ideas-for-boys-ages-8-12#entity", 3027 "mainEntityOfPage": { 3028 "@type": "WebPage", 3029 "@id": "https://www.thecatholicbest.com/blog/great-catholic-gift-ideas-for-boys-ages-8-12" 3030 }, 3031 "headline": "Great Catholic Gift Ideas for Boys Ages 8-12", 3032 "name": "Great Catholic Gift Ideas for Boys Ages 8-12", 3033 "author": { 3034 "@type": "Organization", 3035 "url": "https://www.thecatholicbest.com/blog", 3036 "name": "The Catholic Best" 3037 }, 3038 "datePublished": "2024-04-18T10:20:00-05:00", 3039 "dateModified": "2024-04-18T12:23:54-05:00", 3040 "image": "/uploads/news-pictures/508--blog-post-image-20240418122222.jpg", 3041 "articleSection": "Catholic Gift Ideas", 3042 "about": { 3043 "@type": "Thing", 3044 "name": "Catholic Gift Ideas" 3045 }, 3046 "keywords": [ 3047 "Catholic Gift Ideas", 3048 "The Catholic Best", 3049 "Website Blog Article" 3050 ], 3051 "inLanguage": "en-US", 3052 "wordCount": 748, 3053 "articleBody": "Blog Contributed by Matt Chicoine from The Simple CatholicAs we celebrate the various seasons and the celebration of new Sacraments in the Church, there's a unique opportunity to go beyond the standard presents and look into gifts that relate to our Catholic faith. We found meaningful gift ideas that not only entertain but also inspire a deeper connection to the Catholic faith for your children. *note this post contains affiliate links which means we may collect a commission from purchases made through our recommendations at no extra cost to you. As an Amazon Associate, we earn from qualifying purchases.1. Building the Christmas Story: Lego Nativity Set For Christmas, consider a creative marvel that transforms the timeless story of Jesus' birth into an interactive experience. With each block, young hearts embark on a journey that blends play and prayer. Purchase on Amazon2. Where Faith Takes Center Stage: Wooden Mass Set Encourage a love for the Mass from an early age with the beautifully crafted Wooden Mass Play Set from Catholic Supply of St. Louis, Inc. Here, faith takes center stage as children reenact sacred rituals, fostering a deeper understanding of Catholic traditions through the power of imaginative play. Purchase on Catholic Supply3. Unwrap Faith-Filled Adventures: Catholic Family Crate Make family time more meaningful with the Catholic Family Crate—a subscription box brimming with faith-based activities, games, and resources. Each crate becomes a vessel of joy, creating moments of connection and learning for the entire family. Go To Catholic Family CrateAvoid getting bored with these awesome Catholic games below: 4. Fun and Faith in Every Card: Catholic Card Game Bring the family together with the Catholic Card Game—a delightful blend of entertainment and education. Every card introduces trivia and challenges rooted in Catholicism, making it a perfect addition to game nights that promise both laughter and spiritual enrichment. CatholicCardGame.com5. Journeying Through Advent: Road to Bethlehem Game The Road to Bethlehem Game by Holy Heroes offers more than just an adventure—it's a journey through the biblical story of Christmas. Packed with challenges and lessons, this board game not only entertains but also becomes a conduit for educating young minds about the significance of the Advent season. Purchase at Holy HeroesGreat Catholic Book Ideas: 6. Building Faith Brick by Brick: Lego Catechism Introduce your child to the teachings of the Catholic Church with the Lego Catechism—a unique blend of the beloved Lego aesthetic and engaging content. It'
3053s not just a book; it's an interactive and enjoyable pathway for young minds to explore their faith. Purchase on Holy Heroes7. A Magical Journey into Faith: Chronicles of Narnia Captivate young readers with the Chronicles of Narnia series by C.S. Lewis—a timeless adventure that weaves in valuable lessons of virtue, courage, and faith. Purchase on Amazon8. Unlocking Chesterton's Wisdom: The Father Brown Reader The Father Brown Reader serves as a captivating introduction to the wit and wisdom of G.K. Chesterton. It lays the groundwork for future literary exploration, introducing young hearts to the enigmatic Father Brown. Purchase on Amazon9. Exploring Sacred Meanings: Book of Catholic Signs & Symbols by Amy Welborn Dive into the rich symbolism of Catholicism with the Book of Catholic Signs & Symbols by Amy Welborn. This informative guide leads young minds through the meanings behind various signs and symbols within the Catholic faith. Purchase on Amazon10. A Spiritual Cinematic Experience: Brother Francis Movies and Formed Subscription Enrich your child's media diet with Brother Francis movies, offering wholesome Catholic content that both educates and entertains. Consider a Formed subscription for a diverse range of family-friendly Catholic content, ensuring a spiritually uplifting viewing experience. Formed.org11. Tangible Treasures of Faith: Sacramentals According to the Catechism of the Catholic Church, sacramentals are sacred signs that bear resemblance to the sacraments. This Christmas, consider gifting tangible expressions of faith—rosaries, saint medals, and scapulars. A couple places to visit for such gifts include catholiccompany.com and www.beaheart.com. You can also visit your local Catholic bookstore. Also, check out our gift guide here on The Catholic Best.Let your gifts transcend the material, nurturing the spiritual growth of the young hearts in your life. May these thoughtful presents create lasting memories and deepen the understanding of their Catholic faith.", 3054 "url": "https://www.thecatholicbest.com/blog/great-catholic-gift-ideas-for-boys-ages-8-12", 3055 "isPartOf": [ 3056 { 3057 "@type": "WebSite", 3058 "@id": "https://www.thecatholicbest.com/#website" 3059 }, 3060 { 3061 "@type": "CollectionPage", 3062 "@id": "https://www.thecatholicbest.com/blog#entity" 3063 }, 3064 { 3065 "@type": "CollectionPage", 3066 "@id": "https://www.thecatholicbest.com/blog?category[]=Catholic+Gift+Ideas#entity" 3067 } 3068 ], 3069 "publisher": { 3070 "@id": "https://www.thecatholicbest.com/#organization" 3071 }, 3072 "comment": null 3073}</script>
3073 3074 <div class="grid_element"> 3075 3076 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 3077 <span> 3078 Posted 3079 04/18/2024 </span> 3080 3081 </div> 3082 3083 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 3084 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="720"></span><button class="item-post-list-720 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="720" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-720'></span></button> 3085 </div> 3086 3087 <div class="clearfix"></div> 3088 3089 <div class="img_section col-sm-4 nopad sm-bmargin"> 3090 <a title="Great Catholic Gift Ideas for Boys Ages 8-12" href="/blog/great-catholic-gift-ideas-for-boys-ages-8-12"> 3091 <div class="alert-secondary btn-block text-center"> 3092 <img width="525" height="280" class="search_result_image center-block" alt="Great Catholic Gift Ideas for Boys Ages 8-12" title="Great Catholic Gift Ideas for Boys Ages 8-12" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240418122222.jpg"/> 3093 </div> 3094 </a> 3095 </div> 3096 3097 <div class="mid_section xs-nopad col-sm-8 "> 3098 3099 <a class="h3 bold bmargin center-block" title="Great Catholic Gift Ideas for Boys Ages 8-12" href="/blog/great-catholic-gift-ideas-for-boys-ages-8-12"> 3100 Great Catholic Gift Ideas for Boys Ages 8-12 </a> 3101 3102 <div class="clearfix"></div> 3103 3104 <p class="xs-nomargin"> 3105 Blog Contributed by Matt Chicoine from The Simple Catholic As we celebrate the various seasons... 3106 <a class="inline-block bold" title="Great Catholic Gift Ideas for Boys Ages 8-12" aria-label="Great Catholic Gift Ideas for Boys Ages 8-12" href="/blog/great-catholic-gift-ideas-for-boys-ages-8-12"> 3107 Read More 3108 </a> 3109 </p> 3110 3111 <div class="clearfix"></div> 3112 3113 3114 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 3115 Category 3116 <a class="bold" title="Website Blog Article - Catholic Gift Ideas" href="/blog?category[]=Catholic+Gift+Ideas"> 3117 Catholic Gift Ideas </a> 3118 </div> 3119 3120 </div> 3121 </div> 3122 <div class="clearfix"></div> 3123</div> 3124<div class="clearfix"></div> 3125<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 3126 <meta itemprop="position" content="8"> 3127 <meta itemprop="url" content="/blog/ways-to-celebrate-the-feast-of-st-joseph"> 3128 <meta itemprop="name" content="Ways to Celebrate the Feast of St. Joseph"> 3129 <!-- Structured Data Markup -->
3130<script type="application/ld+json"> 3131{ 3132 "@context": "https://schema.org/", 3133 "@type": "DiscussionForumPosting", 3134 "@id": "https://www.thecatholicbest.com/blog/ways-to-celebrate-the-feast-of-st-joseph#entity", 3135 "mainEntityOfPage": { 3136 "@type": "WebPage", 3137 "@id": "https://www.thecatholicbest.com/blog/ways-to-celebrate-the-feast-of-st-joseph" 3138 }, 3139 "headline": "Ways to Celebrate the Feast of St. Joseph", 3140 "name": "Ways to Celebrate the Feast of St. Joseph", 3141 "author": { 3142 "@type": "Organization", 3143 "url": "https://www.thecatholicbest.com/blog", 3144 "name": "The Catholic Best" 3145 }, 3146 "datePublished": "2024-03-18T21:15:00-05:00", 3147 "dateModified": "2024-03-19T06:49:19-05:00", 3148 "image": "/uploads/news-pictures/508--blog-post-image-20240318212707.jpg", 3149 "articleSection": "General", 3150 "about": { 3151 "@type": "Thing", 3152 "name": "General" 3153 }, 3154 "keywords": [ 3155 "General", 3156 "The Catholic Best", 3157 "Website Blog Article" 3158 ], 3159 "inLanguage": "en-US", 3160 "wordCount": 745, 3161 "articleBody": "This post written by Matt Chicoine of The Simple Catholic BlogSaint Joseph: A Silent Guardian and Role Model for All On March 19th the Catholic Church celebrates the life and witness of Saint Joseph. Despite the New Testament not containing any of his words, Saint Joseph's silent devotion and unwavering faith speak volumes, offering a great example for believers, particularly men, to imitate. Cardinal Robert Sarah wrote in The Power of Silence: Against the Dictatorship of Noise, "Man must make a choice: God or nothing, silence or noise." Through the lens of this wisdom, Saint Joseph emerges as a paragon of choosing God amidst life's clamors. His silent obedience to the divine will, notably demonstrated in his response to the angel's warning to flee from King Herod's wrath, showcases a complete trust and dependence on God. Amidst the chaos and distractions of modern life, Saint Joseph's example reminds us of the importance of seeking God's guidance and relying on His strength. By looking to the silent saint as a role model, we are prompted to deepen our own prayer lives, trusting in God's providence and seeking His help in navigating life's challenges. Celebrating Saint Joseph's Feast: Embracing Silence and Reflection The feast of Saint Joseph offers a sacred opportunity to honor his legacy and draw inspiration from his silent witness. One meaningful way to celebrate is by embracing the language of silence itself. Attending daily Mass provides a space for quiet reflection and gratitude for the witness of Saint Joseph, the guardian of our Lord. For those unable to attend Mass, carving out a few moments at the beginning or end of the day for personal prayer and reflection can serve as a poignant tribute to this saint. Exploring the Titles of Saint Joseph Beyond his role as the foster-father of Jesus, Saint Joseph has been bestowed with numerous titles that reflect his virtues and impact on our faith. While "Terror of the Demons" may be the most renowned, there are many other interesting designations by which to invoke Saint Joseph in prayer: Mirror of PatienceLover of Poverty Light of PatriarchsJoseph Most (Strong, Chaste, Obedient, Just) Protector of Holy ChurchGlory of Home Life Patron of the Dying Reciting the Litany of Saint Joseph, which encompasses these titles and more, offers a powerful means of deepening devotion to this beloved saint throughout the year. Patron of the Universal Church In 1870, Blessed Pope Pius IX declared Saint Joseph as the Patron of the Universal Church, a designation reaffirmed by Pope Francis in his Apostolic Letter Patris Corde on the 150th anniversary of this proclamation. Saint Joseph's obedience to the Father's plan and his pivotal role in salvation history underscore his greatness and significance in the life of the Church. To commemorate the Solemnity of Saint Joseph in a unique way, consider delving into papal documents that extol his virtues and impact on the Catholic Church. Start with seminal works such as Redemptoris Custos by Saint Pope John Paul II and Quamquam Pluries by Pope Leo XIII, allowing these writings to deepen your appreciation for Saint Joseph. Additional Ways to Celebrate Let us also honor the father figures in our lives, whether biological fathers, mentors, or spiritual guides. Take time to express gratitude and affection for their support and guidance, following Saint Joseph's example of paternal love and devotion. For those who may not have a father figure present, Saint Joseph stands as a beacon of hope and support. Entrust your search for guidance and mentorship to his intercession, seeking out nurturing relationships within your community or parish family. In commemorating the feast of Saint Joseph, let us strive to copy his virtues of humility, obedience, and unwavering faith, trusting in God'
3161s providence and seeking His guidance in all things. May the silent witness of Saint Joseph inspire us to deepen our relationship with God and live lives of holiness and devotion, following in the footsteps of the Patron of the Catholic Church. Related Resources Consecration to St. Joseph New Comic Book about Saint Joseph by Fr. Donald CallowayFind Saint Joseph Art - Perfect Gifts for Father's DayWhat are some ways you celebrate the Feast of St. Joseph? Share ideas, links, etc. in the comments below!", 3162 "url": "https://www.thecatholicbest.com/blog/ways-to-celebrate-the-feast-of-st-joseph", 3163 "isPartOf": [ 3164 { 3165 "@type": "WebSite", 3166 "@id": "https://www.thecatholicbest.com/#website" 3167 }, 3168 { 3169 "@type": "CollectionPage", 3170 "@id": "https://www.thecatholicbest.com/blog#entity" 3171 }, 3172 { 3173 "@type": "CollectionPage", 3174 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 3175 } 3176 ], 3177 "publisher": { 3178 "@id": "https://www.thecatholicbest.com/#organization" 3179 }, 3180 "comment": null 3181}</script>
3181 3182 <div class="grid_element"> 3183 3184 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 3185 <span> 3186 Posted 3187 03/18/2024 </span> 3188 3189 </div> 3190 3191 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 3192 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="687"></span><button class="item-post-list-687 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="687" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-687'></span></button> 3193 </div> 3194 3195 <div class="clearfix"></div> 3196 3197 <div class="img_section col-sm-4 nopad sm-bmargin"> 3198 <a title="Ways to Celebrate the Feast of St. Joseph" href="/blog/ways-to-celebrate-the-feast-of-st-joseph"> 3199 <div class="alert-secondary btn-block text-center"> 3200 <img width="497" height="280" class="search_result_image center-block" alt="Ways to Celebrate the Feast of St. Joseph" title="Ways to Celebrate the Feast of St. Joseph" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240318212707.jpg"/> 3201 </div> 3202 </a> 3203 </div> 3204 3205 <div class="mid_section xs-nopad col-sm-8 "> 3206 3207 <a class="h3 bold bmargin center-block" title="Ways to Celebrate the Feast of St. Joseph" href="/blog/ways-to-celebrate-the-feast-of-st-joseph"> 3208 Ways to Celebrate the Feast of St. Joseph </a> 3209 3210 <div class="clearfix"></div> 3211 3212 <p class="xs-nomargin"> 3213 This post written by Matt Chicoine of The Simple Catholic Blog Saint Joseph: A Silent Guardian and Role Model... 3214 <a class="inline-block bold" title="Ways to Celebrate the Feast of St. Joseph" aria-label="Ways to Celebrate the Feast of St. Joseph" href="/blog/ways-to-celebrate-the-feast-of-st-joseph"> 3215 Read More 3216 </a> 3217 </p> 3218 3219 <div class="clearfix"></div> 3220 3221 3222 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 3223 Category 3224 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 3225 General </a> 3226 </div> 3227 3228 </div> 3229 </div> 3230 <div class="clearfix"></div> 3231</div> 3232<div class="clearfix"></div> 3233<hr><div class="row-fluid search_result member-level-23" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 3234 <meta itemprop="position" content="9"> 3235 <meta itemprop="url" content="/blog/6-practical-ways-to-make-this-a-great-year"> 3236 <meta itemprop="name" content="6 Practical Ways to Make This a Great Year"> 3237 <!-- Structured Data Markup -->
3238<script type="application/ld+json"> 3239{ 3240 "@context": "https://schema.org/", 3241 "@type": "DiscussionForumPosting", 3242 "@id": "https://www.thecatholicbest.com/blog/6-practical-ways-to-make-this-a-great-year#entity", 3243 "mainEntityOfPage": { 3244 "@type": "WebPage", 3245 "@id": "https://www.thecatholicbest.com/blog/6-practical-ways-to-make-this-a-great-year" 3246 }, 3247 "headline": "6 Practical Ways to Make This a Great Year", 3248 "name": "6 Practical Ways to Make This a Great Year", 3249 "author": { 3250 "@type": "Organization", 3251 "url": "https://www.thecatholicbest.com/blog", 3252 "name": "The Catholic Best" 3253 }, 3254 "datePublished": "2024-01-04T10:05:00-06:00", 3255 "dateModified": "2025-01-03T15:44:26-06:00", 3256 "image": "/uploads/news-pictures/508--blog-post-image-20240104102056.png", 3257 "articleSection": "General", 3258 "about": { 3259 "@type": "Thing", 3260 "name": "General" 3261 }, 3262 "keywords": [ 3263 "General", 3264 "The Catholic Best", 3265 "Website Blog Article" 3266 ], 3267 "inLanguage": "en-US", 3268 "wordCount": 607, 3269 "articleBody": "While our liturgical New Year began in Advent, there is still something special about the turn of the calendar year. For those who embrace the Catholic faith, the start of the year is an ideal time to reorient our lives with the Gospel. In this blog post, we explore practical and meaningful ways to embark on the journey of the New Year from a Catholic perspective. From organizing our time to seeking inspiration from patron saints, let's examine some practical steps that can enrich our spiritual lives and set the tone for a purposeful year ahead.1. Organize Your Time with PurposeSetting up a calendar system is an excellent way to bring order to the chaos of daily life. Consider exploring Catholic planners like The Catholic Planner, The Saintmaker Life Planner, or the Digital Marian Planner from Catholic Sprouts. These tools not only help you manage your schedule but also integrate your faith into your daily plans.See who was voted 2024's Best Catholic Planner.2. Declutter for a Clearer Mind and Generous HeartTake a few minutes each day to declutter your living space. As you remove items you no longer need, consider donating them to charity. This simple act not only brings a sense of peace but also allows you to share your blessings with those in need.3. Establish a Prayer Routine with IntentionCrafting a prayer routine doesn't have to be complicated. The key is sincerity and consistency. Begin your day with an "Our Father" or "Hail Mary," expressing gratitude for the blessings in your life. Throughout the day, incorporate the powerful "Jesus Prayer": "Lord Jesus Christ, Son of God, have mercy upon me, a sinner." Find moments, like waiting at stoplights or during household chores, to connect with the divine.4. Seek Guidance from Your Patron SaintDiscovering your patron saint can be a meaningful journey. If you're named after a canonized saint or have a specific occupation, you may already have a patron. Alternatively, explore different spiritualities within the Catholic faith or turn to the Blessed Virgin Mary for guidance. Remember, the saints are there to inspire and intercede on your behalf.5. Nourish Your Mind with Wholesome ContentIn a world saturated with negativity, start your day on a positive note by consuming uplifting content. Consider incorporating podcasts like "The Bible in a Year" and "Catechism in a Year" by Father Mike Schmitz into your morning routine. These bite-sized portions of wisdom can set a positive tone for the rest of your day.6. Engage in Spiritual Programs for Lasting ImpactBeyond daily routines, consider participating in spiritual programs that span the entire year. Programs like Exodus 90, and Hozana's Novenas offer structured approaches to spiritual growth, providing a framework for a transformative year.See 2024's Best Programs to "Start the New Year off Right Programs."Armed with the tools to organize our time, connect with our faith, and engage in spiritual growth, we pave the way for a transformative journey this year. The decluttering of our physical spaces symbolizes the clearing of mental clutter, making room for peace and generosity. Establishing a prayer routine becomes a daily conversation with the divine, and seeking guidance from patron saints offers inspiration for the challenges ahead. Let us step into the coming days with a renewed sense of purpose, armed with the wisdom of our faith and the support of a community that spans both the earthly and heavenly realms. May this New Year be a testament to our commitment to living a life rooted in Catholic values, filled with grace, love, and unwavering faith.", 3270 "url": "https://www.thecatholicbest.com/blog/6-practical-ways-to-make-this-a-great-year", 3271 "isPartOf": [ 3272 { 3273 "@type": "WebSite", 3274 "@id": "https://www.thecatholicbest.com/#website" 3275 }, 3276 { 3277 "@type": "CollectionPage", 3278 "@id": "https://www.thecatholicbest.com/blog#entity" 3279 }, 3280 { 3281 "@type": "CollectionPage", 3282 "@id": "https://www.thecatholicbest.com/blog?category[]=General#entity" 3283 } 3284 ], 3285 "publisher": { 3286 "@id": "https://www.thecatholicbest.com/#organization" 3287 }, 3288 "comment": null 3289}</script>
3289 3290 <div class="grid_element"> 3291 3292 <div class="col-xs-8 col-sm-10 nolpad font-sm bmargin posted_meta_data"> 3293 <span> 3294 Posted 3295 01/04/2024 </span> 3296 3297 </div> 3298 3299 <div class="col-xs-4 col-sm-2 norpad favorite_button"> 3300 <span class="postItem" data-userid="508" data-datatype="20" data-dataid="14" data-postid="570"></span><button class="item-post-list-570 favorite fa fa-heart" aria-label="LIKE" data-count="" data-postid="570" data-state="0" data-activefeature="1" data-activefavorite="The Catholic Best Administrator Plan" data-toggle="modal" data-target="#myModal" ><span id='bookmark-content'>LIKE</span> <span class='' id='number-570'></span></button> 3301 </div> 3302 3303 <div class="clearfix"></div> 3304 3305 <div class="img_section col-sm-4 nopad sm-bmargin"> 3306 <a title="6 Practical Ways to Make This a Great Year" href="/blog/6-practical-ways-to-make-this-a-great-year"> 3307 <div class="alert-secondary btn-block text-center"> 3308 <img width="525" height="280" class="search_result_image center-block" alt="6 Practical Ways to Make This a Great Year" title="6 Practical Ways to Make This a Great Year" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240104102056.png"/> 3309 </div> 3310 </a> 3311 </div> 3312 3313 <div class="mid_section xs-nopad col-sm-8 "> 3314 3315 <a class="h3 bold bmargin center-block" title="6 Practical Ways to Make This a Great Year" href="/blog/6-practical-ways-to-make-this-a-great-year"> 3316 6 Practical Ways to Make This a Great Year </a> 3317 3318 <div class="clearfix"></div> 3319 3320 <p class="xs-nomargin"> 3321 While our liturgical New Year began in Advent, there is still something special about the turn of the calendar year....
3322 <a class="inline-block bold" title="6 Practical Ways to Make This a Great Year" aria-label="6 Practical Ways to Make This a Great Year" href="/blog/6-practical-ways-to-make-this-a-great-year"> 3323 Read More 3324 </a> 3325 </p> 3326 3327 <div class="clearfix"></div> 3328 3329 3330 <div class="nolpad hidden-sm hidden-xs font-sm text-left post-search-category inline-block"> 3331 Category 3332 <a class="bold" title="Website Blog Article - General" href="/blog?category[]=General"> 3333 General </a> 3334 </div> 3335 3336 </div> 3337 </div> 3338 <div class="clearfix"></div> 3339</div> 3340<div class="clearfix"></div> 3341<hr></div> 3342<div class="col-md-12 text-center nopad clickToLoadMoreContainer"> 3343 <div id="btnToLoadMorePost" class="btn btn-secondary btn-block btn-lg bold clickToLoadMoreBtn " data-page="2" data-lvl="" data-type="20" data-dc="14">Click To Load More Results</div> 3344</div><div class="clearfix clearfix-lg"></div> 3345<style> 3346 .gridBtnLazyLoadOld { 3347 clear: both; 3348 position: absolute; 3349 bottom: -30px; 3350 } 3351 .loadingMore{ 3352 pointer-events: none; 3353 } 3354 .grid-container.visible.row hr { 3355 display: none; 3356 } 3357</style> </div> 3358</div> 3359 <div class="clearfix"></div> 3360 <div class="post-pagination-block"> 3361 <ul class="pagination"> 3362 </ul> 3363 <div class="clearfix"></div> 3364 </div> 3365 <div class="clearfix"></div> 3366 </div> <!-- <div class="tab-content"> --> 3367 3368 <div class="col-md-4 col-md-pull-8"><style type='text/css'> .author-snapshot-details { 3369 display: flex; 3370 align-items: center; 3371 flex-wrap: wrap; 3372} 3373.author-snapshot .btn:not(.send-message-button-solo):not(.modal .btn), .author-snapshot span.author-phone { 3374 margin-bottom: 5px !important; 3375 text-align: left; 3376 font-weight: 600; 3377} 3378.author-snapshot .btn.view-listing-button { 3379 margin:0!important 3380} 3381.author-name { 3382 margin-bottom: 12px; 3383} </style> 3384 3385<style> 3386 .checkboxTop { 3387 position: relative; 3388 display: block;
3389 margin-top: 1px; 3390 color: rgb(35, 35, 35); 3391 padding: 10px 10px 10px 0px; 3392 /*border-top: solid 1px; 3393 border-color: rgb(235, 238, 240);*/ 3394 } 3395 3396 .checkbox { 3397 margin-top: 0px; 3398 margin-bottom: 0px; 3399 } 3400 3401 .clearFilterBtn { 3402 background-color: rgb(61, 79, 90); 3403 border-color: rgb(61, 79, 90); 3404 color: rgb(255, 255, 255); 3405 margin-top: 10px; 3406 margin-bottom: 10px; 3407 } 3408 3409 .sub { 3410 margin-top: 7px !important; 3411 margin-bottom: 7px; 3412 } 3413 3414 .maplink { 3415 color: black; 3416 } 3417 3418 .checkbox input[type=checkbox] { 3419 position: unset; 3420 /* margin-left: -10px; */ 3421 } 3422 3423 /* 3424 input[type="checkbox"] { 3425 appearance: none; 3426 display: inline-grid; 3427 place-content: center; 3428 background-color: #fff; 3429 margin: 0; 3430 font: inherit; 3431 color: currentColor; 3432 border: 0.1em solid #c4c4c4; 3433 border-radius: 50px !important; 3434 height: 9px; 3435 width: 9px; 3436 } 3437 */ 3438 3439 /* 3440 input[type="checkbox"]::before { 3441 content: ""; 3442 width: 0.3em; 3443 height: 0.3em; 3444 border-radius: 50%; 3445 transform: scale(0); 3446 transition: 120ms transform ease-in-out; 3447 3448 background-color: rgb(61, 79, 90); 3449 border: 1px solid rgb(61, 79, 90); 3450 } 3451 3452 input[type="checkbox"]:checked::before { 3453 transform: scale(1); 3454 padding-right: 2.4px; 3455 padding-top: 2px 3456 } */ 3457 3458 input.ckeckRadio:checked { 3459 background-color: rgb(61, 79, 90); 3460 /*box-shadow: inset 0px 0px 2px 2px #ffffff; 3461 transition: 0.5s;*/ 3462 } 3463 3464 /* 3465 input.ckeckRadio { 3466 position: relative; 3467 margin-left: 4px; 3468 height: 14px; 3469 width: 14px; 3470 float: left; 3471 margin: 4px 5px 2px 1px!important; 3472 border-radius: 50%; 3473 vertical-align: middle; 3474 border: 0.1em solid #c4c4c4; 3475 -webkit-appearance: none; 3476 outline: none; 3477 cursor: pointer; 3478 transition: 0.5s; 3479 } 3480*/ 3481 3482 a.toggleLink .fa-caret-down { 3483 margin-top: 2px; 3484 } 3485 3486 3487 .linkOpened { 3488 background-color: rgb(61, 79, 90); 3489 } 3490 3491 3492 .checkboxTop a.toggleLink { 3493 color: rgb(35, 35, 35) !important; 3494 } 3495 3496 .checkboxTop a.toggleLink i.fa-caret-down { 3497 transition: 0.5s; 3498 color: rgb(61, 79, 90); 3499 font-size: 20px; 3500 } 3501 3502 .linkOpened.checkboxTop a.toggleLink i.fa-caret-down { 3503 transform: rotate(180deg); 3504 color: rgb(238, 238, 238); 3505 } 3506 3507 .linkOpened.checkboxTop a.toggleLink { 3508 color: rgb(238, 238, 238) !important; 3509 } 3510 3511 .accName { 3512 font-weight: 600; 3513 } 3514 .list-top-cat { 3515 border-bottom: solid 1px; 3516 border-color: rgb(235, 238, 240); 3517 } 3518 3519 .select-sub-categories-body{ 3520 3521 min-height: .01%; 3522 overflow-x: auto; 3523 } 3524 3525 .sub-sub-accordion{ 3526 max-height: 200px; 3527 overflow-y: auto; 3528 } 3529 3530 .border-bottom{ 3531 border-bottom: solid 1px; 3532 border-color: rgb(235, 238, 240); 3533 } 3534</style> 3535 3536<link href="/directory/cdn/assets/bootstrap/css/bootstrap-select.min.css" rel="stylesheet"> 3537<link href="/directory/cdn/assets/bootstrap/css/daterangepicker.min.css" rel="stylesheet"> 3538 3539<div class="module"> 3540 <h3>Website Blog Article Search</h3> 3541 <form action="/blog" class="website-search" accept-charset="UTF-8" method="get"> 3542 3543 3544 <div class="input-group md-autosuggest bmargin"> 3545 <span class="input-group-addon"><i class="fa fa-search"></i></span> 3546 <input type="text" class="form-control articles_search md-autosuggest-input" id="keyword" placeholder="Keyword (Optional)" name="q" value=""> 3547 </div> 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 <div class="form-group" style="margin-top:10px;"> 3564 <a class="btn btn-block btn-default" href="blog"> Clear Filters </a> 3565 </div> 3566 <div class="form-group nomargin"> 3567 <button class="btn btn-primary btn-block" type="submit">Discover!</button> 3568 </div> 3569 </form> 3570</div> 3571 3572 3573<!-- 3574 3575IMPORTANT: 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. 3576 3577--> 3578 3579<br/> 3580<div align="center"> 3581 3582 3583<a class="vmargin" href="https://www.theholyquest.us/?ref=thecatholicbest" target="_blank"> 3584 <img width="300" height="300" loading="lazy" alt="Banner Ad" src="/images/ad1-traditio-designs-300x300.jpg"> 3585 </a> 3586 </div> 3587<br/> 3588 3589 3590 3591 <div class="clearfix"></div> 3592 <div align="center"> 3593 <a href="https://www.thecatholicbest.com/vote" target="_blank"> 3594 3595 <img src="https://www.thecatholicbest.com/images/The-Catholic-Best-Weekly-Vote.png"> 3596 3597 3598 3599 </a> 3600 3601</div> 3602<br/><div align="center"> 3603 <a href="https://www.thecatholicbest.com/subscribe" target="_blank"> 3604 3605 <img src="https://www.thecatholicbest.com/images/The-Catholic-Best-Email-Newsletter.png"> 3606 3607 3608 3609 </a> 3610 3611</div> 3612<br/><div align="center"> 3613 3614 3615 3616<!-- Sidebar Square -->
3617<script src="https://secureaddisplay.com/au/"></script>
3617 3618<ins class="CANDisplayAD" data-ad-unit="773130920231107T155218457401439AD80254183ACF12FD16C41E68F" style="display:block"></ins> 3619<!-- /Sidebar Square --> 3620 3621 <br/> 3622 3623</div> 3624<style type='text/css'> .breakText { 3625 word-break: break-word; 3626} 3627.related-post-image { 3628 position: relative; 3629 overflow: hidden; 3630 background-color: 3631 rgb(244, 244, 244) !important; 3632} 3633.related-post-image::before { 3634 content: ""; 3635 position: absolute; 3636 top: 0; 3637 left: 0; 3638 right: 0; 3639 bottom: 0; 3640 background-repeat: no-repeat; 3641 background-position: center center; 3642 background-size: cover; 3643 filter: blur(4px); 3644} 3645.related-post-item img { 3646 max-height:150px; 3647 border-bottom-left-radius: 0!important; 3648 border-bottom-right-radius: 0!important; 3649 transform: scale(1); 3650 transition: all 275ms ease-in-out 0ms; 3651} 3652.related-post-item:hover img { 3653 transform: scale(1.075); 3654} </style> 3655 <div class="module related-post-item-group"> 3656 <h2 class="nomargin"> 3657 Related Posts </h2> 3658 <hr> 3659 <div class="related-post-item well nopad tmargin bmargin"> 3660 <a title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" href="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood" class=" related-post-image related-post-773 center-block img-rounded no-radius-bottom"> 3661 <style>.related-post-image.related-post-773::before{background-image: url("/uploads/news-pictures-thumbnails/508--blog-post-image-20240616072144.jpg");}</style> 3662 <img width="525" height="280" class="center-block lazyloader" loading="lazy" alt="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240616072144.jpg" /> 3663 </a> 3664 3665 <div class="related-post-title fpad text-center btn-default"> 3666 <a class="inline-block breakText font-sm btn-default" title="Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood"href="/blog/standing-on-the-shoulders-of-giants-a-reflection-on-catholic-fatherhood"> 3667 Standing on the Shoulders of Giants - A Reflection on Catholic Fatherhood </a> 3668 </div> 3669 </div> 3670 <div class="clearfix"></div> 3671 <div class="related-post-item well nopad tmargin bmargin"> 3672 <a title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" href="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals" class=" related-post-image related-post-768 center-block img-rounded no-radius-bottom"> 3673 <style>.related-post-image.related-post-768::before{background-image: url("/uploads/news-pictures-thumbnails/508--blog-post-image-20240610114427.jpg");}</style> 3674 <img width="525" height="280" class="center-block lazyloader" loading="lazy" alt="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240610114427.jpg" /> 3675 </a> 3676 3677 <div class="related-post-title fpad text-center btn-default"> 3678 <a class="inline-block breakText font-sm btn-default" title="Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals)"href="/blog/why-it-s-important-to-find-a-catholic-doctor-and-other-trusted-faithful-professionals"> 3679 Why It's Important to Find a Catholic Doctor (and Other Trusted Faithful Professionals) </a> 3680 </div> 3681 </div> 3682 <div class="clearfix"></div> 3683 <div class="related-post-item well nopad tmargin bmargin"> 3684 <a title="A Guide to Digital Protection for Catholic Parents" href="/blog/a-guide-to-digital-protection-for-catholic-parents" class=" related-post-image related-post-759 center-block img-rounded no-radius-bottom"> 3685 <style>.related-post-image.related-post-759::before{background-image: url("/uploads/ne
3685ws-pictures-thumbnails/508--blog-post-image-20240522113522.jpg");}</style> 3686 <img width="525" height="280" class="center-block lazyloader" loading="lazy" alt="A Guide to Digital Protection for Catholic Parents" title="A Guide to Digital Protection for Catholic Parents" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240522113522.jpg" /> 3687 </a> 3688 3689 <div class="related-post-title fpad text-center btn-default"> 3690 <a class="inline-block breakText font-sm btn-default" title="A Guide to Digital Protection for Catholic Parents"href="/blog/a-guide-to-digital-protection-for-catholic-parents"> 3691 A Guide to Digital Protection for Catholic Parents </a> 3692 </div> 3693 </div> 3694 <div class="clearfix"></div> 3695 <div class="related-post-item well nopad tmargin bmargin"> 3696 <a title="Ways to Celebrate the Feast of St. Joseph" href="/blog/ways-to-celebrate-the-feast-of-st-joseph" class=" related-post-image related-post-687 center-block img-rounded no-radius-bottom"> 3697 <style>.related-post-image.related-post-687::before{background-image: url("/uploads/news-pictures-thumbnails/508--blog-post-image-20240318212707.jpg");}</style> 3698 <img width="497" height="280" class="center-block lazyloader" loading="lazy" alt="Ways to Celebrate the Feast of St. Joseph" title="Ways to Celebrate the Feast of St. Joseph" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240318212707.jpg" /> 3699 </a> 3700 3701 <div class="related-post-title fpad text-center btn-default"> 3702 <a class="inline-block breakText font-sm btn-default" title="Ways to Celebrate the Feast of St. Joseph"href="/blog/ways-to-celebrate-the-feast-of-st-joseph"> 3703 Ways to Celebrate the Feast of St. Joseph </a> 3704 </div> 3705 </div> 3706 <div class="clearfix"></div> 3707 <div class="related-post-item well nopad tmargin bmargin"> 3708 <a title="Discerning Godâs Voice Through Emotional Awareness and Regulation" href="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation" class=" related-post-image related-post-753 center-block img-rounded no-radius-bottom"> 3709 <style>.related-post-image.related-post-753::before{background-image: url("/uploads/news-pictures-thumbnails/508--blog-post-image-20240510105924.jpg");}</style> 3710 <img width="525" height="280" class="center-block lazyloader" loading="lazy" alt="Discerning Godâs Voice Through Emotional Awareness and Regulation" title="Discerning Godâs Voice Through Emotional Awareness and Regulation" src="/uploads/news-pictures-thumbnails/508--blog-post-image-20240510105924.jpg" /> 3711 </a> 3712 3713 <div class="related-post-title fpad text-center btn-default"> 3714 <a class="inline-block breakText font-sm btn-default" title="Discerning Godâs Voice Through Emotional Awareness and Regulation"href="/blog/discerning-godâs-voice-through-emotional-awareness-and-regulation"> 3715 Discerning Godâs Voice Through Emotional Awareness and Regulation </a> 3716 </div> 3717 </div> 3718 <div class="clearfix"></div> 3719 </div> 3720 </div> 3721 3722 </div> 3723 <div class="clearfix"></div> 3724 </div> 3725</div> 3726</main> 3727<!-- End Content --> 3728<div class="clearfix footer-clear-element clearfix-lg"></div> 3729<!-- 3730 3731IMPORTANT: 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. 3732 3733--> 3734<div class="clearfix"></div> 3735<div class="content-container banner-ad-unit footer-banner-container"> 3736 3737 <div class="container text-center banner-ad-unit footer-banner-ad"> 3738 3739 <!-- 970x90 -->
3740<script src="https://secureaddisplay.com/au/"></script>
3740 3741<ins class="CANDisplayAD" data-ad-unit="773130920230317T142313483D84C578AC591461B95C72AB716AE262D" style="display:block"></ins> 3742<!-- /970x90 --> <div class="clearfix clearfix-lg"></div> 3743 </div> 3744</div> 3745<div class="clearfix"></div> 3746<div class="footer"> 3747 <div class="container"> 3748 <div class="row"> 3749 <ul class="footer_menu sm-text-center"> 3750 <li class='col-md-5'><span id='link654' class='head'> Disclaimer</span><ul><li class=''><span id='link655' class='content'> The information provided by Cofome LLC ("we," "us," or "our") or the listing members on www.thecatholicbest.com (the "Site") is for general informational purposes only. All information on the Site is provided in good faith, however we make no representation or warranty of any kind, express, or implied, regarding the accuracy, adequacy, validity, reliability, availability, or completeness of any information on the Site. UNDER NO CIRCUMSTANCE SHALL WE HAVE ANY LIABILITY TO YOU FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF THE SITE OR RELIANCE ON ANY INFORMATION PROVIDED ON THE SITE. YOUR USE OF THE SITE AND YOUR RELIANCE ON ANY INFORMATION ON THE SITE IS SOLELY AT YOUR OWN RISK.</span></li></ul></li><li class='col-md-2 col-md-offset-1'><span id='link656' class='head'> Website</span><ul><li class=''><a href='/about' id='link657'>About Us </a></li><li class=''><a href='/join' id='link658'>Create a Listing</a></li></ul></li><li class='col-md-2'><span id='link659' class='head'> Search</span><ul><li class=''><a href='/categories' id='link660'>Browse Categories</a></li><li class=''><a href='/locations' id='link661'>Browse Locations</a></li></ul></li><li class='col-md-2'><span id='link662' class='head'> Support</span><ul><li class=''><a href='/login' id='link663'>Member Login</a></li><li class=''><a href='/faq' id='link664'>FAQ's</a></li><li class=''><a href='/contact' id='link927'>Contact Us</a></li></ul></li><li class='col-md-12 clearfix'><span id='link665'> </span></li><li class='col-md-5 vpad vmargin'><span id='link666'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style> 3751<div class="list-social-links"> 3752 <a class="network-icon contact" href="/about/contact" title="Contact Us The Catholic Best"> 3753 <i class="bi bi-envelope"></i> 3754 </a> 3755 <a class="network-icon facebook" href="https://www.facebook.com/thecatholicbest" target="_blank" title="The Catholic Best Facebook"> 3756 <i class="bi bi-facebook"></i> 3757 </a> 3758 3759 3760 <a class="network-icon youtube" href="https://www.youtube.com/@thecatholicbest" target="_blank" title="The Catholic Best YouTube"> 3761 <i class="bi bi-youtube"></i> 3762 </a> 3763 3764 <a class="network-icon instagram" href="https://www.instagram.com/thecatholicbest/" target="_blank" title="The Catholic Best Instagram"> 3765 <i class="bi bi-instagram"></i> 3766 </a> 3767 <div class="clearfix"></div> 3768</div></span></li><li class='col-md-6 col-md-offset-1 vpad vmargin'><a href='/join' id='link667' class='btn btn_footer_get_listed btn-lg btn-block bold center sm-block'>Listings - Get Listed Today</a></li><li class='col-md-12 clearfix vmargin text-center'><span id='link668'> </span><ul><li class='clearfix vmargin vpad inline-block'><span id='link669'> </span></li><li class='btn-lg font-sm novpad norpad inline-block'><span id='link670'> © 2026</span></li><li class='font-sm inline-block hpad'><a href='/' id='link671' title='The Catholic Best'>The Catholic Best</a></li><li class='font-sm inline-block'><span id='link672'> All Rights Reserved</span></li><li class='font-sm inline-block hpad'><a href='/about/terms' id='link673' title='Terms of Use'>Terms of Use</a></li><li class='font-sm inline-block'><a href='/about/privacy' id='link674' title='Privacy Policy'>Privacy Policy</a></li></ul></li> </ul> 3769 </div> 3770 </div> 3771</div><style type='text/css'> .scrollup { 3772 border-radius: 3px; 3773 width: 40px; 3774 height: 40px; 3775 opacity: 0.4; 3776 position: fixed; 3777 bottom: 30px; 3778 right: 30px; 3779 display: none; 3780 background: rgba(119, 119, 119, 0.8); 3781 z-index: 1000000; 3782} 3783.scrollup i { 3784 font-size: 36px; 3785 color: white; 3786 position: relative; 3787 top: 0px; 3788 left: 10px; 3789} </style> <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallMod
3789alLabel" 3790 data-backdrop="static" data-keyboard="false"> 3791 <div class="modal-dialog" role="document"> 3792 <div class="modal-content"> 3793 <div class="modal-body nohpad nobpad"> 3794 <button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin" 3795 data-dismiss="modal">× 3796 </button> 3797 <style> 3798 .member-login-container:not(.modal .module) { 3799 width: 555px; 3800 max-width: 100%; 3801 margin-left: auto; 3802 margin-right: auto; 3803 margin-bottom:0; 3804 background-color: rgb(255, 255, 255)!important; 3805 border-color: rgb(247, 247, 247)!important; 3806 color: rgb(41, 41, 41)!important; 3807 } 3808 .login-register-tabs, .login-register-content { 3809 width: 555px!important; 3810 max-width: 100%; 3811 margin-left: auto!important; 3812 margin-right: auto!important; 3813 background-color: rgb(247, 247, 247); 3814 } 3815 .login-register-content { 3816 background: transparent; 3817 padding: 0; 3818 border: none; 3819 } 3820 .login-register-content h2, .login-register-content h2+hr, .login-register-content .account-menu-title { 3821 display: none!important; 3822 } 3823 .express_login_create_account_prefix hr { 3824 margin: 15px 0 10px; 3825 }
3826 .modal-content #containerFBLogin, .modal-content #containerGoogleLogin { 3827 margin:15px 0; 3828 } 3829 3830 /* CSS When Login Form and Express Registration Rendered in Sidebar */ 3831 .col-md-3 .bd-chat-well-container,.col-md-4 .bd-chat-well-container { 3832 padding: 15px 10px; 3833 } 3834 .col-md-3 .bd-chat-center-text,.col-md-4 .bd-chat-center-text { 3835 margin: 0; 3836 font-size: 20px; 3837 padding: 0 15px; 3838 } 3839 .col-md-3 .member-login-page-container .login-register-tabs *, .col-md-4 .member-login-page-container .login-register-tabs * { 3840 font-size: 12px; 3841 line-height: 1.2em; 3842 vertical-align: bottom; 3843 } 3844 .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a { 3845 padding: 5px !important; 3846 height: 50px; 3847 vertical-align: middle; 3848 display: table-cell !important; 3849 width: 1%; 3850 } 3851 .col-md-3 .member-login-page-container .login-register-content, .col-md-4 .member-login-page-container .login-register-content { 3852 padding: 0; 3853 } 3854 .col-md-3 .member-login-container, .col-md-4 .member-login-container { 3855 padding: 15px !important; 3856 font-size: 13px; 3857 } 3858 .col-md-3 .member-login-page-container .input-lg, .col-md-4 .member-login-page-container .input-lg { 3859 height: 34px; 3860 padding: 6px 12px; 3861 font-size: 14px; 3862 } 3863 .col-md-3 .member-login-page-container .security_question_label, .col-md-4 .member-login-page-container .security_question_label { 3864 transform: scale(.85); 3865 margin: -1.15em -1.15em 0; 3866 } 3867 .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 { 3868 width: 100%; 3869 display: block; 3870 margin-top:5px; 3871 } 3872 .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li { 3873 padding:0 3874 } 3875 .col-md-3 .login-cta-buttons ul.nav, .col-md-4 .login-cta-buttons ul.nav { 3876 margin-top: -10px; 3877 } 3878 .col-md-3 #googleAction, .col-md-3 #facebookAction, .col-md-4 #googleAction, .col-md-4 #facebookAction { 3879 padding: 0; 3880 min-height: 0; 3881 font-size: 14px; 3882 margin: 0; 3883 } 3884 .col-md-3 #googleAction img, .col-md-3 #facebookAction img, .col-md-4 #googleAction img, .col-md-4 #facebookAction img { 3885 height: 36px !important; 3886 margin-right: 5px; 3887 position: relative!important; 3888 display: inline-block; 3889 } 3890 @media only screen and (max-width: 767px) { 3891 .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a { 3892 display: block !important; 3893 width: 100%; 3894 line-height: 40px; 3895 } 3896 3897 #containerGoogleLogin { 3898 text-align: center; 3899 margin-top: 10px; 3900 } 3901 #containerGoogleLogin #gBtn { 3902 display: inline-block; 3903 } 3904 } 3905 </style> 3906 <div class="row member-login-page-container"> 3907 <div class="fpad-lg novpad"> 3908 3909 3910 <div class="module fpad-xl member-login-container"> 3911 <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=" ">
3911<input type="hidden" name="sized" value="0" id="member_login_190-1-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="member_login_190-1-element-1"/><input type="hidden" name="form" value="myform" id="member_login_190-1-element-2"/><input type="hidden" name="formname" value="member_login" id="member_login_190-1-element-3"/><input type="hidden" name="dowiz" value="1" id="member_login_190-1-element-4"/><input type="hidden" name="save" value="1" id="member_login_190-1-element-5"/><input type="hidden" name="url_origin_pars" value="/blog" id="member_login_190-1-element-6"/><input type="hidden" name="action" autocomplete="off" value="login" id="member_login_190-1-element-7"/><h2 class="nomargin member-login-h2-form-title">Member Login</h2><hr><style type='text/css'> #containerGoogleLogin #gBtn { 3912 display: inline-block; 3913 text-align: center; 3914 width: 216px; 3915} 3916 3917.module #containerFBLogin #facebookAction img, .module #containerFBLogin #facebookAction img { 3918 position: absolute !important; 3919} 3920.module #containerFBLogin a#facebookAction { 3921 max-width: 200px; 3922 position: relative; 3923 left: -8px; 3924 3925} </style> <!-- Required Font-Family for Social Buttons --> 3926 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap"> 3927 <noscript> 3928 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap"> 3929 </noscript> 3930 3931 <div class="row social-login-row"> 3932 </div><div class="form-group"><label class="vertical-label bd-email" for="member_login_190-1-element-10"><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-10"/></div><div class="form-group"><label class="vertical-label bd-password" for="member_login_190-1-element-11"><span class="required">* </span>Password</label> 3933 <style> 3934 #togglePassword { 3935 background: none; 3936 border: none; 3937 cursor: pointer; 3938 font-weight: bold; 3939 font-size: .85em; 3940 position: absolute; 3941 right: 5px; 3942 top: 0; 3943 } 3944 </style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button> 3945
3945<script> 3946 function showPassword(node){ 3947 const parent = node.closest('.form-group'); 3948 const passwordField = parent.querySelector(`input[type='password'], input[type='text']`); 3949 const isPassword = passwordField.getAttribute('type') === 'password'; 3950 passwordField.setAttribute('type', isPassword ? 'text' : 'password'); 3951 const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`; 3952 node.innerHTML = iconHTML; 3953 } 3954 </script>
3954<input type="password" name="pass" required placeholder="Enter Password" autocomplete="off" value class="form-control input-lg" id="member_login_190-1-element-11"/></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"> 3955 <div id="member_login_190-1-captchaContainer" class="control-group"> 3956 <div class="g-recaptcha" id="member_login_190-1-google-recaptcha"></div> 3957 </div> 3958 <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> 3959 <div class="clearfix bmargin"></div> 3960 <input type="hidden" name="recaptcha" id="member_login_190-1-rcap"> 3961</div> 3962 <style> 3963 .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 { 3964 transform: scale(0.77); 3965 -webkit-transform: scale(0.77); 3966 transform-origin: 0 0; 3967 -webkit-transform-origin: 0 0; 3968 margin-bottom: -15px; 3969 } 3970 3971 .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 { 3972 transform: scale(0.77); 3973 -webkit-transform: scale(0.77); 3974 transform-origin: 0 0; 3975 -webkit-transform-origin: 0 0; 3976 margin-bottom: -15px; 3977 } 3978 </style> 3979
3979<script type="text/javascript"> 3980 if(typeof formsFound == "undefined"){ 3981 var formID = ''; 3982 var currentCaptcha = {}; 3983 var captchaHolders = {}; 3984 var formsFound = {}; 3985 var captchaApiRequested = false; 3986 /* The forms the visitor has actually interacted with - only these get a widget. */ 3987 var captchaArmedForms = []; 3988 /* api.js stays lazy - nothing is fetched from Google until the visitor actually 3989 touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in 3990 and presses Enter without ever clicking, so api.js never loaded, the captcha 3991 never rendered, and the form POSTed an empty token. */ 3992 var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart']; 3993 3994 window.addEventListener('load', () => { 3995 formID = document.querySelectorAll('[name="recaptcha"]'); 3996 if (typeof formID != "undefined" && formID !== null) { 3997 for (let i = 0; i < formID.length; i++) { 3998 let formIDForm = formID[i].closest('form'); 3999 let captchaHolder = formIDForm.querySelector(".g-recaptcha"); 4000 4001 if (typeof formsFound[formIDForm.id] != "undefined") { 4002 formsFound[formIDForm.id]['counter']++; 4003 }else{ 4004 formsFound[formIDForm.id] = {'counter' : 1}; 4005 } 4006 4007 formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']); 4008 captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']); 4009 4010 if (typeof formIDForm != "undefined" && formIDForm !== null) { 4011 captchaTriggerEvents.forEach( evt => 4012 formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false) 4013 ); 4014 } 4015 } 4016 } 4017 }); 4018 } 4019 4020 function reCaptchaOnFormInteraction(event) { 4021 if (event && event.currentTarget) { 4022 captchaArmForm(event.currentTarget); 4023 } 4024 if (captchaApiRequested) { 4025 renderArmedCaptchas(); 4026 return; 4027 } 4028 captchaApiRequested = true; 4029 4030 var head = document.getElementsByTagName('head')[0]; 4031 var script = document.createElement('script'); 4032 script.type = 'text/javascript'; 4033 script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en'; 4034 head.appendChild(script); 4035 } 4036 4037 var captchaArmForm = function (formEl) { 4038 if (!formEl) { 4039 return; 4040 } 4041 for (var a = 0; a < captchaArmedForms.length; a++) { 4042 if (captchaArmedForms[a] === formEl) { 4043 return; 4044 } 4045 } 4046 captchaArmedForms.push(formEl); 4047 }; 4048 4049 var captchaSolvedCallback = function (holder) { 4050 return function () { 4051 var formEl = holder.closest('form'); 4052 if (!formEl) { 4053 return; 4054 } 4055 $(formEl).find('.security_question_label').removeClass('has-error'); 4056 $(formEl).find('#recaptcha_error').css('display', 'none'); 4057 var notification = document.getElementById(formEl.id + '-notification'); 4058 if (notification && notification.classList.contains('alert-danger-subtle')) { 4059 $(notification).slideUp(); 4060 } 4061 }; 4062 }; 4063 4064 var renderArmedCaptchas = function () { 4065 if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") { 4066 return; 4067 } 4068 for (var f = 0; f < captchaArmedForms.length; f++) { 4069 var holder = captchaArmedForms[f].querySelector('div[class=g-rec
4069aptcha]'); 4070 4071 if (!holder || !holder.id || holder.getClientRects().length === 0) { 4072 continue; 4073 } 4074 /* Guard a second render: grecaptcha throws on an element it already claimed. */ 4075 if (typeof captchaHolders[holder.id] === "undefined") { 4076 captchaHolders[holder.id] = grecaptcha.render(holder.id, { 4077 'sitekey': '6LdfEqEkAAAAAIDZZO8ipxDmxahQaHGSXpr2hnZb', 4078 'callback': captchaSolvedCallback(holder) 4079 }); 4080 } 4081 } 4082 }; 4083 4084 var onloadCallback = function (event) { 4085 renderArmedCaptchas(); 4086 }; 4087 4088 </script>
vendor: 1 bytes, line 4088
4088
4089<script> 4090 $(document).ready(function(){ 4091 /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on 4092 the submit button, so the click guard below never sees it and the form POSTed an 4093 empty token. Bound on document/capture so it runs before FormValidation's own 4094 handler on the form - at AT_TARGET the capture flag does not order listeners, so a 4095 listener on the form itself would not reliably win. Native HTMLFormElement.submit() 4096 does not dispatch 'submit', so the solved-captcha path below is unaffected. */ 4097 var captchaGuardedForm = document.getElementById('member_login_190-1'); 4098 if (captchaGuardedForm) { 4099 document.addEventListener('submit', function (event) { 4100 if (event.target !== captchaGuardedForm) { 4101 return; 4102 } 4103 4104 var formId = captchaGuardedForm.id; 4105 var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter'); 4106 var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined"; 4107 4108 if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") { 4109 $("#" + formId + " .security_question_label").removeClass("has-error"); 4110 $("#" + formId + " #recaptcha_error").css("display", "none"); 4111 return; 4112 } 4113 4114 /* Unsolved, or api.js still in flight: either way there is no token to send. */ 4115 event.preventDefault(); 4116 event.stopImmediatePropagation(); 4117 $("#" + formId + " .security_question_label").addClass("has-error"); 4118 $("#" + formId + " #recaptcha_error").css("display", "block"); 4119 return false; 4120 }, true); 4121 } 4122 $("#member_login_190-1 input[type=submit]").unbind('click'); 4123 $("#member_login_190-1 input[type=submit]").click(function (event) { 4124 4125 var formId = $(this.form).attr('id'); 4126 var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter'); 4127 4128 if (typeof captchaHolders[captchaHolderKey] != "undefined") { 4129 if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") { 4130 event.preventDefault(); 4131 $("#" + formId).formValidation('validate'); 4132 $("#" + formId + " .security_question_label").addClass("has-error"); 4133 $("#" + formId + " #recaptcha_error").css("display", "block"); 4134 return false; 4135 } 4136 4137 /* Solved captcha: clear the error UI and let the click proceed untouched. 4138 The browser then fires a REAL, button-initiated submit event, so 4139 FormValidation runs its normal chain (success.form.fv -> AJAX modal on 4140 checkout / native POST on login). Re-submitting here artificially broke 4141 both ways: native form.submit() skips the FV chain (checkout rendered the 4142 raw JSON response), and jQuery .submit() fires a synthetic submit that FV 4143 refuses, leaving the form stuck after the first error (Bug 2). */ 4144 $("#" + formId + " .security_question_label").removeClass("has-error"); 4145 $("#" + formId + " #recaptcha_error").css("display", "none"); 4146 } 4147 }); 4148 }); 4149</script>
4149</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-14"/></div><div class="login-cta-buttons"><hr class="cta-hr"><ul class="list-inline nomargin inline-block btn-block"><li class='col-md-12 text-center bold nav'><a href='/join' id='link198'>Don't Have an Account? Get Listed Today</a></li></ul><div class="clearfix"></div></div></form>
4149<script type="text/javascript">jQuery(document).ready(function() { jQuery("#member_login_190-1").bind("submit", function() { 4150 });}); </script>
4150 <div class="clearfix"></div> 4151 </div> 4152 4153 4154 </div> 4155 </div> 4156 </div> 4157 </div> 4158 </div> 4159 </div> 4160 4161 4162 4163 <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
4164<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
4164 4165
4166<script> 4167 function clearContent(thisObj){ 4168 var size; 4169 if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){ 4170 size = "small"; 4171 } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){ 4172 size = "large"; 4173 } else { 4174 size = "medium"; 4175 } 4176 if(!thisObj.parent().hasClass('input_wrapper')){ 4177 if(thisObj.parent().hasClass('input-group-sm')){ 4178 thisObj.wrap('<span class="input-group-sm input_wrapper"></span>'); 4179 } else if (thisObj.parent().hasClass('input-group-lg')){ 4180 thisObj.wrap('<span class="input-group-lg input_wrapper"></span>'); 4181 } else { 4182 thisObj.wrap('<span class="input_wrapper"></span>'); 4183 } 4184 } 4185 if(thisObj.val() != ""){ 4186 if(thisObj.hasClass('googleSuggest')){ 4187 thisObj.parent().find('.fill_location').remove(); 4188 } 4189 if (!thisObj.parent().find('.clear_content').length){ 4190 thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`); 4191 if (thisObj.hasClass("tt-input")) { 4192 thisObj.focus(); 4193 } 4194 4195 } 4196 } 4197 if (thisObj.hasClass('googleSuggest') && thisObj.val().length == 0) { 4198 thisObj.parent().append(`<span class="fill_location ${size}"><i class="fa fa-crosshairs" title="Use Current Location" aria-hidden="true"></i></span>`); 4199 } 4200 if (thisObj.val() == "" && thisObj.parent().find('.clear_content').length){ 4201 thisObj.parent().find('.clear_content').remove(); 4202 } 4203 } 4204 4205 $(document).on('click', '.drp-buttons .applyBtn', function(){ 4206 clearContent($(".dateRange input")); 4207 }); 4208 4209 $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){ 4210 clearContent($(this)); 4211 }); 4212 4213 $(document).ready(function(){ 4214 $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){ 4215 clearContent($(this)); 4216 }) 4217 }) 4218 4219 $(document).on('click', '.clear_content', function(){ 4220 $(this).parent().find('input').val(''); 4221 //tt-input its a class for typeahead auto-suggest 4222 if ($(this).parent().find('input').hasClass("tt-input")) { 4223 $(this).parent().find('input').typeahead('val',''); 4224 } 4225 clearContent($(this).parent().find('input')); 4226 $(this).remove(); 4227 }); 4228 4229 $(window).on('load', function () { 4230 setTimeout(function() { 4231 // add missing href attribute to multi-category options in search modules 4232 $('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#'); 4233 }, 2000); 4234 }); 4235</script>
4235 4236 4237 4238 4239<a href="#" class="scrollup" title="scrollup"> 4240 <i class="fa fa-caret-up" aria-hidden="true"></i> 4241</a>
4242<script> 4243 $(document).ready(function(){ 4244 // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318. 4245 // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an 4246 // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button). 4247 if ($.fn.progressbar) { 4248 $('.progress .progress-bar').progressbar({ 4249 display_text: 'fill' 4250 }); 4251 } 4252 $(window).scroll(function(){ 4253 4254 if ($(this).scrollTop() > 600) { 4255 $('.scrollup').fadeIn(); 4256 4257 } else { 4258 $('.scrollup').fadeOut(); 4259 } 4260 }); 4261 $('.scrollup').click(function(){ 4262 $("html, body").animate({ 4263 scrollTop: 0 4264 }, 600); 4265 return false; 4266 }); 4267 $('#cropButton').click(function(){ 4268 var iframe = $("#cropiFrame"); 4269 iframe.attr("src", iframe.data("src")); 4270 }); 4271 }); 4272</script>
vendor: 2 bytes, line 4272
4272
4273<script> 4274 function loadMasonryJs() { 4275 return new Promise((resolve, reject) => { 4276 if (window["masonryJs"]) { 4277 resolve("already load masonry"); 4278 } else { 4279 let script = document.createElement('script'); 4280 script.type = 'text/javascript'; 4281 script.src = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/masonry_gridview.pkgd.min.js"; 4282 script.async = true; 4283 script.onload = function () { 4284 window['masonryJs'] = true; 4285 resolve("ok"); 4286 }; 4287 let head = document.getElementsByTagName('head')[0]; 4288 head.appendChild(script); 4289 4290 } 4291 }); 4292 } 4293 4294 var map_opened = 0; 4295 var masonry_opened = 0; 4296 4297 $(".views > i").click(function () { 4298 $(".views > i").removeClass('activeView'); 4299 $(this).addClass('activeView'); 4300 }); 4301 $(".views > i.gridView").click(async function () { 4302 await loadMasonryJs(); 4303 $('.grid-container .clickToLoadMoreContainer').addClass('gridBtnLazyLoad') 4304 if (map_opened == 1) { 4305 $('.grid-container').removeClass('hidden'); 4306 $('.map_container').hide(); 4307 map_opened = 0; 4308 } 4309 $('.grid-container').addClass('visible'); 4310 $('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2'); 4311 $('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3'); 4312 $('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4'); 4313 $('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9'); 4314 $('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6'); 4315 $('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad'); 4316 $('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad'); 4317 $('.mid_section .post-location-snippet').addClass('text-center'); 4318 $('.mid_section.ex-col-7 .sm-block').addClass('show'); 4319 $('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin'); 4320 $('.mid_section .row-fluid.bpad a').addClass('btn-block'); 4321 $('.mid_section .row-fluid.bpad').addClass('text-center'); 4322 $('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad'); 4323 $('.mid_section > div > p').addClass('text-center'); 4324 $('.mid_section h2').addClass('nomargin'); 4325 $('.mid_section a.h3').addClass('text-center h4 tmargin'); 4326 $('.mid_section .view-details').removeClass('rmargin'); 4327 $('.mid_section .contact-member').removeClass('lmargin'); 4328 $('.member-search-full-name').removeClass('rmargin'); 4329 $('.member-search-reviews').removeClass('rmargin'); 4330 $('.member-search-location').removeClass('rmargin rpad'); 4331 $('.member-search-company').addClass('btn-block'); 4332 $('.view_phone_number').addClass('center-block'); 4333 $('.phone_number').addClass('btn-block'); 4334 $('.search_result_image').addClass('grid_image'); 4335 $('.post-search-category').removeClass('inline-block').addClass('text-center'); 4336 $('.post-results-star').removeClass('pull-right').addClass('text-center tmargin'); 4337 4338 $('.grid-container.visible > hr:nth-of-type(3n)').addClass('gridBreak'); 4339 $('.search_result').addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid'); 4340 $('.grid_element').addClass('well xs-center-block'); 4341 4342 $('.col-md-3 + .clearfix, .col-md-4 + .clearfix, .clearfix + hr, .search_result hr + .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags, table.bmargin,.posted-by,.star_rating .the-rating-text').hide(); 4343 $('h2.h3.bold > a').addClass('gridA'); 4344 $('.info_section .module').removeClass('module fpad'); 4345 $('.grid-container').addClass('row'); 4346 document.body.classList.add('bdGridDone'); 4347 4348 });
4349 $(".views > i.listView").click(function () { 4350 $('.grid-container .clickToLoadMoreContainer').removeClass('gridBtnLazyLoad') 4351 4352 $('.clearfix.spacing').remove(); 4353 $('.grid-container').addClass('visible'); 4354 $('.img_section.ex-col-2').removeClass('col-xs-12 ex-col-2 bmargin').addClass('col-xs-2'); 4355 $('.img_section.ex-col-3').removeClass('col-sm-12 ex-col-3 bmargin').addClass('col-sm-3'); 4356 $('.img_section.ex-col-4').removeClass('col-sm-12 ex-col-4 bmargin').addClass('col-sm-4'); 4357 $('.mid_section.col-sm-12.ex-col-9').removeClass('col-sm-12').addClass('col-sm-9'); 4358 $('.mid_section.col-sm-12.ex-col-6').removeClass('col-sm-12').addClass('col-sm-6'); 4359 $('.mid_section.col-sm-12.ex-col-7').removeClass('col-sm-12 nohpad bpad ex-col-7 text-center').addClass('col-sm-7'); 4360 $('.mid_section.col-sm-12.ex-col-8').removeClass('col-sm-12 nohpad bpad').addClass('col-sm-8'); 4361 $('.mid_section .post-location-snippet.text-center').removeClass('text-center'); 4362 $('.mid_section.col-sm-7 .sm-block').removeClass('show'); 4363 $('.mid_section.col-sm-12.ex-col-12').removeClass('col-sm-12').addClass('col-sm-12'); 4364 $('.mid_section .row-fluid.bpad .col-sm-12').removeClass('col-sm-12 bmargin').addClass('col-md-8'); 4365 $('.mid_section .row-fluid.bpad a').removeClass('btn-block'); 4366 $('.mid_section .row-fluid.bpad').removeClass('text-center'); 4367 $('.info_section').removeClass('col-sm-12 nopad').addClass('col-sm-3 norpad'); 4368 $('.info_section > div.nomargin').addClass('module fpad'); 4369 $('.mid_section > div > p').removeClass('text-center'); 4370 $('.mid_section h2').removeClass('nomargin'); 4371 $('.mid_section a.h3').removeClass('text-center h4 tmargin'); 4372 $('.mid_section .view-details').addClass('rmargin'); 4373 $('.mid_section .contact-member').addClass('lmargin'); 4374 $('.member-search-full-name').addClass('rmargin'); 4375 $('.member-search-reviews').addClass('rmargin'); 4376 $('.member-search-location').addClass('rmargin rpad'); 4377 $('.member-search-company').removeClass('btn-block'); 4378 $('.view_phone_number').removeClass('center-block'); 4379 $('.search_result_image').removeClass('grid_image'); 4380 $('.ex-col-8 h2.h3.bold a.gridA').removeClass('bmargin'); 4381 $('.gridBreak').removeClass('gridBreak'); 4382 $('.post-search-category').removeClass('text-center').addClass('inline-block'); 4383 $('.post-results-star').removeClass('text-center tmargin').addClass(' pull-right'); 4384 $('.search_result').removeClass('col-md-4 col-sm-4 col-xs-12 grid').addClass('row-fluid'); 4385 $('.grid_element').removeClass('well'); 4386 $('.search_result .grid_element + .clearfix, .clearfix + hr, hr + .clearfix, .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags,.posted-by, table.bmargin, .star_rating span').show(); 4387 $('h2.h3.bold > a').removeClass('gridA'); 4388 $('.grid-container').removeClass('row'); 4389 if (map_opened == 1) { 4390 $('.grid-container').removeClass('hidden'); 4391 $('.map_container').hide(); 4392 map_opened = 0; 4393 } 4394 }); 4395 4396 $('.views > i.mapView').click(function () { 4397 $('.clearfix.spacing').remove(); 4398 $('.grid-container').addClass('hidden'); 4399 $('.map_container').show(); 4400 map_opened = 1; 4401 if(typeof initializeGoogleMaps === "function"){ 4402 initializeGoogleMaps(); 4403 } 4404 }); 4405 if (document.getElementById("google-pin") !== null) { 4406 $('.mapView').css('display', 'inline-block'); 4407 } 4408 $(document).ready(function () { 4409 if ($('.views .fa:visible').length == 1) { 4410 $('.views').hide(); 4411 } else { 4412 $('.views').show(); 4413 } 4414 }) 4415</script>
4415<script defer> 4416 var favoriteMode = ""; 4417 var apiEngine = ""; 4418 var api = 0; // Set API to use. Default is 0 4419 var activeMembershipLevelEnable = ""; 4420 var favoriteUserClickId = ""; 4421 var bookmarkLabel = `LIKE`; 4422 var bookmarkCountLabel = `LIKES`; 4423 var currentButton; 4424 4425 function favoriteOn(lookForAll = false) { 4426 $('.col-md-6.col-md-offset-3').addClass("col-md-12").removeClass('col-md-6 col-md-offset-3'); 4427 favoriteMode = 'search'; 4428 if ($('.sidebarenabled').data('sidebar')) { 4429 favoriteMode = 'detail'; 4430 if (!$('.sidebarenabled').siblings('.postItem').data('userid')) { 4431 $('.sidebarenabled').siblings('.listingData').remove(); 4432 } 4433 } 4434 favoriteUserClickId = $('.favorite').data('activeuser'); 4435 activeMembershipLevelEnable = $('.favorite').data('activefeatureenable'); 4436 4437// Sets the API URL to use based on API value 4438 if (api == 0) { 4439 apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap%20Theme%20-%20Function%20-%20Add%20to%20Favorites%20Button'; 4440 } else if (api == 1) { 4441 apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap Theme - Function - Add to Favorites Button'; 4442 } else { 4443 apiEngine = '/api/widget/json/get/Bootstrap Theme - Function - Add to Favorites Button'; 4444 } 4445 if (favoriteUserClickId) { 4446 var favoriteCounter = $('.favorite').siblings('.postItem'); 4447 if ($('.sidebarenabled').data('sidebar') || lookForAll) { 4448 4449 if (favoriteCounter.length == 1) { 4450 var favoriteMode = 'detail'; 4451 var favoriteDataType = $('.sidebarenabled').siblings('.postItem').data('datatype'); 4452 var favoriteDataId = $('.sidebarenabled').siblings('.postItem').data('dataid'); 4453 var favoritePostId = $('.sidebarenabled').siblings('.postItem').data('postid'); 4454 var favoriteUserId = []; 4455 $('.sidebarenabled').siblings('.postItem').each(function () { 4456 favoriteUserId.push($(this).data('userid')); 4457 }); 4458 } else { 4459 var favoriteMode = 'multiSidebar'; 4460 var favoriteDataType = []; 4461 var favoriteDataId = []; 4462 var favoritePostId = []; 4463 var favoriteUserId = []; 4464 $('.postItem').each(function () { 4465 favoriteDataType.push($(this).data('datatype')); 4466 favoriteDataId.push($(this).data('dataid')); 4467 favoritePostId.push($(this).data('postid')); 4468 favoriteUserId.push($(this).data('userid')); 4469 }); 4470 } 4471 } else { 4472 var favoriteMode = 'search'; 4473 var favoriteDataType = $('.favorite').siblings('.postItem').data('datatype'); 4474 var favoriteDataId = $('.favorite').siblings('.postItem').data('dataid'); 4475 if (lookForAll) { 4476 favoriteDataType = (favoriteDataType == 10) ? 11 : 10; 4477 } 4478 if (favoriteDataType != 10) { 4479 var favoritePostId = []; 4480 $('.postItem').each(function () { 4481 favoritePostId.push($(this).data('postid')); 4482 }); 4483 var favoriteUserId = $('.favorite').siblings('.postItem').data('userid'); 4484 } else { 4485 var favoriteUserId = []; 4486 $('.postItem').each(function () { 4487 favoriteUserId.push($(this).data('userid')); 4488 }); 4489 var favoritePostId = $('.favorite').siblings('.postItem').data('postid'); 4490 } 4491 } 4492 favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'check'); 4493 } 4494 } 4495 4496 $(document).on('click', '.favorite', function (e) { 4497 var favoriteUserClickId = $('.favorite').data('activeuser'); 4498 if (favoriteUserClickId && activeMembershipLevelEnable) { 4499 var thisButton = $(this); 4500 currentButton = thisButton; 4501 $(thisButton).attr("disabled", true); 4502 toogleBookmark(this); 4503 var favoriteUserClickId = $(this).data('activeuser'); 4504 var favoriteUserId = $(this).siblings('.postItem').data('userid'); 4505 var favoriteDataType = $(this).siblings('.postItem').data('datatype'); 4506 var favoriteDataId = $(this).siblings('.postItem').data('dataid'); 4507 var favoritePostId = $(this).siblings('.postItem').data('postid'); 4508 $(this).toggleClass('favoriteActive'); 4509 if ($(this).data('state') == 0) { 4510 favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'add'); 4511 $(this).data('state', 1); 4512 } else { 4513 favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'delete'); 4514 $(this).data('state', 0); 4515 } 4516 setTimeout(function () { 4517 $(thisButton).attr("disabled", false); 4518 }, 500); 4519 } 4520 });
4521 4522 function toogleBookmark(node) { 4523 var postId = $(node).data('postid'); 4524 var count = $(node).data('count'); 4525 var numberNode = $(node).find("#number-" + postId); 4526 var textLabelNode = $(node).find("#bookmark-content"); 4527 4528 if ($(node).hasClass('favoriteActive') !== false) { 4529 count--; 4530 } else { 4531 count++; 4532 } 4533 4534 $(node).data("count", count); 4535 4536 if (count > 0) { 4537 $(textLabelNode).html(bookmarkCountLabel); 4538 $(numberNode).html(' (' + count + ')'); 4539 } else { 4540 $(textLabelNode).html(bookmarkLabel); 4541 $(numberNode).html(''); 4542 } 4543 } 4544 4545 // Function that Adds, Deletes and Selects Favorites from Backend 4546 function favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, favoriteAction) { 4547 $.post(apiEngine, { 4548 favoriteUserClickId: favoriteUserClickId, 4549 favoriteUserId: favoriteUserId, 4550 favoriteDataType: favoriteDataType, 4551 favoriteDataId: favoriteDataId, 4552 favoritePostId: favoritePostId, 4553 favoriteMode: favoriteMode, 4554 favoriteAction: favoriteAction 4555 }, function (data) { 4556 if (api == 0) { 4557 var splitData = data.split('<split>'); 4558 data = splitData[1]; 4559 } 4560 4561 if(favoriteAction == "add" && data == "save_favorite_error"){ 4562 $(currentButton).trigger('click'); 4563 swal({ 4564 type:"warning", 4565 title: `Action Unavailable`, 4566 html: `Your account is currently not ACTIVE. <br> Only ACTIVE accounts can perform this action.`, 4567 }); 4568 } 4569 4570 if (data !== null && data !== 'null') { 4571 // Checks if the action 'check' was send 4572 if (favoriteAction == 'check' && favoriteMode != 'multiSidebar') { 4573 // Checks if we are in a Detail Page 4574 if (!$('.sidebarenabled').data('sidebar')) { 4575 // Checks if we are viewing a Member 4576 if (favoriteDataType != 10) { 4577 $.each(JSON.parse(data), function (index, value) { 4578 $('.postItem[data-postid="' + value + '"]').siblings('.favorite').addClass('favoriteActive'); 4579 $('.postItem[data-postid="' + value + '"]').siblings('.favorite').data('state', 1); 4580 }); 4581 } else { 4582 $.each(JSON.parse(data), function (index, value) { 4583 $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').addClass('favoriteActive'); 4584 $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').data('state', 1); 4585 }); 4586 } 4587 } else { 4588 // Checks if we are viewing a Member 4589 if (favoriteDataType != 10) { 4590 $.each(JSON.parse(data), function (index, value) { 4591 $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive'); 4592 $('.sidebarenabled').siblings('.favorite').data('state', 1); 4593 }); 4594 } else { 4595 $.each(JSON.parse(data), function (index, value) { 4596 $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive'); 4597 $('.sidebarenabled').siblings('.favorite').data('state', 1); 4598 }); 4599 } 4600 } 4601 } else if (favoriteAction == 'check' && favoriteMode == 'multiSidebar') { 4602 let totalDataCount = JSON.parse(data); 4603 if (totalDataCount) { 4604 totalDataCount = totalDataCount.length; 4605 for (let i = 0; i < totalDataCount; i++) { 4606 if (JSON.parse(data)[i].dataQuery != 0) { 4607 $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').addClass('favoriteActive'); 4608 $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').data('state', 1); 4609 } else { 4610 /* dataQuery == 0 means a MEMBER favorite (users_favorite dataType 10). 4611 Restrict the match to member-type spans: on profile pages the owner's 4612 post spans carry the same data-userid, and without this filter one 4613 member favorite marked every post button of that owner as saved. */ 4614 $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').addClass('favoriteActive'); 4615 $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').data('state', 1); 4616 } 4617 } 4618 } 4619 } 4620 } 4621 }); 4622 } 4623 4624 // Code that runs once to show all favored posts by a registered user 4625 4626 favoriteOn(); 4627 favoriteOn(true); 4628</script>
4628<script> 4629 const listView = document.getElementsByClassName('listView')[0]; 4630 const gridView = document.getElementsByClassName('gridView')[0]; 4631 const queryString = {"sized":0,"mysql_real_escape_string_runned":"1","form":"myform","formname":"member_login","dowiz":1,"save":1,"url_origin_pars":"\/blog"}; 4632 const profId = ``; 4633 const servId =null; 4634 const countryId = ``; 4635 const stateId = ``; 4636 const cityId = ``; 4637 const seed = ``; 4638 const profs = null; 4639 const btnPositionInside = document.querySelector('.grid-container .clickToLoadMoreContainer'); 4640 const btnPositionOutside = document.querySelector('.grid-container ~ .clickToLoadMoreContainer'); 4641 const amountToSum = 9; 4642 let currentAmountText = document.querySelector('.current__amount__js'); 4643 let totalAmount = document.querySelector('.total__js'); 4644 let btnClickMore = document.getElementsByClassName('clickToLoadMoreBtn')[0]; 4645 let btnClickMoreContainer = document.getElementsByClassName('clickToLoadMoreContainer')[0]; 4646 let flagFirstTime = true; 4647 let autoLoadResults = true; 4648 let lastElementPost ; 4649 if(typeof totalAmount !== "undefined" && totalAmount !== null){ 4650 let removeCommasAndDots = /[.,\s]/g; 4651 totalAmount = totalAmount.innerHTML.replace(removeCommasAndDots, ''); 4652 } 4653 /*event listener*/ 4654 if (typeof btnClickMore !== "undefined") { 4655 btnClickMore.addEventListener('click', function (event) { 4656 let viewIcons = document.querySelectorAll('.views i.gridView.activeView')[0]; 4657 let featureDCId = this.dataset.dc; 4658 let currentPage = this.dataset.page; 4659 let dataType = this.dataset.type; 4660 let levId = this.dataset.lvl; 4661 this.dataset.page = parseInt(currentPage) + 1; 4662 let url = `/wapi/widget`; 4663 let currentBTN = this;
4664 let currentHTML = this.innerHTML; 4665 lastElementPost = document.querySelectorAll('.search_result'); 4666 this.classList.add('loadingMore'); 4667 this.innerHTML = `<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading...`; 4668 let formData = new FormData(); 4669 autoLoadResults=false; 4670 setClassLoaded(); 4671 4672 formData.append('dc_id', featureDCId); 4673 formData.append('header_type', 'html'); 4674 formData.append('request_type', 'POST'); 4675 formData.append('currentPage', currentPage); 4676 formData.append('dataType', dataType); 4677 formData.append('queryString', JSON.stringify(queryString)); 4678 formData.append('profId', profId); 4679 formData.append('servId', JSON.stringify(servId)); 4680 formData.append('countryId', countryId); 4681 formData.append('stateId', stateId); 4682 formData.append('cityId', cityId); 4683 formData.append('levId', levId); 4684 formData.append('seed', seed); 4685 formData.append('profsPost', JSON.stringify(profs)); 4686 formData.append('widget_name', 'Add-On - Bootstrap Theme - Search - Lazy Loader'); 4687 let myInit = { 4688 method: 'POST', 4689 body: formData 4690 }; 4691 fetch(url, myInit) 4692 .then(function (response) { 4693 return response.text(); 4694 }).then(function (html) { 4695 let parser = new DOMParser(); 4696 4697 // Parse the text 4698 let result = parser.parseFromString(html, "text/html"); 4699 let newResultsHTML = result.getElementById('grabHTML__js').innerHTML; 4700 autoLoadResults =true; 4701 let amountOfClicks = result.getElementById('grabHTML__js').dataset.pages; 4702 4703 var countBefore = $('.grid-container .search_result').length; 4704 4705 if (typeof btnPositionOutside !== "undefined" && btnPositionOutside !== null) { 4706 $('.grid-container').append(newResultsHTML); 4707 } 4708 if (typeof btnPositionInside !== "undefined" && btnPositionInside !== null || btnPositionOutside === null && dataType == 13) { 4709 $('.clickToLoadMoreContainer').before(newResultsHTML); 4710 } 4711 4712 // Fade in only the actually new results 4713 var newCount = $('.grid-container .search_result').length - countBefore; 4714 var $allNew = $('.grid-container .search_result').slice(-newCount); 4715 $allNew.css({opacity: 0, transition: 'opacity 0.4s ease'}); 4716 4717 currentBTN.innerHTML = currentHTML; // default html 4718 currentBTN.classList.remove('loadingMore'); 4719 4720 if (typeof viewIcons !== 'undefined') { 4721 applyGridClasses($allNew); 4722 // Recalculate gridBreak classes and hide clearfix/hr between grid items 4723 $('.gridBreak').removeClass('gridBreak'); 4724 /* Row-break stride must follow the column class actually on the page, same rule as applyGridClasses */ 4725 var bdGridFourPerRow = $('.grid-container .search_result.col-md-3.grid').length > 0; 4726 $('.grid-container.visible > hr:nth-of-type(' + (bdGridFourPerRow ? '4n' : '3n') + ')').addClass('gridBreak'); 4727 $('.grid-container .col-md-4 + .clearfix:not(.search_result), .grid-container .col-md-3 + .clearfix:not(.search_result), .grid-container .clearfix + hr, .grid-container hr + .clearfix:not(.search_result)').hide(); 4728 if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) { 4729 setTimeout(function(){ 4730 $('.grid-container').masonry('appended', $allNew); 4731 setTimeout(function(){ $allNew.css('opacity', 1); }, 100); 4732 checkAllImagesLoaded(); 4733 }, 500); 4734 } else { 4735 setTimeout(function(){ $allNew.css('opacity', 1); }, 100); 4736 checkAllImagesLoaded(); 4737 } 4738 } else { 4739 setTimeout(function(){ $allNew.css('opacity', 1); }, 50); 4740 } 4741 if (typeof favoriteOn == 'function') { 4742 favoriteOn(); 4743 } 4744 if (typeof runRoyalSlider == 'function') { 4745 runRoyalSlider(); 4746 } 4747 4748 setAmountPages(currentBTN, amountOfClicks); 4749 if (typeof currentAmountText !== "undefined" && currentAmountText !== null) { 4750 let newAmount = parseInt(currentAmountText.innerHTML) + parseInt(amountToSum); 4751 if (newAmount >= parseInt(totalAmount)) { 4752 newAmount = document.querySelector('.total__js').innerHTML; 4753 } 4754 currentAmountText.innerHTML = newAmount.toString() 4755 } 4756 if (typeof google != "undefined" && google.hasOwnProperty('maps')){ 4757 if (typeof initializeMapSR == 'function') { 4758 initializeMapSR(); 4759 }else{ 4760 $('.mapView.activeView').click(); 4761 } 4762 } 4763 }).catch((error) => { 4764 console.error('Error:', error); 4765 }); 4766 }); 4767 // Check if insta_load_btn_behavior is set 4768 // Add a scroll event listener to the window 4769 window.addEventListener('scroll', function() { 4770 userStartedScrolling = true; // Mark that user has started scrolling 4771 listenToScroll(); 4772 }); 4773 4774 } 4775 if (typeof gridView !== "undefined" && typeof btnClickMoreContainer !== "undefined") { 4776 gridView.addEventListener('click', function () { 4777 gridView.classList.add('activeView'); 4778 if (gridView.classList.contains('activeView')) { 4779 btnClickMoreContainer.classList.add('gridBtnLazyLoad'); 4780 } else { 4781 btnClickMoreContainer.classList.remove('gridBtnLazyLoad'); 4782 } 4783 }); 4784 } 4785 if (typeof listView !== "undefined" && typeof btnClickMoreContainer !== "undefined") { 4786 4787 listView.addEventListener('click', function () { 4788 listView.classList.add('activeView'); 4789 if (listView.classList.contains('activeView')) { 4790 btnClickMoreContainer.classList.remove('gridBtnLazyLoad'); 4791 } else { 4792 btnClickMoreContainer.classList.add('gridBtnLazyLoad'); 4793 } 4794 }); 4795 } 4796 4797 function setAmountPages(btn, amount) { 4798 if (!("pages" in btn.dataset)) { 4799 btn.dataset.pages = parseInt(amount) - 1; // we do -1 because the one just clicked 4800 } else { 4801 btn.dataset.pages = parseInt(btn.dataset.pages) - 1; 4802 } 4803 if (btn.dataset.pages <= 0) { 4804 removeListenToScroll(); 4805 btn.remove(); 4806 } 4807 } 4808 4809 function setClassLoaded() { 4810 if (flagFirstTime) { 4811 flagFirstTime = false; 4812 let images = document.querySelectorAll('.grid-container img:not(.loaded)');
4813 images.forEach(image => { 4814 image.classList.add("loaded"); 4815 }); 4816 } 4817 } 4818 function applyGridClasses($el) { 4819 $el.find('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2'); 4820 $el.find('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3'); 4821 $el.find('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4'); 4822 $el.find('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9'); 4823 $el.find('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6'); 4824 $el.find('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad'); 4825 $el.find('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad'); 4826 $el.find('.mid_section .post-location-snippet').addClass('text-center'); 4827 $el.find('.mid_section.ex-col-7 .sm-block').addClass('show'); 4828 $el.find('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin'); 4829 $el.find('.mid_section .row-fluid.bpad a').addClass('btn-block'); 4830 $el.find('.mid_section .row-fluid.bpad').addClass('text-center'); 4831 $el.find('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad'); 4832 $el.find('.mid_section > div > p').addClass('text-center'); 4833 $el.find('.mid_section h2').addClass('nomargin'); 4834 $el.find('.mid_section a.h3').addClass('text-center h4 tmargin'); 4835 $el.find('.mid_section .view-details').removeClass('rmargin'); 4836 $el.find('.mid_section .contact-member').removeClass('lmargin'); 4837 $el.find('.member-search-full-name').removeClass('rmargin'); 4838 $el.find('.member-search-reviews').removeClass('rmargin'); 4839 $el.find('.member-search-location').removeClass('rmargin rpad'); 4840 $el.find('.member-search-company').addClass('btn-block'); 4841 $el.find('.view_phone_number').addClass('center-block'); 4842 $el.find('.phone_number').addClass('btn-block'); 4843 $el.find('.search_result_image').addClass('grid_image'); 4844 $el.find('.post-search-category').removeClass('inline-block').addClass('text-center'); 4845 $el.find('.post-results-star').removeClass('pull-right').addClass('text-center tmargin'); 4846 /* Mirror the column class the initial conversion (widget 2294) already applied - re-evaluating the conditions here can disagree and mix 3-per-row with 4-per-row; 2294 owns the decision (incl. the Web Page sidebar override) */ 4847 if ($('.grid-container .search_result.col-md-3.grid').not($el).length > 0) { 4848 $el.addClass('col-xs-12 col-sm-3 col-md-3 grid').removeClass('row-fluid'); 4849 } else { 4850 $el.addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid'); 4851 } 4852 $el.find('.grid_element').addClass('well xs-center-block'); 4853 $el.find('.col-md-3 + .clearfix, .col-md-4 + .clearfix, .clearfix + hr, hr + .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags, table.bmargin,.posted-by,.star_rating .the-rating-text').hide(); 4854 $el.find('h2.h3.bold > a').addClass('gridA'); 4855 $el.find('.info_section .module').removeClass('module fpad'); 4856 } 4857 4858 function refreshUI(){ 4859 if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) { 4860 $('.grid-container').masonry('layout'); 4861 } 4862 } 4863 function checkAllImagesLoaded() { 4864 let images = document.querySelectorAll('.grid-container img:not(.loaded)'); 4865 let countImg = 0; 4866 4867 if (images.length === 0) { 4868 refreshUI(); 4869 return; 4870 } 4871 4872 images.forEach(image => { 4873 image.classList.add("loaded"); 4874 4875 if (image.complete) { 4876 countImg++; 4877 if (countImg === images.length) { 4878 refreshUI(); 4879 } 4880 return; 4881 } 4882 4883 image.addEventListener('load', () => { 4884 countImg++; 4885 if (countImg === images.length) { 4886 refreshUI() 4887 } 4888 }); 4889 image.addEventListener('error', () => { 4890 countImg++; 4891 if (countImg === images.length) { 4892 refreshUI() 4893 } 4894 }); 4895 }); 4896 4897 } 4898 4899 // Variables 4900 let userStartedScrolling = false; // Flag to check if the user has started scrolling 4901 let wasPreviouslyInViewport = false; // To track if the button was in the viewport previously 4902 4903 4904 // Function to remove the scroll event listener 4905 function removeListenToScroll(){ 4906 window.removeEventListener('scroll', listenToScroll); 4907 } 4908 4909 // Function to check button visibility and load content 4910 function listenToScroll() { 4911 const isInViewport = isElementInViewport(btnClickMore); 4912 4913 // Check if the button has just entered the viewport 4914 const justEnteredViewport = !wasPreviouslyInViewport && isInViewport; 4915 4916 // If button just entered the viewport, user has started scrolling, and autoLoadResults is true 4917 if (userStartedScrolling && justEnteredViewport && autoLoadResults) { 4918 // Add a delay (2 seconds) before automatically clicking the button to load content 4919 setTimeout(function() { 4920 btnClickMore.click(); 4921 autoLoadResults = false; // Set the flag too false to avoid subsequent auto-clicks 4922 }, 2000); 4923 } 4924 4925 // If the button is out of the viewport, reset autoLoadResults 4926 if (!isInViewport) { 4927 autoLoadResults = true; 4928 } 4929 4930 // Update the previous viewport status for the next check 4931 wasPreviouslyInViewport = isInViewport; 4932 } 4933 4934 // Function to determine if a DOM element is in the viewport 4935 function isElementInViewport(el) { 4936 const rect = el.getBoundingClientRect(); 4937 return ( 4938 rect.top >= 0 && 4939 rect.left >= 0 && 4940 rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && 4941 rect.right <= (window.innerWidth || document.documentElement.clientWidth) 4942 ); 4943 } 4944 4945</script>
4945 <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 4945-4946
4945 4946 <script async src="https://www.googletagmanager.com/gtag/js?id=
4946G-HL8S7T25MG
vendor: 17 bytes, lines 4946-4947
4946"></script> 4947
4947<script> 4948
vendor: 154 bytes, lines 4948-4951
4948window.dataLayer = window.dataLayer || []; 4949 function gtag(){dataLayer.push(arguments);} 4950 gtag('js', new Date()); 4951 gtag('config', '
4951G-HL8S7T25MG
vendor: 9 bytes, lines 4951-4952
4951'); 4952
4952</script>
4952 4953 4954
4954<script type="text/javascript"> 4955 /* CT dissolved its county governments in 1960, so Google returns its 8 counties as 4956 colloquial_area instead of administrative_area_level_2 â they must never reach a 4957 city field. Google translates the component name to the site language, so the 4958 language-stable place_id is checked first and the word list only backs it up. */ 4959 if (typeof window.bdIsColloquialCounty !== 'function') { 4960 window.bdIsColloquialCounty = function (componentName, resultPlaceId) { 4961 var countyPlaceIds = [ 4962 'ChIJWRM2Nakw5okRoTCxHvz_5xw', /* Middlesex County, CT */ 4963 'ChIJmeTbuDYH6IkR3xgeNvszpgg', /* Fairfield County, CT */ 4964 'ChIJiT24cvvP54kR2fSPHkp0Akc', /* New Haven County, CT */ 4965 'ChIJvYe7N7eQ54kRL6nZaXRwPkI', /* Litchfield County, CT */ 4966 'ChIJtxC3p6qs54kRIvK-2bctar0', /* Hartford County, CT */ 4967 'ChIJj-lvZQli5okRGCuGRd6xKt0', /* Tolland County, CT */ 4968 'ChIJRWKqeLdi5okRLXWDlSEGeTY', /* Windham County, CT */ 4969 'ChIJwTIQbvVv5okRU5_gSJczUTQ' /* New London County, CT */ 4970 ]; 4971 4972 if (typeof resultPlaceId === 'string' && resultPlaceId !== '' 4973 && countyPlaceIds.indexOf(resultPlaceId) !== -1) { 4974 return true; 4975 } 4976 4977 if (typeof componentName !== 'string' || componentName === '') { 4978 return false; 4979 } 4980 4981 var name = componentName.toLowerCase(); 4982 4983 /* Only unambiguous county words â generic ones (region, district) would strip 4984 legitimate colloquial areas, and their languages already match on place_id. 4985 Word-boundary matched so names like "Countyline, OK" are left alone. */ 4986 var wordTokens = ['county', 'condado', 'comté', 'contea', 4987 'comitatul', 'hrabstwo', 'megye', 'konderria']; 4988 var isAlnum = function (ch) { 4989 return (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'); 4990 }; 4991 4992 for (var t = 0; t < wordTokens.length; t++) { 4993 var token = wordTokens[t]; 4994 var from = 0; 4995 while (true) { 4996 var at = name.indexOf(token, from); 4997 if (at === -1) { 4998 break; 4999 } 5000 var before = (at > 0) ? name.charAt(at - 1) : ' '; 5001 var after = ((at + token.length) < name.length) ? name.charAt(at + token.length) : ' '; 5002 if (!isAlnum(before) && !isAlnum(after)) { 5003 return true; 5004 } 5005 from = at + 1; 5006 } 5007 } 5008 5009 /* Non-latin scripts have no alphanumeric word boundary. */ 5010 var scriptTokens = ['каÑнÑи', 'کاؤÙÙ¹Û', 'à¤à¤¾à¤à¤à¤à¥', 'ì¹´ì´í°']; 5011 for (var s = 0; s < scriptTokens.length; s++) { 5012 if (name.indexOf(scriptTokens[s]) !== -1) { 5013 return true; 5014 } 5015 } 5016 5017 return false; 5018 }; 5019 } 5020 5021 // Try to load coordinates from sessionStorage on page load 5022 var vlat = 0; 5023 var vlon = 0; 5024 try { 5025 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 5026 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 5027 if (savedLat && savedLon) { 5028 vlat = parseFloat(savedLat); 5029 vlon = parseFloat(savedLon); 5030 } 5031 } catch(e) {} 5032 var isSubmit = false; 5033 var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests 5034 5035 // Function to save coordinates to sessionStorage 5036 function saveCoordinatesToSession(lat, lon) { 5037 try { 5038 sessionStorage.setItem('bd_geolocation_lat', lat.toString()); 5039 sessionStorage.setItem('bd_geolocation_lon', lon.toString()); 5040 } catch(e) {} 5041 } 5042 5043 // Function to get coordinates from sessionStorage if current ones are 0 5044 function getCoordinatesFromSession() { 5045 if (vlat === 0 && vlon === 0) { 5046 try { 5047 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 5048 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 5049 if (savedLat && savedLon) { 5050 vlat = parseFloat(savedLat); 5051 vlon = parseFloat(savedLon); 5052 return true; 5053 } 5054 } catch(e) {} 5055 } 5056 return false; 5057 } 5058 var cityTypes = [ 5059 'colloquial_area', 5060 'locality', 5061 'sublocality', 5062 'sublocality_level_1', 5063 'sublocality_level_2', 5064 'sublocality_level_3', 5065 'sublocality_level_4', 5066 'sublocality_level_5', 5067 'neighborhood', 5068 'ward', 5069 'postal_town' 5070 ]; 5071 5072 var postalTypes = [ 5073 'postal_code', 5074 'postal_code_prefix', 5075 'postal_code_suffix', 5076 'street_number', 5077 'premise', 5078 'subpremise', 5079 'route', 5080 'intersection', 5081 'street_address', 5082 'floor', 5083 'room', 5084 'post_box', 5085 'delivery_address' 5086 ]; 5087 5088 var isSubmitting = false; 5089 window.cachedSelectedOption = [{ 'typed_location': '' }]; 5090 window.isSubmittingMainSearch = false; 5091 5092 document.addEventListener('DOMContentLoaded', () => { 5093 let isSubmitting = false; // Add flag at the top level 5094 5095 setTimeout(()=>{ 5096 let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location'); 5097 if (typeof googleSuggestForm != "undefined") { 5098 for (let i = 0; i < googleSuggestForm.length; i++) { 5099 let closestForm = googleSuggestForm[i].closest('form'); 5100 if(typeof closestForm != "undefined" && closestForm != null){ 5101 closestForm.addEventListener('focusin', googleMapOnFormClick, false); 5102 5103 }else{ 5104 googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false); 5105 } 5106 googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false); 5107 } 5108 } 5109 },200);
5110 5111 $('.website-search button[type=submit]').click(async function (e) { 5112 e.preventDefault(); // Prevent the default submit action 5113 var nativeForm = $(this).closest('form')[0]; 5114 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 5115 return false; 5116 } 5117 await googleMapOnFormClick(); 5118 $(this).closest('form').submit(); 5119 }); 5120 }); 5121 window['gmapClick'] = false; 5122 function googleMapOnFormClick() { 5123 if(window.gmapClick){ 5124 return; 5125 } 5126 window.gmapClick = true; 5127 5128 return new Promise((resolve, reject) => { 5129 window.isSubmittingMainSearch = false; 5130 let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location'); 5131 let mapUri = "https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places®ion=US&callback=initializeG&language=en&key=AIzaSyDT2CxVG_qlDcPhWy236gStha_LKgcjWgQ"; 5132 5133 if (typeof google !== "undefined" && google.hasOwnProperty('maps')) { 5134 resolve('already loaded'); 5135 return; 5136 } 5137 5138 let loadMapScriptAsync = function (uri) { 5139 return new Promise((resolve, reject) => { 5140 let script = document.createElement('script'); 5141 script.type = 'text/javascript'; 5142 script.src = uri; 5143 script.async = true; 5144 script.onload = function () { 5145 resolve("ok"); 5146 }; 5147 script.onerror = function () { 5148 reject("Failed to load Google Maps script."); 5149 }; 5150 document.head.appendChild(script); 5151 }); 5152 }; 5153 5154 loadMapScriptAsync(mapUri) 5155 .then(() => { 5156 resolve(); 5157 }) 5158 .catch((error) => { 5159 console.error(error); 5160 reject(); 5161 }); 5162 5163 }); 5164 } 5165 5166 function initializeG() { 5167 var geocoder; 5168 //This piece of code will create an autosuggest for every input with the class "googleSuggest" 5169 var counter = 1; 5170 var inputsArray = []; 5171 window.cachedSelectedOption = [{ 'typed_location': '' }]; 5172 let mapExists = document.querySelectorAll('[id^="map"]').length > 0; 5173 const functionsToInvoke = { 5174 setJsMap: true, 5175 setJsMapOverview: mapExists, 5176 setJsMapSR: mapExists, 5177 setJsMapSidebar: mapExists 5178 }; 5179 if (window['maps_loaded'] !== true) { 5180 for (let func in functionsToInvoke) { 5181 if (typeof window[func] === 'function' && functionsToInvoke[func]) { 5182 window['maps_loaded'] = true; 5183 window[func](); 5184 } 5185 } 5186 } 5187 $(".googleSuggest").each(function () { 5188 //get the id from the input to be the unique identifier for each autocomplete 5189 var inputId = $(this).attr("id"); 5190 var inputElement = $(this); 5191 inputsArray[counter] = /** @type {HTMLInputElement} */( 5192 document.getElementById('' + inputId)); 5193 const mainCountry = ''; 5194 const inputOptions = { 5195 fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'], 5196 types: ['geocode'] 5197 } 5198 const language = "en"; 5199 5200 if (language) { 5201 inputOptions.language = language; 5202 } 5203 if (mainCountry) { 5204 inputOptions.componentRestrictions = {country: mainCountry}; 5205 inputOptions.region = mainCountry; 5206 } 5207 5208 var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions); 5209 google.maps.event.addListener(autocomplete, 'place_changed', function () { 5210 const place = autocomplete.getPlace(); 5211 5212 cachedSelectedOption = []; 5213 cachedSelectedOption.push(place); 5214 5215 cachedSelectedOption[0]['typed_location'] = inputElement.val(); 5216 /* if(cachedSelectedOption[0]['adr_address']){ 5217 let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, ''); 5218 cachedSelectedOption[0]['typed_location'] = cleanLocation; 5219 inputElement.val(cleanLocation); 5220 }*/ 5221 if (cachedSelectedOption[0]['address_components'] == undefined) { 5222 cachedSelectedOption = []; 5223 var emptyObj = { 5224 'typed_location': '' 5225 }; 5226 cachedSelectedOption.push(emptyObj); 5227 } 5228 }); 5229 //the code that prevents the submition when hit enter on a google location autocomplete item 5230 inputElement.keydown( function (e) { 5231 if (e.keyCode == 13) { 5232 var pacCounter = 0; 5233 //need to run a loop to check each pac container 5234 $('.pac-container').each(function () { 5235 5236 if ($(this).css("display") != "none") { 5237 pacCounter++; 5238 } 5239 }); 5240 if (pacCounter > 0) { 5241 e.preventDefault(); 5242 } 5243 } 5244 }); 5245 counter++; 5246 }); 5247 5248 //triggers every time a form with the id website-search is trigered 5249 $('.website-search').submit(function (e) { 5250 5251 var currentForm = $(this); 5252 var locationInput = $(this).find(".googleLocation"); 5253 var $submitButton = currentForm.find('input[type=submit], button[type=submit]'); 5254 5255 5256 if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') { 5257 5258 // Set submitting flag 5259 window.isSubmittingMainSearch = true; 5260 $submitButton.prop('disabled', true); 5261 5262 e.preventDefault(); 5263 //this variable has the main country of the site 5264 var form = currentForm; 5265 var urlGET = form.serialize(); 5266 var formActionUrl = form.attr("action"); 5267 var locationValue = locationInput.val(); 5268 5269 5270 5271 const mainCountry = ''; 5272 const inputOptions = { 5273 address:locationValue 5274 } 5275 const language = "en"; 5276 5277 if (language) { 5278 inputOptions.language = language; 5279 } 5280 if (mainCountry) { 5281 inputOptions.componentRestrictions = {country: mainCountry}; 5282 inputOptions.region = mainCountry; 5283 } 5284 5285 if (typeof cachedSelectedOption == 'undefined') { 5286 var emptyForm = { 5287 'typed_location': '' 5288 }; 5289 cachedSelectedOption.push(emptyForm); 5290 } 5291 5292 if (locationValue != cachedSelectedOption[0]['typed_location']) { 5293 geocoder = new google.maps.Geocoder(); 5294 geocoder.geocode(inputOptions, function (results, status) { 5295 5296 //if the google response of the geocoding was successful it will use that info to build the url for the new search 5297 if (status == google.maps.GeocoderStatus.OK) { 5298 parseInfoToSearch(results, urlGET, formActionUrl); 5299 5300 } else { 5301 var urlPath = formActionUrl; 5302 var redirect = urlPath + "?" + urlGET; 5303 //will redirect the page using the new url that has been constructed 5304 window.location.href = redirect; 5305 } 5306 }); 5307 5308 } else { 5309 parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl); 5310 } 5311 } 5312 }); 5313 5314 5315 //check if a map has been loaded 5316 if ($('#map-canvas').length > 0) { 5317 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>"; 5318 $('body').append(cssHideLogo); 5319 } else { 5320 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>"; 5321 $('body').append(cssHideLogo); 5322 } 5323
5324 if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") { 5325 populateSearchFields(); 5326 } 5327 5328 if($('.googleSuggest').val() == ""){ 5329 populateSearchFields(); 5330 } 5331 5332 var geocodeVisitorsSetting = '1'; 5333 var geocodingMethod = 'HTML5'; 5334 5335 //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 5336 5337 var vlon = ''; 5338 var vlat = ''; 5339 } 5340 5341 function switchPlaceID(placeId,urlGET, formActionUrl) { 5342 let request = { 5343 placeId: placeId, 5344 fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'], 5345 }; 5346 5347 let service = new google.maps.places.PlacesService(document.createElement('div')); 5348 service.getDetails(request, function(place, status) { 5349 if (status === google.maps.places.PlacesServiceStatus.OK) { 5350 let dataArray = []; 5351 dataArray.push(place); 5352 parseInfoToSearch(dataArray, urlGET, formActionUrl); 5353 } else { 5354 console.error('Place details request failed with status:', status); 5355 } 5356 }); 5357 } 5358 5359 function parseInfoToSearch(results, urlGET, formActionUrl) { 5360 var urlSearchParams = new URLSearchParams(urlGET); 5361 var parameters = {}; 5362 var addressComponentsArray = []; 5363 if (results.length > 1) { 5364 if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){ 5365 let tempResult = results[0]; 5366 results[0] = results[1]; 5367 results[1] = tempResult; 5368 } 5369 for (let i = 0; i < results.length; i++) { 5370 if (results[i].types[0] === 'natural_feature' || 5371 results[i].types[0] === 'airport' || 5372 results[i].types[0] === 'point_of_interest' || 5373 results[i].types[0] === 'establishment' || 5374 results[i].types[0] === 'political' || 5375 results[i].types[0] === 'park') { 5376 results.splice(i, 1); 5377 } 5378 } 5379 } 5380 var adComLength = results[0].address_components.length; 5381 5382 if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){ 5383 switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl); 5384 return; 5385 } 5386 sessionStorage.setItem("google_result",JSON.stringify(results)); 5387 5388 5389 var foundPostalType = results[0].types.find(type => postalTypes.includes(type)); 5390 var foundCityType = results[0].types.find(type => cityTypes.includes(type)); 5391 5392 //loop that will build the array with the address components and will get the short name of country and administrative area level 1 5393 for (var i = 0; i < adComLength; i++) { 5394 5395 if (results[0].address_components[i]['types'][0] == "country") { 5396 parameters.country_sn = results[0].address_components[i]['short_name']; 5397 } 5398 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 5399 parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name']; 5400 } 5401 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 5402 parameters.stateSearchLN = results[0].address_components[i]['long_name']; 5403 } 5404 if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") { 5405 /* short_name is what the service-area writer stores in 5406 service_areas.county_sn, so the search must send the same 5407 form or county matching breaks wherever short != long. */ 5408 parameters.county_sn = results[0].address_components[i]['short_name']; 5409 } 5410 if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) { 5411 var addrType = results[0].address_components[i]['types'][0]; 5412 var addrLong = results[0].address_components[i]['long_name']; 5413 /* CT counties come back as colloquial_area â keep them out of parameters.city. */ 5414 if (addrType !== 'colloquial_area' 5415 || !window.bdIsColloquialCounty(addrLong, results[0].place_id)) { 5416 parameters.city = addrLong; 5417 } 5418 } 5419 if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") { 5420 parameters.postal_code = results[0].address_components[i]['long_name']; 5421 } 5422 } 5423 5424 5425 // Filter out 'political' from result types - use more specific type when available 5426 // Same pattern as BD-directory-maps-typePolitical (PR #5642) 5427 if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') { 5428 results[0].types.splice(0, 1); 5429 } 5430 5431 // Pick the most specific type from results, skip "political" (too generic) 5432 parameters.location_type = results[0].types[0]; 5433 for (var t = 0; t < results[0].types.length; t++) { 5434 if (results[0].types[t] != 'political') { 5435 parameters.location_type = results[0].types[t]; 5436 break; 5437 } 5438 } 5439 5440 // When searching by city/locality, omit postal_code â Google returns 5441 // a partial zip prefix that doesn't match all members in the city 5442 if (parameters.location_type == 'locality' && parameters.postal_code) { 5443 delete parameters.postal_code; 5444 } 5445 5446 if (parameters.adm_lvl_1_sn != '') { 5447 parameters.stateSearch = parameters.adm_lvl_1_sn; 5448 } 5449 if (parameters.country_sn == "GB") { 5450 delete parameters.adm_lvl_1_sn; 5451 } 5452 5453 //will check if the response had the bounds parameters 5454 //if it had it will add the south west and north east parameters to the new url 5455 if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) { 5456 5457 if (results[0].geometry.hasOwnProperty('bounds')) { 5458 var boundsResponse = results[0].geometry.bounds; 5459 5460 } else { 5461 var boundsResponse = results[0].geometry.viewport; 5462 } 5463 parameters.swlat = boundsResponse.getSouthWest
5463().lat(); 5464 parameters.nelat = boundsResponse.getNorthEast().lat(); 5465 parameters.swlng = boundsResponse.getSouthWest().lng(); 5466 parameters.nelng = boundsResponse.getNorthEast().lng(); 5467 5468 //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 5469 } else { 5470 parameters.fsearch = "radius"; 5471 } 5472 var locationCenterResponse = results[0].geometry.location; 5473 parameters.lat = locationCenterResponse.lat(); 5474 parameters.lng = locationCenterResponse.lng(); 5475 parameters.faddress = results[0].formatted_address; 5476 parameters.place_id = results[0].place_id; 5477 var formatParameters = $.param(parameters); 5478 urlGET = urlGET + "&" + formatParameters; 5479 var urlPath = formActionUrl; 5480 var redirect = urlPath + "?" + urlGET; 5481 //will redirect the page using the new url that has been constructed 5482 window.location.href = redirect; 5483 } 5484 function populateSearchFields() { 5485 var prePopulateLocationSetting = '1'; 5486 var geolocationMethod = 'HTML5'; 5487 5488 // If geolocation is in progress and we don't have coordinates yet, wait a bit 5489 if (isGettingLocation && (vlat === 0 || vlon === 0)) { 5490 var waitStartTime = performance.now(); 5491 var waitInterval = setInterval(function() { 5492 if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) { 5493 clearInterval(waitInterval); 5494 // Retry after a short delay to ensure coordinates are set 5495 setTimeout(function() { 5496 populateSearchFields(); 5497 }, 100); 5498 } else if ((performance.now() - waitStartTime) > 10000) { 5499 // Timeout after 10 seconds - try sessionStorage 5500 clearInterval(waitInterval); 5501 if (getCoordinatesFromSession()) { 5502 setTimeout(function() { 5503 populateSearchFields(); 5504 }, 100); 5505 } 5506 } 5507 }, 200); 5508 return; 5509 } 5510 5511 // If coordinates are 0, try to get from sessionStorage 5512 if (vlat === 0 || vlon === 0) { 5513 getCoordinatesFromSession(); 5514 } 5515 5516 // Validate coordinates first 5517 var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180); 5518 5519 if (!hasValidCoordinates) { 5520 return; 5521 } 5522 5523 //if set to one will get the lat and lng to do reverse geocoding 5524 if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) { 5525 var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon)); 5526 var visitorGeocoder = new google.maps.Geocoder(); 5527 var formattedAddress = []; 5528 var preFormattedStructure = { 5529 "locality": "long_name", 5530 "administrative_area_level_2": "long_name", 5531 "administrative_area_level_1": "long_name", 5532 "country": "long_name" 5533 }; 5534 visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) { 5535 //if the google response of the geocoding was successful it will use that info to build the url for the new search 5536 if (status == google.maps.GeocoderStatus.OK) { 5537 window.cachedSelectedOption = results; 5538 $.each(preFormattedStructure, function (findex, fvalue) { 5539 $.each(results[0].address_components, function (rindex, rvalue) { 5540 if (rvalue.types[0] == findex) { 5541 formattedAddress.push(rvalue.long_name); 5542 } 5543 }); 5544 }); 5545 $('.googleSuggest').each(function () { 5546 if ($(this).val() == '') { 5547 if (formattedAddress.length > 0) { 5548 $(this).val(formattedAddress.join(', ')); 5549 clearContent($(this)); 5550 } 5551 } 5552 }); 5553 } else { 5554 $('.googleSuggest').each(function () { 5555 $(this).val(''); 5556 }); 5557 } 5558 }); 5559 } 5560 } 5561 function showError(error) { 5562 switch (error.code) { 5563 case error.PERMISSION_DENIED: 5564 case 1: // PERMISSION_DENIED 5565 $('.fill_location.clicked').popover({ 5566 content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`, 5567 container: 'body' 5568 }); 5569 $('.fill_location.clicked').popover('toggle'); 5570 setTimeout(function () { 5571 $('.fill_location.clicked').popover('hide'); 5572 $('.fill_location.clicked').removeClass('clicked'); 5573 }, 4000); 5574 break; 5575 case error.POSITION_UNAVAILABLE: 5576 case 2: // POSITION_UNAVAILABLE 5577 $('.fill_location.clicked').popover({ 5578 content: `Location information is unavailable. Please check your device location settings.`, 5579 container: 'body' 5580 }); 5581 $('.fill_location.clicked').popover('toggle'); 5582 setTimeout(function () { 5583 $('.fill_location.clicked').popover('hide'); 5584 $('.fill_location.clicked').removeClass('clicked'); 5585 }, 4000); 5586 break; 5587 case error.TIMEOUT: 5588 case 3: // TIMEOUT 5589 $('.fill_location.clicked').popover({ 5590 content: `Location request timed out. Please ensure location services are enabled and try again.`, 5591 container: 'body' 5592 }); 5593 $('.fill_location.clicked').popover('toggle'); 5594 setTimeout(function () { 5595 $('.fill_location.clicked').popover('hide'); 5596 $('.fill_location.clicked').removeClass('clicked'); 5597 }, 4000); 5598 break; 5599 case error.UNKNOWN_ERROR: 5600 default: 5601 $('.fill_location.clicked').popover({ 5602 content: `An error occurred while getting your location. Please try again.`, 5603 container: 'body' 5604 }); 5605 $('.fill_location.clicked').popover('toggle'); 5606 setTimeout(function () { 5607 $('.fill_location.clicked').popover('hide'); 5608 $('.fill_location.clicked').removeClass('clicked'); 5609 }, 4000); 5610 break; 5611 } 5612 } 5613 if (navigator.geolocation) { 5614 if ($(".googleSuggest")[0]) { 5615 $(document).on('click', '.fill_location', function getCXPosition() { 5616 // Prevent multiple simultaneous geolocation requests 5617 if (isGettingLocation) { 5618 return; 5619 } 5620 5621 var $button = $(this); 5622 $button.addClass('clicked'); 5623 var startPos; 5624 5625 // Set flag to prevent concurrent requests 5626 isGettingLocation = true; 5627 5628 // Function to actually get the position 5629 var attemptGetPosition = function() { 5630 // Try with shorter timeout first for faster response 5631 var geoOptions = {
5632 enableHighAccuracy: false, // Use false for faster response 5633 timeout: 8000, // 8 second timeout (reduced for faster failure) 5634 maximumAge: 300000 // Accept cached position up to 5 minutes old 5635 }; 5636 5637 navigator.geolocation.getCurrentPosition(function (position) { 5638 startPos = position; 5639 vlat = startPos.coords.latitude; 5640 vlon = startPos.coords.longitude; 5641 5642 // Validate coordinates before proceeding 5643 if (!vlat || !vlon || vlat === 0 || vlon === 0) { 5644 isGettingLocation = false; 5645 $button.removeClass('clicked'); 5646 return; 5647 } 5648 5649 // Save coordinates to sessionStorage 5650 saveCoordinatesToSession(vlat, vlon);
5651 5652 $.get("/api/data/html/get/data_widgets/widget_name", { 5653 "vlat": vlat, 5654 "vlon": vlon, 5655 "name": "Website - Save Coordinates Session" 5656 }); 5657 5658 populateSearchFields(); 5659 5660 // Clear flag 5661 isGettingLocation = false; 5662 $button.removeClass('clicked'); 5663 }, function(error) { 5664 // Clear flag on error 5665 isGettingLocation = false; 5666 $button.removeClass('clicked'); 5667 5668 // For timeout errors, try sessionStorage as fallback 5669 if (error.code === 3) { 5670 if (getCoordinatesFromSession()) { 5671 // Use cached coordinates 5672 $.get("/api/data/html/get/data_widgets/widget_name", { 5673 "vlat": vlat, 5674 "vlon": vlon, 5675 "name": "Website - Save Coordinates Session" 5676 }); 5677 5678 populateSearchFields(); 5679 5680 // Clear flag 5681 isGettingLocation = false; 5682 $button.removeClass('clicked'); 5683 } else { 5684 $button.popover({ 5685 content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`, 5686 container: 'body' 5687 }); 5688 $button.popover('show'); 5689 setTimeout(function() { 5690 $button.popover('hide'); 5691 }, 5000); 5692 } 5693 } else { 5694 showError(error); 5695 } 5696 }, geoOptions); 5697 }; 5698 5699 // Check if geolocation permission is already denied (but don't block if it's prompt) 5700 if (navigator.permissions && navigator.permissions.query) { 5701 navigator.permissions.query({name: 'geolocation'}).then(function(result) { 5702 if (result.state === 'denied') { 5703 isGettingLocation = false; 5704 $button.removeClass('clicked'); 5705 showError({code: 1, message: 'Permission denied'}); 5706 return; 5707 } else { 5708 // Permission is granted or prompt - proceed with geolocation 5709 attemptGetPosition(); 5710 } 5711 }).catch(function(err) { 5712 // If permission API not supported, proceed anyway 5713 attemptGetPosition(); 5714 }); 5715 } else { 5716 // Permission API not available, proceed with geolocation 5717 attemptGetPosition(); 5718 } 5719 }) 5720 } 5721 } else { 5722 console.log('Geolocation is not supported for this Browser/OS version yet.'); 5723 } 5724 function getUrlParameter(sParam) { 5725 var sPageURL = window.location.search.substring(1); 5726 var sURLVariables = sPageURL.split('&'); 5727 5728 for (var i = 0; i < sURLVariables.length; i++) { 5729 var sParameterName = sURLVariables[i].split('='); 5730 5731 if (sParameterName[0] == sParam) { 5732 return decodeURIComponent(sParameterName[1]); 5733 } 5734 } 5735 } 5736 </script>
5736 5737
5737<script> 5738 // switchClass() is jQuery UI (Effects), which is no longer loaded on every page. 5739 // removeClass().addClass() is the same class swap, applied immediately instead of 5740 // after animateClass()'s queued 400ms default. 5741 $(document).ready(function(){ 5742 $('.navbar-header .navbar-toggle.main_menu').click(function(){ 5743 $('.mobile-main-menu').toggleClass('opened'); 5744 }); 5745 $('.mobile-main-menu .sidebar-nav').find('li').each(function(){ 5746 $(this).addClass('hasChildren'); 5747 if ($(this).children('ul').length > 0){ 5748 $(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>'); 5749 $(this).find('a').after('<div class="clearfix"></div>'); 5750 $(this).find('span').after('<div class="clearfix"></div>'); 5751 } 5752 $(this).append('<div class="clearfix"></div>'); 5753 }); 5754 5755 $('.mobile-main-menu .sidebar-nav li i').click(function(){ 5756 if ($(this).parent().children('ul').length > 0){ 5757 $(this).parent().toggleClass('sub_open'); 5758 } 5759 if ($(this).hasClass('fa-plus')){ 5760 $(this).removeClass('fa-plus').addClass('fa-minus'); 5761 } else { 5762 $(this).removeClass('fa-minus').addClass('fa-plus'); 5763 } 5764 }); 5765 }) 5766 5767 if ($(window).width() > 740 && $(window).width() < 1100) { 5768 5769 $(document).ready(function(){ 5770 $('.tablet-menu .tablet-menu-ul').find('li').each(function(){ 5771 5772 if ($(this).children('ul').length > 0){ 5773 $(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>'); 5774 $(this).find('a').after('<div class="clearfix"></div>'); 5775 var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");; 5776 $(this).children('a').html(this_link); 5777 $(this).find('span').after('<div class="clearfix"></div>'); 5778 } 5779 $(this).append('<div class="clearfix"></div>'); 5780 }); 5781 5782 $('.tablet-menu .tablet-menu-ul li i').click(function(){ 5783 5784 if ($(this).parent().children('ul').length > 0){ 5785 $(this).parent().toggleClass('sub_open'); 5786 5787 if ($(this).siblings( "ul" ).hasClass('tablet-block')){ 5788 $(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none'); 5789 } else { 5790 $(this).siblings( "ul" ).addClass( "tablet-block" ); 5791 5792 if ($(this).siblings( "ul" ).hasClass('tablet-none')){ 5793 $(this).siblings( "ul" ).removeClass('tablet-none') 5794 } 5795 5796 if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) { 5797 $(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none'); 5798 $(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus'); 5799 } 5800 5801 if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) { 5802 $(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 5803 $(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 5804 } 5805 5806 if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) { 5807 $(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 5808 $(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 5809 } 5810 5811 } 5812 5813 } 5814 5815 if ($(this).hasClass('fa-plus')){ 5816 $(this).removeClass('fa-plus').addClass('fa-minus'); 5817 } else { 5818 $(this).removeClass('fa-minus').addClass('fa-plus'); 5819 } 5820 }); 5821 }) 5822 } 5823 // Append unique ID attribute for mobile main menu links 5824 $('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" }); 5825</script>
5825 5826
5827<script> 5828/* Keeps the announcement bar flush with the navbar: this widget's CSS emits static 50px 5829 offsets that are blind to the hide-menu settings, so a hidden or fixed compact-logo 5830 navbar leaves a gap or an overlap. Measure the real navbar state and own the offset. */ 5831(function () { 5832 function alignAnnouncementToNavbar() { 5833 var ann = document.querySelector('.announcement-bar'); 5834 if (!ann) { return; } 5835 /* above the widget's own offset breakpoints: restore stylesheet values */ 5836 if (window.innerWidth > 1100) { 5837 ann.style.removeProperty('margin-top'); 5838 ann.style.removeProperty('top'); 5839 return; 5840 } 5841 var navbar = document.querySelector('.header nav.navbar.navbar-default'); 5842 var navStyle = navbar ? window.getComputedStyle(navbar) : null; 5843 /* navbar hidden: the 50px offsets have nothing to clear, sit flush */ 5844 if (!navbar || navStyle.display === 'none') { 5845 ann.style.setProperty('margin-top', '0px', 'important'); 5846 ann.style.setProperty('top', '0px', 'important'); 5847 return; 5848 } 5849 if (window.innerWidth >= 768) { return; } 5850 /* only act while the navbar is pinned and showing the compact logo */ 5851 if (navStyle.position !== 'fixed') { return; } 5852 var logo = navbar.querySelector('.mobile_website_logo'); 5853 if (!logo || window.getComputedStyle(logo).display === 'none') { return; } 5854 var navRect = navbar.getBoundingClientRect(); 5855 var annRect = ann.getBoundingClientRect(); 5856 var delta = Math.round(navRect.bottom - annRect.top); /* >0 overlap, <0 gap */ 5857 if (delta === 0) { return; } 5858 var currentMt = parseFloat(window.getComputedStyle(ann).marginTop) || 0; 5859 var nextMt = currentMt + delta; 5860 /* a transient element above the bar during load can inflate the measure; a 5861 negative margin would pull the bar behind the navbar, so clamp at 0 */ 5862 if (nextMt < 0) { nextMt = 0; } 5863 /* !important to beat the widget's "margin-top: 50px !important" rule */ 5864 ann.style.setProperty('margin-top', nextMt + 'px', 'important'); 5865 } 5866 5867 function run() { 5868 alignAnnouncementToNavbar(); 5869 /* re-run after late layout shifts (fonts, async embeds) */ 5870 window.setTimeout(alignAnnouncementToNavbar, 250); 5871 window.setTimeout(alignAnnouncementToNavbar, 1200); 5872 } 5873 5874 if (document.readyState === 'loading') { 5875 document.addEventListener('DOMContentLoaded', run); 5876 } else { 5877 run(); 5878 } 5879 window.addEventListener('load', alignAnnouncementToNavbar); 5880 var resizeTimer; 5881 window.addEventListener('resize', function () { 5882 window.clearTimeout(resizeTimer); 5883 resizeTimer = window.setTimeout(alignAnnouncementToNavbar, 150); 5884 }); 5885})(); 5886</script>
vendor: 2 bytes, line 5886
5886
5887<script> 5888 </script>
5888<script> 5889 $('.view_phone_number_header').click(function(event){ 5890 event.preventDefault(); 5891 $(this).hide(); 5892 $('.view_phone_number').hide(); 5893 $('.phone_number_header').css("display","block"); 5894 5895 }) 5896</script>
5896<script> 5897function validate() { 5898 var reason = ''; 5899 form = document.sidebarform; 5900 if (form.answerq.value!=9) { 5901 reason=reason+'- Answer the security question\n'; 5902 } 5903 if (reason != '') { 5904 reason = 'Please correct the following errors\n' + reason; 5905 alert(reason); 5906 return false; 5907 } else { 5908 return true; 5909 } 5910 5911} 5912</script>
5912<script> 5913 $('#captchaContainer').removeClass('form-control '); 5914 $(".website_url_field").keyup(function(){ 5915 var fieldName = $(this).attr('name'); 5916 $(this).val($(this).val().replace(/\s+/g, '')); 5917 $('#myform').formValidation('revalidateField', fieldName); 5918 }); 5919</script>
vendor: 2 bytes, line 5919
5919
5920<script> 5921 var currentSubmitButton = null; 5922 window.newestRequestId = 0; 5923 var localizedMainCountry = ''; 5924 5925 async function setJsMap() { 5926 let urlWapi = '/wapi/widget?widget_name=Bootstrap%20Theme%20-%20Google%20Maps%20-%20Get%20Center%20Coordinates&request_type=GET&header_type=json&action=getCenterMap'; 5927 var localizedMainCoutry = ''; 5928 if ($('#location_status').length == 0) { 5929 var currentLocationState = "no_location"; 5930 } else { 5931 var currentLocationState = $('#location_status').data('state'); 5932 } 5933 if (currentLocationState != "no_location") { 5934 //the maping array to know what address component types are link to which inputs on the contact details form 5935 var inputsArray = { 5936 "country_sn": { 5937 "country": "short_name" 5938 }, 5939 "adm_lvl_1_sn": { 5940 "administrative_area_level_1": "short_name" 5941 }, 5942 "county_sn": { 5943 "administrative_area_level_2": "short_name" 5944 }, 5945 "city":{ 5946 "locality": "short_name" 5947 } 5948 }; 5949 var geoSC = new google.maps.Geocoder(); 5950 var markerSC = ''; 5951 var mapSC = ''; 5952 5953 var vlonLead = ''; 5954 var vlatLead = ''; 5955 var userLat = ''; 5956 var userLon = ''; 5957 var geocodeVisitorsSetting = '1'; 5958 var geocodingMethod = 'HTML5'; 5959 5960 if (vlatLead == "" && userLat != "") { 5961 vlatLead = userLat; 5962 } 5963 if (vlonLead == "" && userLon != "") { 5964 vlonLead = userLon; 5965 } 5966 if (vlatLead == "" || vlonLead == "") { 5967 5968 await getCenterMap(urlWapi) 5969 .then(response => response.json()) 5970 .then(data => { 5971 if (data.lat) { 5972 vlatLead = userLat = uLat = data.lat; 5973 } 5974 if (data.lon) { 5975 vlonLead = userLon = uLng = data.lon; 5976 } 5977 }); 5978 5979 5980 } 5981 if (currentLocationState == 'default' || currentLocationState == 'only_map') { 5982 //important variables 5983 5984 //function that initializes the Map 5985 const mapDiv = document.getElementById("map-canvas-contact-sidebar"); 5986 function initializeMap() { 5987 5988 if (initializeMap.alreadyUsed) { 5989 return false; 5990 } 5991 initializeMap.alreadyUsed = true; 5992 var iconImage = '/images/marker.png'; 5993 var mapOptions = { 5994 controlSize: 26, 5995 mapTypeControl: false, 5996 streetViewControl: false, 5997 scrollwheel: false 5998 } 5999 mapSC = new google.maps.Map(mapDiv, mapOptions); 6000 var styles = [{"featureType":"landscape","stylers":[{"hue":"#FFBB00"},{"saturation":43.400000000000006},{"lightness":37.599999999999994},{"gamma":1}]},{"featureType":"road.highway","stylers":[{"hue":"#FFC200"},{"saturation":-61.8},{"lightness":45.599999999999994},{"gamma":1}]},{"featureType":"road.arterial","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":51.19999999999999},{"gamma":1}]},{"featureType":"road.local","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":52},{"gamma":1}]},{"featureType":"water","stylers":[{"hue":"#0078FF"},{"saturation":-13.200000000000003},{"lightness":2.4000000000000057},{"gamma":1}]},{"featureType":"poi","stylers":[{"hue":"#00FF6A"},{"saturation":-1.0989010989011234},{"lightness":11.200000000000017},{"gamma":1}]}]; 6001 var styledMap = new google.maps.StyledMapType(styles,{name: "Styled Map"}); 6002 mapSC.mapTypes.set('map_style', styledMap); 6003 mapSC.setMapTypeId('map_style'); 6004 6005 //if uLat and uLong are empty load the map in the center of the world 6006 if (userLat == "" || userLon == "") { 6007 userLat = 0; 6008 userLon = 0; 6009 } 6010 var markerInitLatLng2 = new google.maps.LatLng(parseFloat(userLat), parseFloat(userL
6010on)); 6011 6012 markerSC = new google.maps.Marker({ 6013 draggable: true, 6014 position: markerInitLatLng2, 6015 map: mapSC, 6016 title: "Your current location", 6017 icon: iconImage 6018 }); 6019 //if no location saved zoom will be 2 6020 var mapZoom = 15; 6021 if (userLat == "" || userLon == "") { 6022 mapZoom = 4; 6023 } 6024 6025 if (currentLocationState == 'default') { 6026 var input = /** @type {HTMLInputElement} */( 6027 document.getElementById('pac-input')) 6028 var inputOptions = { 6029 fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'], 6030 types: ['(regions)'] 6031 } 6032 const language = "en"; 6033 if (language) { 6034 inputOptions.language = language; 6035 } 6036 if (localizedMainCoutry) { 6037 inputOptions.componentRestrictions = {country: localizedMainCoutry}; 6038 inputOptions.region = localizedMainCoutry; 6039 } 6040 var autocomplete = new google.maps.places.Autocomplete(input, inputOptions); 6041 autocomplete.bindTo('bounds', mapSC); 6042 6043 //bind the change of the autocomplete to the make search function 6044 //google.maps.event.addListener(autocomplete, 'place_changed', makeSearch); 6045 google.maps.event.addListener(autocomplete, 'place_changed', (e) => { 6046 if (input.value != '') { 6047 const place = autocomplete.getPlace(); 6048 makeSearch(place) 6049 } else { 6050 swal(`Error`, `You can not list an empty location!`, "error"); 6051 } 6052 }); 6053 //when hitting enter on the location search field prevent the submition of the form 6054 6055 input.addEventListener("keydown", (e) => { 6056 if (e.key === "Enter") { 6057 e.preventDefault(); 6058 } 6059 }); 6060 } 6061 mapSC.setCenter(new google.maps.LatLng(vlatLead, vlonLead)); 6062 mapSC.setZoom(mapZoom); 6063 //load marker on the map 6064 markerSC.setMap(mapSC); 6065 6066 6067 // check for Geolocation support 6068 if (geocodeVisitorsSetting == 1 && geocodingMethod == "HTML5" && vlatLead != userLat && vlonLead != userLon & uLat != 0 && uLng != 0) { 6069 let markerMemberInitLatLng = new google.maps.LatLng(parseFloat(uLat), parseFloat(uLng)) 6070 markerSC.setPosition(markerMemberInitLatLng); 6071 mapSC.setCenter(markerMemberInitLatLng); 6072 // makeSearch(vlatLead, vlonLead); 6073 let latlng = { 6074 lat: parseFloat(markerSC.position.lat()), 6075 lng: parseFloat(markerSC.position.lng()), 6076 }; 6077 fillDataByGeoCode(latlng, 'latLng'); 6078 } else { 6079 markerSC.setPosition(new google.maps.LatLng(vlatLead, vlonLead)); 6080 } 6081 6082 //capture the draggin marker event and update the lat and lng of the member 6083 google.maps.event.addListener(markerSC, 'dragend', function (event) { 6084 let markerCoordinates = markerSC.getPosition(); 6085 userLat = uLat = markerSC.getPosition().lat(); 6086 userLng = uLng = markerSC.getPosition().lng(); 6087 fillDataByGeoCode(markerCoordinates, 'latLng'); 6088 });//END dragend event listener 6089 }//END initialize function 6090 initializeMap();
6091 // google.maps.event.addDomListener(window, 'load', initializeMap); 6092 //END if (currentLocationState == 'default' || currentLocationState == 'only_map') 6093 } else if (currentLocationState == 'only_input') { 6094 function initializeInput() { 6095 6096 const inputOptions = { 6097 fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'], 6098 types: ['(regions)'], 6099 } 6100 const language = "en"; 6101 6102 if (language) { 6103 inputOptions.language = language; 6104 } 6105 if (localizedMainCoutry) { 6106 inputOptions.componentRestrictions = {country: localizedMainCoutry}; 6107 inputOptions.region = localizedMainCoutry; 6108 } 6109 6110 6111 var change = document.getElementsByClassName("google-writen-location"); 6112 var searchInput = {}; 6113 var autocomplete = {}; 6114 var cachedSelectedOption = {}; 6115 for (var i = 0; i < change.length; i++) { 6116 6117 //the init of the search locations input 6118 autocomplete[i] = new google.maps.places.Autocomplete(change[i], inputOptions); 6119 autocomplete[i].inputId = change[i].id; 6120 6121 var currentLocationValue; 6122 $(change[i]).keyup(function () { 6123 $('input[name="lat"]').val(''); 6124 $('input[name="lng"]').val(''); 6125 $('input[name="swlat"]').val(''); 6126 $('input[name="swlng"]').val(''); 6127 $('input[name="nelat"]').val(''); 6128 $('input[name="nelng"]').val(''); 6129 $('input[name="location_type"]').val(''); 6130 }); 6131 $(change[i]).blur(function () { 6132 var thisField = $(this); 6133 let thisVal = this.value; 6134 setTimeout(function () { 6135 if (thisField.parents('div').find('[name="lat"]').val() == "") { 6136 fillDataByGeoCode(thisVal); 6137 } 6138 }, 300); 6139 6140 }); 6141 6142 6143 //bind the change of the autocomplete to the make search function 6144 google.maps.event.addListener(autocomplete[i], 'place_changed', function () { 6145 let place= this.getPlace(); 6146 makeSearch(place); 6147 }); 6148 6149 //when hitting enter on the location search field prevent the submition of the form 6150 $('.google-writen-location:eq(' + i + ')').keydown(function (e) { 6151 if (e.keyCode == 13) { 6152 e.preventDefault(); 6153 } 6154 }); 6155 } 6156 }//END initialize function 6157 initializeInput(); 6158 // google.maps.event.addDomListener(window, 'load', initializeInput); 6159 } 6160 6161 //this is the function that takes a google response and fills the input location fields basing itself in the maping array 6162 function fillAddressFields(results) { 6163 var coordinatesCenter = results.geometry.location; 6164 var boundsResponse = ""; 6165 $('input[name="lead_location"]').val(results['formatted_address']); 6166 if(results['adr_address']){ 6167 var faddress = results['adr_address'].replace(/<[^>]+>/g, ''); 6168 $('input[name="faddress"]').val(faddress); 6169 } 6170 6171 if (results.geometry.hasOwnProperty('bounds') || results.geometry.hasOwnProperty('viewport')) { 6172 6173 if (results.geometry.hasOwnProperty('bounds')) { 6174 var boundsResponse = results.geometry.bounds; 6175 6176 6177 } else { 6178 var boundsResponse = results.geometry.viewport; 6179 } 6180 } 6181 if (boundsResponse != "") { 6182 const location = results.geometry.location; 6183 const viewport = results.geometry.viewport; 6184 6185 if (location) { 6186 var lat = typeof location.lat === 'function' ? location.lat() : location.lat; 6187 var lng = typeof location.lng === 'function' ? location.lng() : location.lng; 6188 6189 $('input[name="lat"]').val(lat); 6190 $('input[name="lng"]').val(lng); 6191 } 6192 6193 if (viewport) { 6194 const sw = typeof viewport.getSouthWest === 'function' ? viewport.getSouthWest
6194() : viewport.sw; 6195 const ne = typeof viewport.getNorthEast === 'function' ? viewport.getNorthEast() : viewport.ne; 6196 6197 var swlat = typeof sw.lat === 'function' ? sw.lat() : sw.lat; 6198 var nelat = typeof ne.lat === 'function' ? ne.lat() : ne.lat; 6199 var swlng = typeof sw.lng === 'function' ? sw.lng() : sw.lng; 6200 var nelng = typeof ne.lng === 'function' ? ne.lng() : ne.lng; 6201 6202 //update sw 6203 $('input[name="swlat"]').val(swlat); 6204 $('input[name="swlng"]').val(swlng); 6205 //update ne 6206 $('input[name="nelat"]').val(nelat); 6207 $('input[name="nelng"]').val(nelng); 6208 } 6209 } 6210 //update location type - filter out political types 6211 let locationType = results.address_components[0].types[0]; 6212 if (locationType === 'political' && results.address_components[0].types.length > 1) { 6213 locationType = results.address_components[0].types[1]; 6214 } 6215 $('input[name="location_type"]').val(locationType); 6216 //loop through the maping array to get all the values from the inputs that need to be filled with the new information 6217 $.each(inputsArray, function (findex, fvalue) { 6218 //clean each field before setting new info 6219 $('input[name="' + findex + '"]').val(""); 6220 6221 //loop that checks the second level of the array 6222 $.each(fvalue, function (sindex, svalue) { 6223 var flag = true; 6224 //check if svalue is an object 6225 if ($.type(svalue) == "object") { 6226 var currentConcat = "", 6227 //get length of the concat array 6228 concatLength = Object.keys(svalue).length, 6229 concatCounter = 0; 6230 //loop on each element of the svalue elements for the address components concatenation 6231 $.each(svalue, function (conkey, convalue) { 6232 6233 //run a loop on the address components for each svalue elements 6234 $.each(results.address_components, function (inskey, insvalue) { 6235 //if the element of the svalue match, concat the result to the array currentConcat 6236 if (insvalue.types[0] == conkey) { 6237 currentConcat += insvalue[convalue] + " "; 6238 concatCounter++; 6239 } 6240 });//END each on address components 6241 });//END each on svalue for the address components concatenation 6242 //if all the elements matched then this new location with the concatenation of address components will be the one used 6243 if (concatCounter == concatLength) { 6244 $('input[name="' + findex + '"]').val(currentConcat); 6245 flag = false; 6246 return false; 6247 } 6248 //if svalue is not an object the system will continue with the default computations 6249 } else { 6250 //run a loop on the address components for the svalue being searched 6251 $.each(results.address_components, function (key, value) { 6252 //if the svalue element matches it will be saved 6253 if (value.types[0] == sindex) { 6254 $('input[name="' + findex + '"]').val(value[svalue]); 6255 flag = false; 6256 return false; 6257 } 6258 6259 });//END each on the address components 6260 } 6261 return flag; 6262 });//END each on the second level of the array 6263 });//END each on the first level of the array 6264 6265 // Enable submit button at the end of fillAddressFields 6266 $(currentSubmitButton).removeClass('disabled'); 6267 $(currentSubmitButton).removeAttr('disabled'); 6268 }//END fillAddressFields function 6269 //function that triggers when someone selects an option from the autocomplete 6270 function makeSearch(results) { 6271 6272 if(results){ 6273 for (let i = 0; i < results.length; i++) { 6274 if (results[i].types && results[i].types.length > 1 && results[i].types[0] === 'political') { 6275 results[i].types.splice(0, 1); 6276 } 6277 } 6278 } 6279 6280 if (results && results.address_components) { 6281 6282 if (currentLocationState == 'default' || currentLocationState == 'only_map') { 6283 markerSC.setPosition(results.geometry.location); 6284 mapSC.panTo(results.geometry.location); 6285 mapSC.setZoom(16); 6286 } 6287 6288 fillAddressFields(results); 6289 } 6290 else { 6291 fillDataByGeoCode(results.name,'address'); 6292 } 6293 }//END make search function 6294 6295 if (currentLocationState == 'default' || currentLocationState == 'only_map') { 6296 $('#contactModal').on('shown.bs.modal', function () { 6297 google.maps.event.trigger(mapSC, "resize"); 6298 }); 6299 } 6300 6301 // Add MutationObserver to watch for all pac-containers 6302 const observeAutocompleteContainers = () => { 6303 const observer = new MutationObserver((mutations) => { 6304 mutations.forEach((mutation) => { 6305 if (mutation.type === 'childList') {
6306 mutation.addedNodes.forEach((node) => { 6307 if (node.nodeType === 1) { // Check if it's an element node 6308 // Check both for the class and for matching the selector 6309 if (node.classList && 6310 (node.classList.contains('pac-container') || 6311 node.querySelector('.pac-container'))) { 6312 const containerToObserve = node.classList.contains('pac-container') ? node : node.querySelector('.pac-container'); 6313 6314 // Create a new observer for this specific pac-container 6315 const containerObserver = new MutationObserver((containerMutations) => { 6316 containerMutations.forEach((containerMutation) => { 6317 if (containerMutation.type === 'attributes' && 6318 containerMutation.attributeName === 'style') { 6319 const isHidden = containerToObserve.style.display === 'none'; 6320 if (isHidden) { 6321 if (typeof window.cachedSelectedOption !== 'undefined' && window.cachedSelectedOption !== null) { 6322 makeSearch(window.cachedSelectedOption[0]); 6323 }else{ 6324 const thisField = this; 6325 const thisVal = this.value; 6326 setTimeout(function() { 6327 if ($(thisField).parents('div').find('[name="lat"]').val() == "") { 6328 fillDataByGeoCode(thisVal); 6329 } 6330 }, 300); 6331 } 6332 } 6333 } 6334 }); 6335 }); 6336 6337 // Start observing this pac-container 6338 containerObserver.observe(containerToObserve, { 6339 attributes: true, 6340 attributeFilter: ['style'] 6341 }); 6342 } 6343 } 6344 }); 6345 } 6346 }); 6347 }); 6348 6349 // Start observing the document body for added pac-containers 6350 observer.observe(document.body, { 6351 childList: true, 6352 subtree: true 6353 }); 6354 }; 6355 6356 // Start observing when the document is ready 6357 if (document.readyState === 'loading') { 6358 document.addEventListener('DOMContentLoaded', observeAutocompleteContainers); 6359 } else { 6360 observeAutocompleteContainers(); 6361 } 6362 }//END if (currentLocationState != "no_location") 6363 6364 function fillDataByGeoCode(info, type = 'address') { 6365 if(info){ 6366 type = type.toLowerCase(); 6367 let geocoderRequest = { address: info }; 6368 if (type === 'latlng') { 6369 geocoderRequest = { location: info}; 6370 } 6371 const language = "en"; 6372 if (language) { 6373 geocoderRequest.language = language; 6374 } 6375 const mainCountry = ''; 6376 if (mainCountry && type === 'address') { 6377 geocoderRequest.componentRestrictions = {country: mainCountry}; 6378 geocoderRequest.region = mainCountry; 6379 } 6380 if (mainCountry && type === 'latlng') { 6381 geocoderRequest.region = mainCountry; 6382 } 6383 geo = new google.maps.Geocoder(); 6384 geo.geocode(geocoderRequest, function (results, status) { 6385 6386 6387 if (status == google.maps.GeocoderStatus.OK) { 6388 if(results){ 6389 for (let i = 0; i < results.length; i++) { 6390 if (results[i].types && results[i].types.length > 1 && results[i].types[0] === 'political') { 6391 results[i].types.splice(0, 1); 6392 } 6393 } 6394 } 6395 if (results.length > 1) { 6396 for (let i = 0; i < results.length; i++) { 6397 if (results[i].types[0] === 'natural_feature' || 6398 results[i].types[0] === 'airport' || 6399 results[i].types[0] === 'point_of_interest' || 6400 results[i].types[0] === 'establishment' || 6401 results[i].types[0] === 'political' || 6402 results[i].types[0] === 'park') { 6403 results.splice(i, 1); 6404 } 6405 } 6406 } 6407 if (mapSC != null && mapSC != '' && typeof mapSC !== "undefined" && markerSC != null && markerSC != '' && typeof markerSC !== "undefined") { 6408 mapSC.panTo(results[0].geometry.location); 6409 mapSC.setZoom(16); 6410 markerSC.setPosition(results[0].geometry.location); 6411 } 6412 6413 fillAddressFields(results[0]); 6414 } 6415 }); 6416 } 6417 } 6418 // fetch to obtain the centerOfMap 6419 function getCenterMap(urlWapi) { 6420 const response = fetch(urlWapi, { 6421 method: 'GET',
6422 mode: 'same-origin', 6423 credentials: 'same-origin', 6424 headers: { 6425 'Content-Type': 'application/json' 6426 }, 6427 }); 6428 return response 6429 } 6430 } 6431</script>
6431<script type="text/javascript"> 6432 if(typeof bootstrap_contact_member_category_dropdowns_runned == "undefined"){ 6433 var bootstrap_contact_member_category_dropdowns_runned = true; 6434 var uniqueForm = $('.select-category-chained').closest('form').attr("id"); 6435 $(document).on('change', '#'+uniqueForm+' .select-category-chained', function () { 6436 6437 var input = $(this); 6438 var currentLevel = input.attr('name'); 6439 var categoryId = input.val(); 6440 6441 var targetSelect = uniqueForm + " #" + input.data('nextselect'); 6442 var enviromentVar = $('#cat-page-type').data('type'); 6443 //empty all the children of this select 6444 var epmtyHtmlOptions = ""; 6445 var defaultOptionText = 'Select from List'; 6446 if(defaultOptionText != ""){ 6447 epmtyHtmlOptions += '<option value="">('+defaultOptionText+')</option>'; 6448 } 6449 $('#' + targetSelect).html(epmtyHtmlOptions); 6450 $('#' + targetSelect).val('').change(); 6451 6452 //check if child is also parent and clean that one too 6453 var targetSelectElement = $('#' + targetSelect); 6454 var childChildSelect = targetSelectElement.data('nextselect'); 6455 6456 if (childChildSelect != "" && childChildSelect != undefined) { 6457 $('#' + childChildSelect).html(epmtyHtmlOptions); 6458 $('#' + childChildSelect).val('').change(); 6459 } 6460 if (enviromentVar == "profile") { 6461 var userId = $('#cat-page-type').data('user'); 6462 6463 } else { 6464 var userId = ""; 6465 } 6466 6467 if (categoryId != "" && categoryId > 0) { 6468 6469 //send ajax to know the children results 6470 var gcaResponseArray = []; 6471 6472 $.ajax({
6473 url: "/wapi/widget", 6474 type: "GET", 6475 dataType: "json", 6476 data: { 6477 "request_type": "GET", 6478 "widget_name": "Bootstrap - Contact Member Category Dropdowns", 6479 "header_type": "json", 6480 "user_id": userId, 6481 "scope": currentLevel, 6482 "category_id": categoryId, 6483 "select_action": "find_children_cat" 6484 }, 6485 success: function (data) { 6486 gcaResponseArray.push(data); 6487 }, 6488 error: function (data) { 6489 console.log("error"); 6490 console.log(data); 6491 } 6492 }); 6493 var gcaInter = setInterval(function () { 6494 6495 if (gcaResponseArray.length == 1) { 6496 clearInterval(gcaInter); 6497 var htmlOptions = ""; 6498 var defaultOptionText = 'Select from List'; 6499 if(defaultOptionText != ""){ 6500 htmlOptions += '<option value="">('+defaultOptionText+')</option>'; 6501 } 6502 //construct the html options values 6503 var newOptionsCounter = 0; 6504 if(gcaResponseArray[0] !== null && gcaResponseArray[0]['cats']!=''){ 6505 $.each(gcaResponseArray[0]['cats'], function (key, value) { 6506 key = key.replace('_', ''); 6507 htmlOptions += '<option value="' + key + '">' + value + '</option>'; 6508 newOptionsCounter++; 6509 }); 6510 $('#' + targetSelect).html(htmlOptions); 6511 $('#' + targetSelect).attr("disabled", false); 6512 if (newOptionsCounter > 0) { 6513 $('#' + targetSelect).select2("open"); 6514 } 6515 }else{ 6516 $('#' + targetSelect).html('<option value="">No Options Available</option>'); 6517 $('#' + targetSelect).attr("disabled", true); 6518 $("#" + targetSelect).select2("val", ""); 6519 if ($("#" + targetSelect).attr('data-nextselect') != "") { 6520 let dataSelectNext = $("#" + targetSelect).attr('data-nextselect'); 6521 $('#' + dataSelectNext).html('<option value="">No Options Available</option>'); 6522 $('#' + dataSelectNext).attr("disabled", true); 6523 $("#" + dataSelectNext).select2("val", ""); 6524 } 6525 } 6526 6527 } 6528 }, 400); 6529 } 6530 }); 6531 const topRequired = document.querySelector('label[for="top-id-select"] span.required'); 6532 const subRequired = document.querySelector('label[for="sub-id-select"] span.required'); 6533 const subSubRequired = document.querySelector('label[for="sub-sub-id-select"] span.required'); 6534 //code to check that the categories have been submitted if the settings are enabled 6535 $('#'+uniqueForm).submit(function (e) { 6536 let topRequiredVal = document.getElementById('top-id-select'); 6537 let subRequiredVal = document.getElementById('sub-id-select'); 6538 let subSubRequiredVal = document.getElementById('sub-sub-id-select'); 6539 if ((topRequired !== null && topRequiredVal !== null && topRequiredVal.value == '') || (subRequired !== null && subRequiredVal !== null && subRequiredVal.value == '') || (subSubRequired !== null && subSubRequiredVal !== null && subSubRequiredVal.value == '')) { 6540 e.preventDefault(); 6541 e.stopPropagation(); 6542 e.stopImmediatePropagation(); 6543 swal(`Whoops!`, `Please select a category to submit this request` ,"error"); 6544 } 6545 }); 6546 } 6547</script>
6547
6547<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
6547 6548
6548<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
6548 6549
6549<script type="text/javascript"> 6550 function decodeHtml(html) { 6551 var txt = document.createElement("textarea"); 6552 txt.innerHTML = html; 6553 return txt.value; 6554 } 6555 6556 // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters 6557 $(function() { 6558 function applyFix() { 6559 // Check if FormValidation library and URI validator are loaded 6560 if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) { 6561 FormValidation.Validator.uri.validate = function(validator, $field, options) { 6562 var value = validator.getFieldValue($field, 'uri').trim(); 6563 return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value); 6564 }; 6565 return true; 6566 } 6567 return false; 6568 } 6569 6570 if (!applyFix()) { 6571 setTimeout(applyFix, 50); 6572 } 6573 }); 6574 </script>
6574 6575
6575<script type="text/javascript"> 6576 6577 var counterSubmit = 0; 6578 $(document).ready(function() { 6579 /* grecaptcha.reset() with no argument always resets widget 0. On a page with two 6580 captcha holders that clears the wrong checkbox, so the widget the visitor solved 6581 keeps a token Google has already spent and every retry fails the security check. 6582 captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha"; 6583 an undefined id means no per-form id is known and the arg-less call is used, 6584 exactly as before. */ 6585 function bdCaptchaWidgetId(formId) { 6586 if (typeof captchaHolders === "undefined" || !formId) { 6587 return undefined; 6588 } 6589 /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84), 6590 so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from 6591 the holder element itself so the counter never has to be reconstructed. */ 6592 var form = document.getElementById(formId); 6593 var holder = form && form.querySelector(".g-recaptcha"); 6594 return holder ? captchaHolders[holder.id] : undefined; 6595 } 6596 6597 function bdCaptchaReset(formId) { 6598 if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") { 6599 return; 6600 } 6601 var widgetId = bdCaptchaWidgetId(formId); 6602 if (widgetId === undefined) { 6603 grecaptcha.reset(); 6604 } else { 6605 grecaptcha.reset(widgetId); 6606 } 6607 } 6608 6609 // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry 6610 // rules for fields that are NOT rendered in this form (conditionally-rendered or 6611 // duplicated form configs). Those phantom rules make formValidation mis-evaluate 6612 // isValid(), so an empty required field bypasses validation and submits natively. 6613 // Remove any rule whose field has no matching element before initializing. 6614 // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly 6615 // REMOVES rules (never adds validators, never overrides native submit, never 6616 // intercepts on capture phase, never re-validates on click) â so it cannot 6617 // reproduce the "Save button slides down / nav broken / no success message" 6618 // regression that caused #5902 to be rolled back on site 19413. 6619 var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LdfEqEkAAAAAIDZZO8ipxDmxahQaHGSXpr2hnZb","timeout":"120","message":"The captcha is not valid"}},"fields":{"lead_email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}}}}; 6620 var formElement = $(`form[name='bootstrap_get_match_358']`); 6621 if(validatorConfig && validatorConfig.fields) { 6622 Object.keys(validatorConfig.fields).forEach(function(fieldName) { 6623 if(formElement.find('[name="' + fieldName + '"]').length === 0) { 6624 delete validatorConfig.fields[fieldName]; 6625 } 6626 }); 6627 } 6628 6629 // Scroll to the first invalid field when submit fails validation, 6630 // so the user can immediately see why the form will not submit 6631 formElement.on('err.form.fv', function(e) { 6632 var $firstError = $(e.target).find('.form-group.has-error').first(); 6633 if ($firstError.length) { 6634 $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700); 6635 } 6636 }); 6637 6638 formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) { 6639 6640 if('bootstrap_get_match' == 'unsubscribe_email'){ 6641 return true; 6642 } 6643 // Prevent form submission 6644 e.preventDefault(); 6645 $form = $(e.target), 6646 fv = $form.data('formValidation'); 6647 6648 // Check HTML5 required fields that FormValidation may not know about 6649 var requiredEmpty = false; 6650 $form.find('[required]').each(function() { 6651 var val = $(this).val(); 6652 if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) { 6653 requiredEmpty = true; 6654 $(this).closest('.form-group').addClass('has-error'); 6655 if ($(this).siblings('.required-error').length === 0) { 6656 $(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>'); 6657 } 6658 } else { 6659 var $reqGroup = $(this).closest('.form-group'); 6660 $(this).siblings('.required-error').remove(); 6661 // Keep has-error if another validator is still failing for this field 6662 if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 6663 $reqGroup.removeClass('has-error'); 6664 } 6665 } 6666 }); 6667 if (requiredEmpty) { 6668 fv.disableSubmitButtons(false); 6669 counterSubmit = 0; 6670 // Scroll to the first field with an error (HTML5-required scan does 6671 // not trigger err.form.fv, so handle the scroll here too) 6672 var $firstReqError = $form.find('.form-group.has-error').first(); 6673 if ($firstReqError.length) { 6674 $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700); 6675 } 6676 return false; 6677 } 6678 6679 var values = $(this).serialize(); 6680 6681 6682 var locationFieldCorrect = true; 6683 6684 if($("#bootstrap_get_match_358 .location_required").length > 0){ 6685 $("#bootstrap_get_match_358 .location_required").each(function (index) { 6686 if($(this).data('state') == 1){ 6687 if($('#bootstrap_get_match_358 input[name="lead_location"]').val() == "" || $('#bootstrap_get_match_358 input[name="lat"]').val() == "" || $('#bootstrap_get_match_358 input[name="lng"]').val() == "") { 6688 locationFieldCorrect = false; 6689 } 6690 } 6691 }); 6692 } 6693 6694 if(locationFieldCorrect === false){ 6695 //check that there is a latitude or longitude 6696 swal(`Whoops!`, `The location information is required to submit this form`, "error"); 6697 return false; 6698 } 6699 6700 6701 if (!$(this).attr("action")) { 6702 var action = ''; 6703 6704 } else { 6705 var action = $(this).attr("action"); 6706 } 6707 if (!$(this).attr("method")) { 6708 var method = 'post'; 6709 6710 } else { 6711 var method = $(this).attr("method"); 6712 } 6713 if (!$(this).attr("form_action_type")) { 6714 var form_action_type = 'notification'; 6715 6716 } else { 6717 var form_action_type = $(this).attr("form_action_type"); 6718 } 6719 if (!$(this).attr("form_action_div")) { 6720 /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */ 6721 var form_action_div = $('#main-content').length ? '#main-content' : '#first_container'; 6722 6723 } else { 6724 var form_action_div = $(this).attr("form_action_div"); 6725 } 6726 if (!$(this).attr("return_data_type")) { 6727 var return_data_type = 'json'; 6728 6729 } else { 6730 var return_data_type = $(this).attr("return_data_type"); 6731 } 6732 var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000); 6733 if (!submitInFlight) { 6734 if ($("#bootstrap_get_match_358-notification").html() != "") { 6735 $("#bootstrap_get_match_358-notification").remove(); 6736 } 6737 if ($(this).find('input[type="submit"]').length > 0) { 6738 $(this).find('input[type="submit"]').before('<div id="bootstrap_get_match_358-notification" class="alert"></div>'); 6739 6740 } else { 6741 $(this).prepend('<div id="bootstrap_get_match_358-notification" class="alert"></div>'); 6742 } 6743 } 6744 var notification = $("#bootstrap_get_match_358-notification"); 6745 6746 if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) { 6747 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 6748 setTimeout(function(){ 6749 fv.defaultSubmit(); 6750 }, 100); 6751 } else { 6752 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 6753 if(!submitInFlight) { 6754 counterSubmit++; 6755 $form.data('bdLastSubmitAt', Date.now()); 6756 6757 var fields = $(this).serializeArray(); 6758 var formField = []; 6759 var processData = true; 6760 var contentType = "application/x-www-form-urlencoded; charset=UTF-8"; 6761 6762 6763 6764 if($("#bootstrap_get_match_358 input[type=file]").length > 0){ 6765 6766 var formObject = new FormData(); 6767 processData = false; 6768 contentType = false; 6769 6770 $(fields).each(function(index,field){ 6771 formField.push(field.name+"="+field.value); 6772 }); 6773 6774 values = formField.join("&"); 6775 6776 $(formField).each(function(index,fieldValue){ 6777 var fieldInfo = fieldValue.split('='); 6778 formObject.append(fieldInfo[0],fieldInfo[1]); 6779 }); 6780 6781 $("#bootstrap_get_match_358 input[type=file]").each(function(index,node){ 6782 var file = this.files[0]; 6783 if(typeof file != "undefined"){ 6784 formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name); 6785 } 6786 }); 6787 }else{ 6788 6789 $(fields).each(function(index,field){ 6790 formField.push(field.name+"="+encodeURIComponent(field.value)); 6791 }); 6792 6793 var formObject = formField.join("&"); 6794 } 6795 6796 $.ajax({
6797 url: action, 6798 type: method, 6799 data: formObject, 6800 dataType: return_data_type, 6801 processData: processData, 6802 contentType: contentType, 6803 success: function (data) { 6804 // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above. 6805 notification = $("#bootstrap_get_match_358-notification"); 6806 if (return_data_type == "html") { 6807 var result = 'success'; 6808 6809 if (!data != "") { 6810 var result_widget = data['result_widget']; 6811 } 6812 6813 } else { 6814 6815 6816 if (!data['result']) { 6817 var result = 'error'; 6818 } else { 6819 var result = data['result']; 6820 } 6821 if (!data['result_widget']) { 6822 var result_widget = ''; 6823 6824 } else { 6825 var result_widget = data['result_widget']; 6826 } 6827 } 6828 if (result == "success") { 6829 6830 if (!data['message']) { 6831 var message = `Your information has submitted successfully!`; 6832 6833 } else { 6834 var message = data['message']; 6835 } 6836 if (!data['redirect_url']) { 6837 var redirect_url = ''; 6838 6839 } else { 6840 var redirect_url = data['redirect_url']; 6841 } 6842 6843 6844 6845 if (form_action_type == "notification") { 6846 if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) { 6847 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 6848 redirect_url = "/" + redirect_url; 6849 } 6850 if (notification.parents('.modal').length) { 6851 $('.modal-backdrop').hide(); 6852 $('.modal').modal('hide'); 6853 } 6854 window.location.href = redirect_url; 6855 fv.resetForm(true); 6856 } else { 6857 notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>') 6858 .addClass('alert-dismissible') 6859 .addClass("alert-success-subtle") 6860 .removeClass("alert-danger-subtle") 6861 .removeClass("alert-warning-subtle") 6862 6863 6864 6865 if(notification.parents('.modal').length && 'bootstrap_get_match_358' == 'whmcs_billing_address'){ 6866 setTimeout(function(){ 6867 notification.parents('.modal').modal('hide'); 6868 }, 1000); 6869 } 6870 } 6871 6872 } else if (form_action_type == "widget") { 6873 6874 if (result_widget != '') { 6875 6876 setTimeout(function(){ 6877 if(form_action_div != '.newsletter_modal_form_container'){ 6878 $("html, body").animate({ scrollTop: 0 }, 600); 6879 } 6880 $(form_action_div).html(decodeHtml(result_widget)).text(); 6881 6882 }, 1000); 6883 } 6884 6885 } else if (form_action_type == "redirect") { 6886 6887 if (redirect_url == "") { 6888 redirect_url = decodeURIComponent(""); 6889 } 6890 6891 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 6892 redirect_url = "/" + redirect_url; 6893 } 6894 current_location = "/blog"; 6895 refresh_pages_string = "/login"; 6896 refresh_pages_string = refresh_pages_string.replace(/ /g,''); 6897 refresh_pages_array = refresh_pages_string.split(','); 6898 notification.html(message) 6899 .addClass("alert-success-subtle") 6900 .removeClass("alert-danger-subtle") 6901 .removeClass("alert-warning-subtle") 6902 .delay(2000).slideUp(); 6903 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" )){ 6904 window.location.href = window.location.href+'?logged'; 6905 } else { 6906 window.location.href = redirect_url; 6907 } 6908 6909 fv.resetForm(true); 6910 } 6911 if(form_action_div != '.newsletter_modal_form_container' && 'bootstrap_get_match_358' != 'whmcs_billing_address'){ 6912 $('.modal-backdrop').hide(); 6913 } 6914 } else { 6915 bdCaptchaReset(formElement.attr('id')); 6916 if (!data['message']) { 6917 var message = `You entered invali
6917d data. Please try to save again.`; 6918 6919 } else { 6920 var message = data['message']; 6921 } 6922 $("#bootstrap_get_match_358-notification").html(message) 6923 .addClass("alert-danger-subtle") 6924 .removeClass("alert-success-subtle") 6925 .removeClass("alert-warning-subtle") 6926 .fadeIn(); 6927 fv.disableSubmitButtons(false); 6928 } 6929 counterSubmit = 0; 6930 }, 6931 error: function (e) { 6932 6933 if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){ 6934 bdCaptchaReset(formElement.attr('id')); 6935 $("#bootstrap_get_match_358-notification").html(`Recaptcha Error`); 6936 } else { 6937 $("#bootstrap_get_match_358-notification").html(`A connection error occurred while saving. Please try to save again.`); 6938 } 6939 $("#bootstrap_get_match_358-notification").addClass("alert-warning-subtle") 6940 .removeClass("alert-success-subtle") 6941 .removeClass("alert-warning-subtle") 6942 .fadeIn(); 6943 counterSubmit = 0; 6944 } 6945 });/// End Ajax 6946 } 6947 }//END else 6948 }).bind('keydown', function(event) { 6949 6950 if (event.ctrlKey || event.metaKey) { 6951 6952 switch (String.fromCharCode(event.which).toLowerCase()) { 6953 6954 case 's': 6955 var nativeForm = $(this)[0]; 6956 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 6957 event.preventDefault(); 6958 return false; 6959 } 6960 $(this).submit(); 6961 break; 6962 } 6963 } 6964 }); 6965 6966 /// This will turn any select2 that are required in the form builder to being required elements. 6967 $('#bootstrap_get_match_358 select').each(function (i, obj) { 6968 setTimeout(function(){ 6969 if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") { 6970 $(obj).css("z-index","-999"); 6971 $(obj).css("height","0"); 6972 $(obj).css("width","0"); 6973 $(obj).css("display","block"); 6974 $(obj).css("position","absolute"); 6975 } 6976 }, 3000); 6977 }); 6978 6979 // Clear required-error messages when user fills in a required field 6980 $('#bootstrap_get_match_358').on('keyup change', '[required]', function() { 6981 var val = $(this).val(); 6982 if (val !== '' && val !== null && val.trim() !== '') { 6983 var $group = $(this).closest('.form-group'); 6984 // Remove only this handler's own required message 6985 $(this).siblings('.required-error').remove(); 6986 // Keep has-error if another FormValidation validator is still failing 6987 // (e.g. stringLength, regexp). has-error is shared, so removing it 6988 // wholesale would clobber other validators' red styling. 6989 if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 6990 $group.removeClass('has-error'); 6991 } 6992 } 6993 }); 6994 6995 });//END $('# echo $_SERVER[form_element_id]; ').formValidation( 6996 </script>
6996 6997
6997<script type="text/javascript"> 6998(function () { 6999 try { 7000 var email = new URLSearchParams(window.location.search).get('email'); 7001 if (!email) { return; } 7002 email = email.trim(); 7003 if (email.indexOf('@') === -1) { return; } 7004 /* Sets the input value property (never HTML) -> XSS-safe regardless of the query value. */ 7005 var fill = function () { 7006 var fields = document.querySelectorAll('input[name="email_r"]'); 7007 for (var i = 0; i < fields.length; i++) { 7008 if (!fields[i].value) { fields[i].value = email; } 7009 } 7010 }; 7011 if (document.readyState === 'loading') { 7012 document.addEventListener('DOMContentLoaded', fill); 7013 } else { 7014 fill(); 7015 } 7016 } catch (e) {} 7017})(); 7018</script>
7018 7019
7019<script type="text/javascript"> 7020 7021 var counterSubmit = 0; 7022 $(document).ready(function() { 7023 /* grecaptcha.reset() with no argument always resets widget 0. On a page with two 7024 captcha holders that clears the wrong checkbox, so the widget the visitor solved 7025 keeps a token Google has already spent and every retry fails the security check. 7026 captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha"; 7027 an undefined id means no per-form id is known and the arg-less call is used, 7028 exactly as before. */ 7029 function bdCaptchaWidgetId(formId) { 7030 if (typeof captchaHolders === "undefined" || !formId) { 7031 return undefined; 7032 } 7033 /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84), 7034 so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from 7035 the holder element itself so the counter never has to be reconstructed. */ 7036 var form = document.getElementById(formId); 7037 var holder = form && form.querySelector(".g-recaptcha"); 7038 return holder ? captchaHolders[holder.id] : undefined; 7039 } 7040 7041 function bdCaptchaReset(formId) { 7042 if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") { 7043 return; 7044 } 7045 var widgetId = bdCaptchaWidgetId(formId); 7046 if (widgetId === undefined) { 7047 grecaptcha.reset(); 7048 } else { 7049 grecaptcha.reset(widgetId); 7050 } 7051 } 7052 7053 // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry 7054 // rules for fields that are NOT rendered in this form (conditionally-rendered or 7055 // duplicated form configs). Those phantom rules make formValidation mis-evaluate 7056 // isValid(), so an empty required field bypasses validation and submits natively. 7057 // Remove any rule whose field has no matching element before initializing. 7058 // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly 7059 // REMOVES rules (never adds validators, never overrides native submit, never 7060 // intercepts on capture phase, never re-validates on click) â so it cannot 7061 // reproduce the "Save button slides down / nav broken / no success message" 7062 // regression that caused #5902 to be rolled back on site 19413. 7063 var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LdfEqEkAAAAAIDZZO8ipxDmxahQaHGSXpr2hnZb","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"}}}}}; 7064 var formElement = $(`form[name='member_login_190-1']`); 7065 if(validatorConfig && validatorConfig.fields) { 7066 Object.keys(validatorConfig.fields).forEach(function(fieldName) { 7067 if(formElement.find('[name="' + fieldName + '"]').length === 0) { 7068 delete validatorConfig.fields[fieldName]; 7069 } 7070 }); 7071 } 7072 7073 // Scroll to the first invalid field when submit fails validation, 7074 // so the user can immediately see why the form will not submit 7075 formElement.on('err.form.fv', function(e) { 7076 var $firstError = $(e.target).find('.form-group.has-error').first(); 7077 if ($firstError.length) { 7078 $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700); 7079 } 7080 }); 7081
7082 formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) { 7083 7084 if('member_login' == 'unsubscribe_email'){ 7085 return true; 7086 } 7087 // Prevent form submission 7088 e.preventDefault(); 7089 $form = $(e.target), 7090 fv = $form.data('formValidation'); 7091 7092 // Check HTML5 required fields that FormValidation may not know about 7093 var requiredEmpty = false; 7094 $form.find('[required]').each(function() { 7095 var val = $(this).val(); 7096 if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) { 7097 requiredEmpty = true; 7098 $(this).closest('.form-group').addClass('has-error'); 7099 if ($(this).siblings('.required-error').length === 0) { 7100 $(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>'); 7101 } 7102 } else { 7103 var $reqGroup = $(this).closest('.form-group'); 7104 $(this).siblings('.required-error').remove(); 7105 // Keep has-error if another validator is still failing for this field 7106 if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 7107 $reqGroup.removeClass('has-error'); 7108 } 7109 } 7110 }); 7111 if (requiredEmpty) { 7112 fv.disableSubmitButtons(false); 7113 counterSubmit = 0; 7114 // Scroll to the first field with an error (HTML5-required scan does 7115 // not trigger err.form.fv, so handle the scroll here too) 7116 var $firstReqError = $form.find('.form-group.has-error').first(); 7117 if ($firstReqError.length) { 7118 $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700); 7119 } 7120 return false; 7121 } 7122 7123 var values = $(this).serialize(); 7124 7125 7126 var locationFieldCorrect = true; 7127 7128 if($("#member_login_190-1 .location_required").length > 0){ 7129 $("#member_login_190-1 .location_required").each(function (index) { 7130 if($(this).data('state') == 1){ 7131 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() == "") { 7132 locationFieldCorrect = false; 7133 } 7134 } 7135 }); 7136 } 7137 7138 if(locationFieldCorrect === false){ 7139 //check that there is a latitude or longitude 7140 swal(`Whoops!`, `The location information is required to submit this form`, "error"); 7141 return false; 7142 } 7143 7144 7145 if (!$(this).attr("action")) { 7146 var action = ''; 7147 7148 } else { 7149 var action = $(this).attr("action"); 7150 } 7151 if (!$(this).attr("method")) { 7152 var method = 'post'; 7153 7154 } else { 7155 var method = $(this).attr("method"); 7156 } 7157 if (!$(this).attr("form_action_type")) { 7158 var form_action_type = 'notification'; 7159 7160 } else { 7161 var form_action_type = $(this).attr("form_action_type"); 7162 } 7163 if (!$(this).attr("form_action_div")) { 7164 /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */ 7165 var form_action_div = $('#main-content').length ? '#main-content' : '#first_container'; 7166 7167 } else { 7168 var form_action_div = $(this).attr("form_action_div"); 7169 } 7170 if (!$(this).attr("return_data_type")) { 7171 var return_data_type = 'json'; 7172 7173 } else { 7174 var return_data_type = $(this).attr("return_data_type"); 7175 } 7176 var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000); 7177 if (!submitInFlight) { 7178 if ($("#member_login_190-1-notification").html() != "") { 7179 $("#member_login_190-1-notification").remove(); 7180 } 7181 if ($(this).find('input[type="submit"]').length > 0) { 7182 $(this).find('input[type="submit"]').before('<div id="member_login_190-1-notification" class="alert"></div>'); 7183 7184 } else { 7185 $(this).prepend('<div id="member_login_190-1-notification" class="alert"></div>'); 7186 } 7187 } 7188 var notification = $("#member_login_190-1-notification"); 7189 7190 if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) { 7191 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 7192 setTimeout(function(){ 7193 fv.defaultSubmit(); 7194 }, 100); 7195 } else { 7196 notification.html(`Processing Request...`).addClass("alert-warning-subtle"); 7197 if(!submitInFlight) { 7198 counterSubmit++; 7199 $form.data('bdLastSubmitAt', Date.now()); 7200 7201 var fields = $(this).serializeArray(); 7202 var formField = []; 7203 var processData = true; 7204 var contentType = "application/x-www-form-urlencoded; charset=UTF-8"; 7205 7206 7207 7208 if($("#member_login_190-1 input[type=file]").length > 0){ 7209 7210 var formObject = new FormData(); 7211 processData = false; 7212 contentType = false; 7213 7214 $(fields).each(function(index,field){ 7215 formField.push(field.name+"="+field.value); 7216 }); 7217 7218 values = formField.join("&"); 7219 7220 $(formField).each(function(index,fieldValue){ 7221 var fieldInfo = fieldValue.split('='); 7222 formObject.append(fieldInfo[0],fieldInfo[1]); 7223 }); 7224 7225 $("#member_login_190-1 input[type=file]").each(function(index,node){ 7226 var file = this.files[0]; 7227 if(typeof file != "undefined"){ 7228 formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name); 7229 } 7230 }); 7231 }else{ 7232 7233 $(fields).each(function(index,field){ 7234 formField.push(field.name+"="+encodeURIComponent(field.value)); 7235 }); 7236 7237 var formObject = formField.join("&"); 7238 } 7239 7240 $.ajax({
7241 url: action, 7242 type: method, 7243 data: formObject, 7244 dataType: return_data_type, 7245 processData: processData, 7246 contentType: contentType, 7247 success: function (data) { 7248 // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above. 7249 notification = $("#member_login_190-1-notification"); 7250 if (return_data_type == "html") { 7251 var result = 'success'; 7252 7253 if (!data != "") { 7254 var result_widget = data['result_widget']; 7255 } 7256 7257 } else { 7258 7259 7260 if (!data['result']) { 7261 var result = 'error'; 7262 } else { 7263 var result = data['result']; 7264 } 7265 if (!data['result_widget']) { 7266 var result_widget = ''; 7267 7268 } else { 7269 var result_widget = data['result_widget']; 7270 } 7271 } 7272 if (result == "success") { 7273 7274 if (!data['message']) { 7275 var message = `Your information has submitted successfully!`; 7276 7277 } else { 7278 var message = data['message']; 7279 } 7280 if (!data['redirect_url']) { 7281 var redirect_url = ''; 7282 7283 } else { 7284 var redirect_url = data['redirect_url']; 7285 } 7286 7287 7288 7289 if (form_action_type == "notification") { 7290 if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) { 7291 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 7292 redirect_url = "/" + redirect_url; 7293 } 7294 if (notification.parents('.modal').length) { 7295 $('.modal-backdrop').hide(); 7296 $('.modal').modal('hide'); 7297 } 7298 window.location.href = redirect_url; 7299 fv.resetForm(true); 7300 } else { 7301 notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>') 7302 .addClass('alert-dismissible') 7303 .addClass("alert-success-subtle") 7304 .removeClass("alert-danger-subtle") 7305 .removeClass("alert-warning-subtle") 7306 7307 7308 7309 if(notification.parents('.modal').length && 'member_login_190-1' == 'whmcs_billing_address'){ 7310 setTimeout(function(){ 7311 notification.parents('.modal').modal('hide'); 7312 }, 1000); 7313 } 7314 } 7315 7316 } else if (form_action_type == "widget") { 7317 7318 if (result_widget != '') { 7319 7320 setTimeout(function(){ 7321 if(form_action_div != '.newsletter_modal_form_container'){ 7322 $("html, body").animate({ scrollTop: 0 }, 600); 7323 } 7324 $(form_action_div).html(decodeHtml(result_widget)).text(); 7325 7326 }, 1000); 7327 } 7328 7329 } else if (form_action_type == "redirect") { 7330 7331 if (redirect_url == "") { 7332 redirect_url = decodeURIComponent(""); 7333 } 7334 7335 if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") { 7336 redirect_url = "/" + redirect_url; 7337 } 7338 current_location = "/blog"; 7339 refresh_pages_string = "/login"; 7340 refresh_pages_string = refresh_pages_string.replace(/ /g,''); 7341 refresh_pages_array = refresh_pages_string.split(','); 7342 notification.html(message) 7343 .addClass("alert-success-subtle") 7344 .removeClass("alert-danger-subtle") 7345 .removeClass("alert-warning-subtle") 7346 .delay(2000).slideUp(); 7347 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" )){ 7348 window.location.href = window.location.href+'?logged'; 7349 } else { 7350 window.location.href = redirect_url; 7351 } 7352 7353 fv.resetForm(true); 7354 } 7355 if(form_action_div != '.newsletter_modal_form_container' && 'member_login_190-1' != 'whmcs_billing_address'){ 7356 $('.modal-backdrop').hide(); 7357 } 7358 } else { 7359 bdCaptchaReset(formElement.attr('id')); 7360 if (!data['message']) { 7361 var message = `You entered invali
7361d data. Please try to save again.`; 7362 7363 } else { 7364 var message = data['message']; 7365 } 7366 $("#member_login_190-1-notification").html(message) 7367 .addClass("alert-danger-subtle") 7368 .removeClass("alert-success-subtle") 7369 .removeClass("alert-warning-subtle") 7370 .fadeIn(); 7371 fv.disableSubmitButtons(false); 7372 } 7373 counterSubmit = 0; 7374 }, 7375 error: function (e) { 7376 7377 if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){ 7378 bdCaptchaReset(formElement.attr('id')); 7379 $("#member_login_190-1-notification").html(`Recaptcha Error`); 7380 } else { 7381 $("#member_login_190-1-notification").html(`A connection error occurred while saving. Please try to save again.`); 7382 } 7383 $("#member_login_190-1-notification").addClass("alert-warning-subtle") 7384 .removeClass("alert-success-subtle") 7385 .removeClass("alert-warning-subtle") 7386 .fadeIn(); 7387 counterSubmit = 0; 7388 } 7389 });/// End Ajax 7390 } 7391 }//END else 7392 }).bind('keydown', function(event) { 7393 7394 if (event.ctrlKey || event.metaKey) { 7395 7396 switch (String.fromCharCode(event.which).toLowerCase()) { 7397 7398 case 's': 7399 var nativeForm = $(this)[0]; 7400 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 7401 event.preventDefault(); 7402 return false; 7403 } 7404 $(this).submit(); 7405 break; 7406 } 7407 } 7408 }); 7409 7410 /// This will turn any select2 that are required in the form builder to being required elements. 7411 $('#member_login_190-1 select').each(function (i, obj) { 7412 setTimeout(function(){ 7413 if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") { 7414 $(obj).css("z-index","-999"); 7415 $(obj).css("height","0"); 7416 $(obj).css("width","0"); 7417 $(obj).css("display","block"); 7418 $(obj).css("position","absolute"); 7419 } 7420 }, 3000); 7421 }); 7422 7423 // Clear required-error messages when user fills in a required field 7424 $('#member_login_190-1').on('keyup change', '[required]', function() { 7425 var val = $(this).val(); 7426 if (val !== '' && val !== null && val.trim() !== '') { 7427 var $group = $(this).closest('.form-group'); 7428 // Remove only this handler's own required message 7429 $(this).siblings('.required-error').remove(); 7430 // Keep has-error if another FormValidation validator is still failing 7431 // (e.g. stringLength, regexp). has-error is shared, so removing it 7432 // wholesale would clobber other validators' red styling. 7433 if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) { 7434 $group.removeClass('has-error'); 7435 } 7436 } 7437 }); 7438 7439 });//END $('# echo $_SERVER[form_element_id]; ').formValidation( 7440 </script>
7440 7441
7441<script> 7442 window.addEventListener('load', (event) => { 7443 setTimeout(() => { 7444 }, 501); 7445 }); 7446 </script>
vendor: 2 bytes, line 7446
7446
7447<script> 7448 function decision(message, url) { 7449 if (confirm(message)) { 7450 setTimeout(function () { 7451 window.location = url; 7452 }, 0); 7453 } 7454 } 7455</script>
vendor: 2 bytes, line 7455
7455
7456<script> 7457 // Function to add alt, width, and height attributes to <img> elements without them 7458 function addAttributesToImages() { 7459 var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])'); 7460 Array.prototype.forEach.call(images, function(img) { 7461 // Skip if we've already processed this image 7462 if (img.dataset.processed === 'true') { 7463 return; 7464 } 7465 7466 // Mark this image as being processed 7467 img.dataset.processed = 'true'; 7468 7469 // Add alt attribute if missing 7470 if (!img.hasAttribute('alt')) { 7471 var src = img.getAttribute('src') || 'image'; // Default src to 'image' if missing 7472 var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, ''); 7473 7474 try { 7475 altText = decodeURIComponent(altText) 7476 .replace(/[_\-+,.:;]+/g, ' ') 7477 .replace(/\s+/g, ' ') 7478 .trim(); 7479 } catch (e) { 7480 altText = 'image'; // Fallback to 'image' if decoding fails 7481 } 7482 7483 // Ensure altText is not empty, otherwise use 'image' 7484 altText = altText || 'image'; 7485 7486 img.setAttribute('alt', altText); 7487 } 7488 7489 // Add width and height attributes if missing 7490 if (!img.hasAttribute('width') || !img.hasAttribute('height')) { 7491 // Handle SVG differently 7492 if (img.src && img.src.endsWith('.svg')) { 7493 // For SVG, use the viewBox to set width and height, if available 7494 fetch(img.src) 7495 .then(response => { 7496 if (!response.ok) { 7497 throw new Error('Failed to fetch SVG: ' + response.status); 7498 } 7499 return response.text(); 7500 }) 7501 .then(svgText => { 7502 var parser = new DOMParser(); 7503 var svgDoc = parser.parseFromString(svgText, "image/svg+xml"); 7504 var svgElement = svgDoc.querySelector('svg'); 7505 7506 if (svgElement) { 7507 var viewBox = svgElement.getAttribute('viewBox'); 7508 if (viewBox) { 7509 var viewBoxValues = viewBox.split(' '); 7510 var width = viewBoxValues[2]; 7511 var height = viewBoxValues[3]; 7512 7513 if (!img.hasAttribute('width')) { 7514 img.setAttribute('width', width); 7515 } 7516 if (!img.hasAttribute('height')) { 7517 img.setAttribute('height', height); 7518 } 7519 } 7520 } 7521 }) 7522 .catch(error => { 7523 // Fallback to default dimensions for SVG 7524 if (!img.hasAttribute('width')) { 7525 img.setAttribute('width', '100'); 7526 } 7527 if (!img.hasAttribute('height')) { 7528 img.setAttribute('height', '100'); 7529 } 7530 }); 7531 } else { 7532 // For non-SVG images, use natural dimensions 7533 var tempImg = new Image(); 7534 tempImg.src = img.src; 7535 7536 tempImg.onload = function() { 7537 if (!img.hasAttribute('width')) { 7538 img.setAttribute('width', tempImg.naturalWidth); 7539 } 7540 if (!img.hasAttribute('height')) { 7541 img.setAttribute('height', tempImg.naturalHeight); 7542 } 7543 }; 7544 7545 tempImg.onerror = function() { 7546 // Fallback to default dimensions 7547 if (!img.hasAttribute('width')) { 7548 img.setAttribute('width', '100'); 7549 } 7550 if (!img.hasAttribute('height')) { 7551 img.setAttribute('height', '100'); 7552 } 7553 }; 7554 } 7555 } 7556 }); 7557 } 7558 7559 document.addEventListener('DOMContentLoaded', function() { 7560 // Run the function initially to catch images already in the DOM 7561 addAttributesToImages(); 7562 7563 // Create a MutationObserver to monitor the DOM for added/changed images 7564 var observer = new MutationObserver(function(mutations) { 7565 mutations.forEach(function(mutation) { 7566 if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') { 7567 // Only process if we have new images or src attribute changes 7568 var hasNewImages = false; 7569 7570 if (mutation.addedNodes.length > 0) { 7571 mutation.addedNodes.forEach(function(node) { 7572 if (node.nodeType === 1) { // Element node 7573 if (node.tagName === 'IMG' || node.querySelectorAll) { 7574 hasNewImages = true; 7575 } 7576 } 7577 }); 7578 } 7579 7580 if (mutation.type === 'attributes' && mutation.attributeName === 'src') { 7581 hasNewImages = true; 7582 } 7583 7584 if (hasNewImages) { 7585 addAttributesToImages(); 7586 } 7587 } 7588 }); 7589 }); 7590 7591 // Start observing the document body for changes 7592 observer.observe(document.body, { 7593 childList: true, // Watch for added or removed nodes 7594 subtree: true, // Watch the entire subtree 7595 attributes: true, // Watch for attribute changes 7596 attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute 7597 }); 7598 }); 7599</script>
7599<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] { 7600 cursor: wait 7601} 7602select.select2-preload { 7603 line-height: initial; 7604} 7605 7606select#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"] { 7607 -webkit-appearance: none; 7608 -moz-appearance: none; 7609 appearance: none; 7610 background-image: url(/images/select2ArrowDown.png) !important; 7611 background-repeat: no-repeat !important; 7612 background-size: 10px 9px !important; 7613 background-position: 99% 16px; 7614 border-radius: 6px; 7615 overflow: hidden; 7616} 7617.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"] { 7618 background-position: 98.2% 12px; 7619} </style>
7619<script> 7620 // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score 7621 $(document).ready(function() { 7622 var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness 7623 7624 // Iterate over each select element that does not have an aria-label 7625 $('select:not([aria-label])').each(function() { 7626 // Use the ID or placeholder as the base for the aria-label, stripping HTML tags 7627 var baseLabel = this.id || $(this).attr('placeholder') || 'select'; 7628 baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim 7629 7630 // Ensure uniqueness of each aria-label 7631 ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1; 7632 var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel]; 7633 7634 // Truncate aria-label to 100 characters 7635 ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel; 7636 7637 // Set the aria-label attribute to the unique label 7638 $(this).attr('aria-label', ariaLabel); 7639 }); 7640 }); 7641</script>
vendor: 2 bytes, line 7641
7641
7642<script type="application/ld+json"> 7643{ 7644 "@context": "https://schema.org", 7645 "@graph": [ 7646 { 7647 "@type": "WebSite", 7648 "@id": "https://www.thecatholicbest.com/#website", 7649 "name": "The Catholic Best", 7650 "url": "https://www.thecatholicbest.com/", 7651 "inLanguage": "en-US", 7652 "potentialAction": { 7653 "@type": "SearchAction", 7654 "target": "https://www.thecatholicbest.com/sitesearch?q={search_term_string}", 7655 "query-input": "required name=search_term_string", 7656 "name": "Search Directory: The Catholic Best" 7657 }, 7658 "publisher": { 7659 "@id": "https://www.thecatholicbest.com/#organization" 7660 } 7661 }, 7662 { 7663 "@type": "Organization", 7664 "@id": "https://www.thecatholicbest.com/#organization", 7665 "name": "The Catholic Best", 7666 "description": "Search the most complete directory of all things Catholic. Find Catholic speakers, podcasts, businesses, etc.", 7667 "url": "https://www.thecatholicbest.com/", 7668 "mainEntityOfPage": { 7669 "@type": "WebPage", 7670 "@id": "https://www.thecatholicbest.com/#webpage" 7671 }, 7672 "contactPoint": [ 7673 { 7674 "@type": "ContactPoint", 7675 "email": "[email protected]", 7676 "contactType": "customer support", 7677 "availableLanguage": [ 7678 "en" 7679 ], 7680 "areaServed": "US" 7681 } 7682 ], 7683 "areaServed": { 7684 "@type": "Country", 7685 "name": "US" 7686 }, 7687 "sameAs": [ 7688 "https://www.facebook.com/thecatholicbest", 7689 "https://www.youtube.com/@thecatholicbest", 7690 "https://www.instagram.com/thecatholicbest/" 7691 ], 7692 "logo": { 7693 "@type": "ImageObject", 7694 "@id": "https://www.thecatholicbest.com/#logo", 7695 "url": "/images/Untitled-design-(3).png" 7696 }, 7697 "image": { 7698 "@type": "ImageObject", 7699 "@id": "https://www.thecatholicbest.com/#image", 7700 "url": "/images/Untitled-design-(3).png" 7701 }, 7702 "keywords": [ 7703 "Catholic Businesses", 7704 "Catholic Speakers", 7705 "Catholic Podcasts", 7706 "Catholic Shops", 7707 "Catholic Medical Professional", 7708 "Catholic Coaches", 7709 "Catholic Consultants", 7710 "Catholic Events", 7711 "The Catholic Best", 7712 "Listing", 7713 "Catholic" 7714 ] 7715 } 7716 ] 7717}</script>
7717 7718
7719<script> 7720// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete 7721(function() { 7722 if (!document.querySelector('link[href*="bootstrap-icons"]')) { 7723 var link = document.createElement('link'); 7724 link.rel = 'stylesheet'; 7725 link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1'; 7726 document.head.appendChild(link); 7727 } 7728})(); 7729</script>
7729<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 7729-7730
7729 7730<script async src="https://www.googletagmanager.com/gtag/js?id=
7730G-XQ7G76WXWZ
vendor: 13 bytes, line 7730
7730"></script>
7731<script> 7732
vendor: 138 bytes, lines 7732-7736
7732window.dataLayer = window.dataLayer || []; 7733 function gtag(){dataLayer.push(arguments);} 7734 gtag('js', new Date()); 7735 7736 gtag('config', '
7736G-XQ7G76WXWZ
vendor: 5 bytes, line 7736
7736');
7737</script>
7737 7738<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input { 7739 border-radius: 0 8px 8px 0 !important; 7740 } 7741.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead { 7742 display: inline-block; 7743 height: 25px; 7744 position: relative; 7745 width: 100%; 7746} 7747.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) { 7748 width: inherit; 7749} 7750.normal-autosuggest .twitter-typeahead .clear_content.medium{ 7751 bottom: 0px; 7752} 7753.sm-autosuggest .twitter-typeahead .clear_content.small{ 7754 bottom: -4px; 7755} 7756.md-autosuggest.input-group .twitter-typeahead .clear_content.medium { 7757 bottom: -2px; 7758} 7759.md-autosuggest .twitter-typeahead { 7760 height: 32px; 7761} 7762.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead { 7763 height: 38px; 7764 vertical-align: top; 7765} 7766.md-autosuggest-input + .clear_content.medium { 7767 bottom: 0px; 7768} 7769.large-autosuggest .twitter-typeahead { 7770 height: 40px; 7771} 7772.normal-autosuggest .twitter-typeahead{ 7773 height: 38px; 7774} 7775.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint { 7776 background: #fff !important; 7777 border: 1px solid #ccc!important; 7778 border-radius: 0 8px 8px 0; 7779 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important; 7780 color: transparent; 7781 left: 0; 7782 padding: 4px 11px; 7783 position: absolute; 7784 top: 0; 7785 width: 100%; 7786 font-size:12px; 7787} 7788.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px} 7789.md-autosuggest .twitter-typeahead .tt-hint { 7790 height: 100%; 7791 background: #ffffff none repeat scroll 0 0 !important; 7792 border: 1px solid #cccccc !important; 7793 border-radius: 0 8px 8px 0; 7794 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important; 7795 color: rgba(0, 0, 0, 0); 7796 left: 0; 7797 padding: 6px 11px; 7798 position: absolute; 7799 top: 0; 7800 width: 100%; 7801} 7802.large-autosuggest {background: #fff !important;border-radius:10px;} 7803.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;} 7804 .input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint { 7805 border-radius: 0 10px 10px 0!important; 7806 } 7807 .large-autosuggest .twitter-typeahead .tt-hint { 7808 background: #fff !important; 7809 border: 1px solid #ccc!important; 7810 border-radius: 10px; 7811 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important; 7812 color: transparent; 7813 left: 0; 7814 position: absolute; 7815 top: 0; 7816 width: 100%; 7817 font-size: 18px; 7818 height: 46px; 7819 line-height: 1.33333; 7820 padding: 10px 15px; 7821} 7822.tt-dataset .empty-message { 7823 display: none !important; 7824} 7825.twitter-typeahead .tt-query {background-color:#fff!important} 7826.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;} 7827span.tt-dropdown-menu { 7828 border: 1px solid #FCFCFC; 7829 border-radius: 5px; 7830 box-shadow: 0 5px 10px rgba(0,0,0,.2); 7831 width: 100% !important; 7832} 7833.tt-is-under-cursor a.suggest-link { 7834 background: #55ACEE; 7835} 7836 7837.tt-is-under-cursor .media-heading, 7838.tt-is-under-cursor .suggest-origin, 7839.tt-is-under-cursor .location{ 7840 color:#fff!important; 7841} 7842.tt-suggestion .media .media-body .suggest-origin { 7843 color: rgba(45, 91, 137,0.9); 7844 padding: 1px 0; 7845 border-radius: 6px; 7846 font-weight: bold; 7847 line-height: 12px; 7848} 7849.tt-suggestion { 7850 background: #fff; 7851 border-bottom: 1px solid #eee; 7852 -webkit-transition: all 0.3s ease-in-out; 7853 -moz-transition: all 0.3s ease-in-out; 7854 -o-transition: all 0.3s ease-in-out; 7855 transition: all 0.3s ease-in-out; 7856} 7857body .tt-suggestions .media.br-bottom img { 7858 max-width: 45px; 7859 height: auto; 7860} 7861body .tt-suggestions .media-body span { 7862 font-size: 10px; 7863} 7864body .tt-suggestions .media-body h4 { 7865 font-size: 12px; 7866 margin: 2px 0px; 7867 text-transform: capitalize; 7868} 7869a.suggest-link { 7870 padding: 5px; 7871 display: block; 7872} 7873a.suggest-link img { 7874 border-radius: 100px; 7875 display: block; 7876 margin: 0 auto; 7877 height: 100%!important; 7878 width: 100%; 7879 object-fit: cover; 7880} 7881.left-suggest-col {
7882 display: inline-block; 7883 vertical-align: middle; 7884 width: 44px; 7885 height: 44px; 7886} 7887.right-suggest-col { 7888 display: inline-block; 7889 padding-left: 1%; 7890 text-align: left; 7891 vertical-align: middle; 7892 width: calc(100% - 1% - 50px); 7893} 7894p.media-heading { 7895 color: #333; 7896 font-size: 12px; 7897 font-weight: 600; 7898 margin-bottom: 0; 7899} 7900p.suggest-origin { 7901 font-size: 10px; 7902 color: #333; 7903 margin:0; 7904} 7905p.location { 7906 color: #333; 7907 font-size: 10px; 7908 margin: 2px 0; 7909} 7910body .tt-is-under-cursor a.suggest-link { 7911 background: #F7F7F7; 7912} 7913body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location { 7914 color: #333!important; 7915} 7916a.suggest-link[data-heading="heading"] { 7917 pointer-events: none; 7918 cursor: default; 7919 text-decoration: none; 7920} 7921body .tt-is-under-cursor a.suggest-link[data-heading="heading"] { 7922 background: rgb(232, 190, 5); 7923} 7924/* --- all the novalue css --- */ 7925a.suggest-link .suggest-origin[data-state="novalue"] { 7926 display: none; 7927} 7928a.suggest-link .location[data-state="novalue"] { 7929 display: none; 7930} 7931a.suggest-link img[data-state="novalue"] { 7932 display: none; 7933} 7934a.suggest-link .suggest-origin[data-state="heading"] { 7935 display: none; 7936} 7937a.suggest-link .media-heading[data-heading="heading"] { 7938 color:rgb(0, 0, 0)!important; 7939 font-weight: bold; 7940 padding: 4px; 7941 font-size: 13px; 7942} 7943.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] { 7944 display: none; 7945} 7946.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] { 7947 width: 100%; 7948} 7949a.suggest-link[href="novalue"] { 7950 cursor: default !important; 7951 pointer-events: none; 7952} 7953a.suggest-link[data-heading="heading"] { 7954 background-color: rgb(232, 190, 5); 7955} 7956div.content-shell { 7957 overflow: inherit; 7958} 7959span.tt-dropdown-menu div { 7960 float: none; 7961} 7962.tt-menu { 7963 border-radius: 0 0 6px 6px; 7964 box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); 7965 overflow: hidden; 7966 width: 100%; 7967 z-index: 150 !important; 7968} 7969.tt-menu .tt-dataset { 7970 overflow-y: auto; 7971 max-height: 200px; 7972} </style>
7972<script type="text/javascript"> 7973 7974 if (typeof decodeHtml != "function") { 7975 function decodeHtml(html) { 7976 var txt = document.createElement("textarea"); 7977 txt.innerHTML = html; 7978 return txt.value; 7979 } 7980 } 7981 function initializeTypeheadArticles_search() { 7982 var articles_searchEngine = new Bloodhound({ 7983 initialize: false, 7984 datumTokenizer: function (d) { 7985 return Bloodhound.tokenizers.whitespace(value); 7986 }, 7987 queryTokenizer: Bloodhound.tokenizers.whitespace, 7988 remote: { 7989 url: `/api/suggest/json/get/15,data_posts,Community Articles,1,1,1,1,1,3?tID=38&q=%QUERY`, 7990 wildcard: '%QUERY', 7991 filter: function (response) { 7992 7993 if (response != null) { 7994 //var response = response.slice(1); 7995 $.each( 7996 response, function (key, value) { 7997 response[key]['value'] = decodeHtml(value['value']); 7998 response[key]['comes_f'] = decodeHtml(value['comes_f']); 7999 response[key]['location'] = decodeHtml(value['location']); 8000 8001 if (response[key]['value'].indexOf('-/-') >= 0) { 8002 var splitResult = response[key]['value'].split('-/-'); 8003 response[key]['value'] = splitResult[0]; 8004 } 8005 } 8006 ); 8007 8008 } else { 8009 response = {error: "null"}; 8010 } 8011 8012 return response; 8013 } 8014 } 8015 }); 8016 var articles_searchDataSrc = articles_searchEngine.initialize(); 8017 8018 articles_searchDataSrc 8019 .done(function () { /*console.log('Autosuggestions engine initialized.'); */ 8020 }) 8021 .fail(function () { /*console.log('err, something went wrong while initializing autosuggestions engine:(');*/ 8022 }) 8023 8024 $('.articles_search').typeahead({ 8025 minLength: 2, 8026 highlight: true, 8027 hint: false }, 8028 { 8029 display: 'value', 8030 source: articles_searchEngine.ttAdapter(), 8031 limit: 5, 8032 templates: { 8033 empty: [ 8034 '<div class="empty-message">', 8035 'Result not found', 8036 '</div>' 8037 ].join(" "), 8038 notFound: [ 8039 '<div class="notFound-message">', 8040 'Result not found', 8041 '</div>' 8042 ].join(" "), 8043 suggestion: function (data) { 8044 8045 if (data == "null") { 8046 strTemplate = '<div class="empty-message">Result not found</div>'; 8047 8048 } else { 8049 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> '; 8050 8051 if ((data.link == undefined) || (data.link == "") || (data.link == "novalue")) { 8052 strTemplate = strTemplate.replace(/href=".*?"/, "href='#'"); 8053 } 8054 8055 if ((data.photo == undefined) || (data.photo == "") || (data.photo == "novalue")) { 8056 strTemplate = strTemplate.replace(/<img src=".*?>/, ""); 8057 } 8058 } 8059 8060 return strTemplate; 8061 } 8062 }, 8063 }).on('typeahead:selected', function (obj, datum) { 8064 /* 8065 console.log(obj); 8066 console.log(datum); 8067 */ 8068 }); 8069 8070 $('.articles_search').each(function () {
8071 var inputWidth = $(this).outerWidth(); 8072 $(this).siblings('.tt-dropdown-menu').css('width', inputWidth + 'px'); 8073 }); 8074 } 8075 </script>
8075 8076
8076<script type="text/javascript"> 8077 function initializeTypeheadGlobal_search() { 8078 var global_searchEngine = new Bloodhound({ 8079 initialize: false, 8080 datumTokenizer: function (d) { 8081 return Bloodhound.tokenizers.whitespace(value); 8082 }, 8083 queryTokenizer: Bloodhound.tokenizers.whitespace, 8084 remote: { 8085 url: `/api/suggest/json/get/6,users_portfolio_groups,Classifieds,1,1,1,1,1,3|10,users_portfolio_groups,Photo Albums,1,1,1,1,1,3|8,data_posts,Events,1,1,1,1,1,3|9,data_posts,Job Listings,1,1,1,1,1,3|12,users_portfolio_groups,Properties,1,1,1,1,1,3|11,users_portfolio_groups,Products,1,1,1,1,1,3|7,data_posts,Coupons,1,1,1,1,1,3|13,data_posts,Videos,1,1,1,1,1,3|5,data_posts,SoundCloud Posts,1,1,1,1,1,3|14,data_posts,Website Blog Articles,1,1,1,1,1,3|15,data_posts,Community Articles,1,1,1,1,1,3|1,users_data,Member Listings,1,1,1,1,1,3|71,data_posts,Discussions,1,1,1,1,1,3?tID=47&q=%QUERY`, 8086 wildcard: '%QUERY', 8087 filter: function (response) { 8088 8089 if (response != null) { 8090 //var response = response.slice(1); 8091 $.each( 8092 response, function (key, value) { 8093 response[key]['value'] = decodeHtml(value['value']); 8094 response[key]['comes_f'] = decodeHtml(value['comes_f']); 8095 response[key]['location'] = decodeHtml(value['location']); 8096 8097 if (response[key]['value'].indexOf('-/-') >= 0) { 8098 var splitResult = response[key]['value'].split('-/-'); 8099 response[key]['value'] = splitResult[0]; 8100 } 8101 } 8102 ); 8103 8104 } else { 8105 response = {error: "null"}; 8106 } 8107 8108 return response; 8109 } 8110 } 8111 }); 8112 var global_searchDataSrc = global_searchEngine.initialize(); 8113 8114 global_searchDataSrc 8115 .done(function () { /*console.log('Autosuggestions engine initialized.'); */ 8116 }) 8117 .fail(function () { /*console.log('err, something went wrong while initializing autosuggestions engine:(');*/ 8118 }) 8119 8120 $('.global_search').typeahead({ 8121 minLength: 3, 8122 highlight: true, 8123 hint: false }, 8124 { 8125 display: 'value', 8126 source: global_searchEngine.ttAdapter(), 8127 limit: 5, 8128 templates: { 8129 empty: [ 8130 '<div class="empty-message">', 8131 'Result not found', 8132 '</div>' 8133 ].join(" "), 8134 notFound: [ 8135 '<div class="notFound-message">', 8136 'Result not found', 8137 '</div>' 8138 ].join(" "), 8139 suggestion: function (data) { 8140 8141 if (data == "null") { 8142 strTemplate = '<div class="empty-message">Result not found</div>'; 8143 8144 } else { 8145 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> '; 8146 8147 if ((data.link == undefined) || (data.link == "") || (data.link == "novalue")) { 8148 strTemplate = strTemplate.replace(/href=".*?"/, "href='#'"); 8149 } 8150 8151 if ((data.photo == undefined) || (data.photo == "") || (data.photo == "novalue")) { 8152 strTemplate = strTemplate.replace(/<img src=".*?>/, ""); 8153 } 8154 } 8155 8156 return strTemplate; 8157 } 8158 }, 8159 }).on('typeahead:selected', function (obj, datum) { 8160 /* 8161 console.log(obj); 8162 console.log(datum); 8163 */ 8164 }); 8165 8166 $('.global_search').each(function () {
8167 var inputWidth = $(this).outerWidth(); 8168 $(this).siblings('.tt-dropdown-menu').css('width', inputWidth + 'px'); 8169 }); 8170 } 8171 </script>
8171 8172
8172<script> 8173 let typeheadElement = '.articles_search,.global_search'; 8174 let TypeheadNameListFunction = 'initializeTypeheadArticles_search,initializeTypeheadGlobal_search'; 8175 let typeheadFormElement = undefined; 8176 window.addEventListener('load', () => { 8177 if(typeheadElement.length > 1) { 8178 typeheadFormElement = document.querySelectorAll(typeheadElement); 8179 } 8180 if (typeof typeheadFormElement != "undefined") { 8181 for (let i = 0; i < typeheadFormElement.length; i++) { 8182 let closestForm = typeheadFormElement[i].closest('form'); 8183 if (typeof closestForm != "undefined" && closestForm != null) { 8184 closestForm.addEventListener('focus', typeheadFormClick, false); 8185 } 8186 typeheadFormElement[i].addEventListener('focus', typeheadFormClick, false); 8187 } 8188 } 8189 }); 8190 function initializeTypehead(){ 8191 let splitFunctionNames= TypeheadNameListFunction.split(','); 8192 for ( let funcName of splitFunctionNames) 8193 if (typeof funcName != 'function') { 8194 window[funcName](); // execute the function 8195 8196 } 8197 } 8198 function typeheadFormClick(event) { 8199 8200 let head = document.getElementsByTagName('head')[0]; 8201 let script = document.createElement('script'); 8202 let elementClicked = event.target; 8203 script.type = 'text/javascript'; 8204 script.src = "https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.bundle.min.js"; 8205 script.onload = function () { 8206 initializeTypehead(); 8207 elementClicked.focus(); 8208 }; 8209 head.appendChild(script); 8210 if (typeof typeheadFormElement != "undefined") { 8211 for (let i = 0; i < typeheadFormElement.length; i++) { 8212 let closestForm = typeheadFormElement[i].closest('form'); 8213 if (typeof closestForm != "undefined" && closestForm != null) { 8214 closestForm.removeEventListener('focus', typeheadFormClick, false); 8215 } 8216 typeheadFormElement[i].removeEventListener('focus', typeheadFormClick, false) 8217 } 8218 } 8219 } 8220 8221 8222 </script>
8222 8223 8224
8224<script> 8225 window.addEventListener('load', () => { 8226 let embedlyClass = document.querySelector('.fr-embedly'); 8227 if (typeof embedlyClass != "undefined" && embedlyClass != null) { 8228 let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js"; 8229 let head = document.getElementsByTagName("head")[0]; 8230 let script = document.createElement('script'); 8231 script.type = 'text/javascript'; 8232 script.src = embedlyURI; 8233 script.async = true; 8234 script.onload = function() { 8235 setTimeout(function() { 8236 if (typeof embedly !== 'undefined' && embedly.card) { 8237 document.querySelectorAll('.embedly-card').forEach(function(card) { 8238 embedly.card(card); 8239 }); 8240 } 8241 }, 500); 8242 }; 8243 head.appendChild(script); 8244 } 8245 }); 8246</script>
8246<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
8246<script> 8247 $(function () { 8248 $(".lazyloader").Lazy({ 8249 afterLoad: function(element) { 8250 $(".gridView.activeView").click(); 8251 } 8252 }); 8253 8254 }); 8255 $("button[class*='slick'],button[id*='slick']").click(function () { 8256 $(this).parents(".row").find(".lazyloader").lazy({ 8257 bind: "event", 8258 delay: 0 8259 }); 8260 }); 8261 $("[class*='slick'],[id*='slick']").on("swipe",function(){ 8262 $(this).parents(".row").find(".lazyloader").lazy({ 8263 bind: "event", 8264 delay: 0 8265 }); 8266 }); 8267 </script>
8267<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
8267 8268 </body> 8269 </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.