PageSourceSearch

https://www.thecatholicbest.com/blog

html thecatholicbest.com collected 2026-10-07 04:02:46 UTC 445,459 bytes, 8,269 lines download raw bytes

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&amp;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&nbsp;Natural Family Planning Awareness Week!&nbsp;We interviewed Anna Lacey of Foremost Fertility Care and Christina Valenzuela of Pearl and Thistle to learn some more about Natural Family Planning (NFP).&nbsp;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 &#39;detox&#39; 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&#39;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&#39;s teachings and upheld Catholic values. Dr. Hilger&#39;s and his team did just that.Christina:&nbsp;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.&nbsp;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&#39;s College, an all women&#39;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.&nbsp;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&#39;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, &quot;If there is an obvious need in this area, someone should step in and fill it!&quot; Clearly the Holy Spirit had plans for me to answer that call.&nbsp;And it&#39;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 &amp; 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.&nbsp;Q: How has Natural Family Planning impacted you?&nbsp;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, &quot;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.&nbsp;&quot;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.&quot;Christina: I&#39;ll be honest to say that it has impacted me in both positive and negative ways. It&#39;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&#39;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.&nbsp;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&#39;m usually exhausted. What a great gift! And what a beautiful example that was for our children as well.&nbsp;Q: Is there anything else you&#39;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&nbsp;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&#39;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.&nbsp;Christina: I would love to share about my brand new book which was just released through Our Sunday Visitor, called&nbsp;The Language of Your Body: Embracing God&#39;s Design for Your Cycle. It&#39;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&#39;s image. If anyone is interested in learning more about that book or my work, they can visit&nbsp;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&nbsp;     Natural Family Planning Awareness Week!   &nbsp;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.&nbsp;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&mdash;his children&mdash;to do the same. He was deeply devoted to St Joseph, especially in his role as the Foster Father to Jesus.&nbsp;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.&nbsp;The obituary didn&rsquo;t mention my father&rsquo;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&mdash;but the focus wasn&rsquo;t on such things. Rather, it was with his spiritual and familial accomplishments.&nbsp;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.&nbsp;As I reflect on the memories of my father, the obituary&rsquo;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 &ldquo;be kind&rdquo; and &ldquo;be a good person&rdquo; are often given lip service&mdash;but how many people actually walk the walk of being a kind person, a good person?&nbsp;I stand at the grave of my father, and I am convicted.&nbsp;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.&nbsp;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&mdash;may they in turn inspire the people they come in contact with.&nbsp;In this day&rsquo;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&mdash;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.&nbsp;Let us focus on what is important&mdash;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&rsquo;s greatest accomplishment to date is being father to 7 great kids, 5 boys and 2 girls.&nbsp;",
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.&nbsp;  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&#039;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, &quot;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.&quot; 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.&nbsp;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.&nbsp;Whether it&#39;s for financial advice, medical care, or legal matters, having a Catholic professional by your side can make a significant difference. Let&#39;s look at why it&#39;s crucial to have a Catholic professional in various aspects of our lives.Someone You Can Trust&nbsp;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.&nbsp;Building Up the Catholic Ecosystem&nbsp;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.&nbsp;Examples of Industries Requiring Catholic Professionals&nbsp;Financial Advisors: The realm of financial planning is one where ethical considerations hold immense significance. According to Bishop Gregory Parks, chairman of the USCCB&rsquo;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.&nbsp;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, &quot;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).&quot; This is the premise by which all medical decisions should be made.&nbsp;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.&nbsp;Find Catholic Medical Professionals on The Catholic Best.Lawyers:&nbsp;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.&nbsp;Embracing Values in Work&nbsp;According to the Catechism of the Catholic Church paragraph 2427, &quot;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: &#39;If any one will not work, let him not eat.&#39; Work honors the Creator&#39;
2621s gifts and the talents received from him. It can also be redemptive.&quot;&nbsp;The work you provide is not only a reflection of God&#39;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&#39;s important to find a reliable Catholic professional. &nbsp;&nbsp;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.&nbsp;Related Resources&nbsp;United States Conference of Catholic Bishops- Ethical and Religious Directives in Health Care&nbsp;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, &quot;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.&nbsp;Co-PlayPlay with them instead of letting them play by themselves! Reframe technology to be a &ldquo;we&rdquo; activity instead of an &ldquo;I&rdquo; 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.&nbsp;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.&nbsp;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/&nbsp;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.&nbsp;Parental controls are typically a separate app that you install on your child&rsquo;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&#39; House. Before saying &ldquo;yes&rdquo; 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.&nbsp;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&rsquo;s gut.5. Apps &ndash; 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&rsquo; and devices&rsquo; 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&rsquo;s built in parental controls.&nbsp;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 &ldquo;be enough&rdquo;. 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.&nbsp;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/&nbsp;Visit my resources page: https://altosolutions.us/resources/And lastly, pray, hope, and don&rsquo;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&nbsp;As a psychologist, I&rsquo;ve worked with many Christians who think it&rsquo;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.&nbsp;Science says emotions are like messages from our brains that tell us how we feel about something. They&rsquo;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.&nbsp;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.&nbsp;Emotions are not just in our heads&mdash;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&rsquo;s way of responding to what our brain is telling us.&nbsp;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.&nbsp;It&rsquo;s important to recognize that emotions themselves are not inherently good or bad; rather, it&rsquo;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.&nbsp;Cultivating Emotional Awareness for Spiritual Growth&nbsp;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.&nbsp;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&rsquo;s challenges with resilience and clarity.&nbsp;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.&nbsp;Practical Strategies for Faith-Integrated Emotion Regulation&nbsp;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.&nbsp;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&rsquo;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.&nbsp;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.&nbsp;Using Emotions as a Tool for Discerning God&rsquo;s Will&nbsp;Discernment plays a crucial role in understanding God&rsquo;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&rsquo;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&nbsp;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. &nbsp;As an Amazon Associate, we earn from qualifying purchases.Catholic Gifts:Sock Religious&nbsp;Socks (Amazon):&nbsp;These socks are always a win. Any Catholic School teacher is sure to love a fun pair of socks from Sock Religious.&nbsp;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; &nbsp;Just Love Prints, Saint Sprites, Prostrada Designs and SaintSprouts.Catholic Lanyard: This Lanyard from Brick House in the City has the quote, &ldquo;Love the children first, then teach them.&rdquo; 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!&nbsp;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.&nbsp;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&rsquo;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&rsquo;s ok to ask your teacher what their favorite snack, saint, drink, lunch spot, store is, etc.&nbsp;As Teacher Appreciation Week approaches and we reflect on the invaluable role our Catholic School teachers play in shaping young minds, it&#39;s the perfect time to express our gratitude with thoughtful gifts, or another expression of appreciation. Whether it&#39;s a pair of whimsical Sock Religious socks, inspiring Catholic stickers, or a meaningful book like &quot;A Saint Squad for Teachers,&quot; each gift embodies appreciation for their dedication. Let&#39;s celebrate our teachers and all they do to nurture our children&#39;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&nbsp;     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&nbsp;Matt Chicoine from The Simple CatholicAs we celebrate the various seasons and the celebration of new Sacraments in the Church, there&#39;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.&nbsp;*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. &nbsp;As an Amazon Associate, we earn from qualifying purchases.1. Building the Christmas Story: Lego Nativity Set&nbsp;For Christmas, consider a creative marvel that transforms the timeless story of Jesus&#39; birth into an interactive experience. With each block, young hearts embark on a journey that blends play and prayer.&nbsp;Purchase on Amazon2. Where Faith Takes Center Stage: Wooden Mass Set&nbsp;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.&nbsp;Purchase on Catholic Supply3. Unwrap Faith-Filled Adventures: Catholic Family Crate&nbsp;Make family time more meaningful with the Catholic Family Crate&mdash;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.&nbsp;Go To Catholic Family CrateAvoid getting bored with these awesome Catholic games below:&nbsp;4. Fun and Faith in Every Card: Catholic Card Game&nbsp;Bring the family together with the Catholic Card Game&mdash;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.&nbsp;CatholicCardGame.com5. Journeying Through Advent: Road to Bethlehem Game&nbsp;The Road to Bethlehem Game by Holy Heroes offers more than just an adventure&mdash;it&#39;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.&nbsp;Purchase at Holy HeroesGreat Catholic Book Ideas:&nbsp;6. Building Faith Brick by Brick: Lego Catechism&nbsp;Introduce your child to the teachings of the Catholic Church with the Lego Catechism&mdash;a unique blend of the beloved Lego aesthetic and engaging content. It&#39;
3053s not just a book; it&#39;s an interactive and enjoyable pathway for young minds to explore their faith.&nbsp;Purchase on Holy Heroes7. A Magical Journey into Faith: Chronicles of Narnia&nbsp;Captivate young readers with the Chronicles of Narnia series by C.S. Lewis&mdash;a timeless adventure that weaves in valuable lessons of virtue, courage, and faith.&nbsp;Purchase on Amazon8. Unlocking Chesterton&#39;s Wisdom: The Father Brown Reader&nbsp;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.&nbsp;Purchase on Amazon9. Exploring Sacred Meanings: Book of Catholic Signs &amp; Symbols by Amy Welborn&nbsp;Dive into the rich symbolism of Catholicism with the Book of Catholic Signs &amp; Symbols by Amy Welborn. This informative guide leads young minds through the meanings behind various signs and symbols within the Catholic faith.&nbsp;Purchase on Amazon10. A Spiritual Cinematic Experience: Brother Francis Movies and Formed Subscription&nbsp;Enrich your child&#39;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.&nbsp;Formed.org11. Tangible Treasures of Faith: Sacramentals&nbsp;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&mdash;rosaries, saint medals, and scapulars.&nbsp;A couple places to visit for such gifts include catholiccompany.com and www.beaheart.com. You can also visit your local Catholic bookstore. &nbsp;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&nbsp;     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&nbsp;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&#39;s silent devotion and unwavering faith speak volumes, offering a great example for believers, particularly men, to imitate.&nbsp;Cardinal Robert Sarah wrote in The Power of Silence: Against the Dictatorship of Noise, &quot;Man must make a choice: God or nothing, silence or noise.&quot; Through the lens of this wisdom, Saint Joseph emerges as a paragon of choosing God amidst life&#39;s clamors. His silent obedience to the divine will, notably demonstrated in his response to the angel&#39;s warning to flee from King Herod&#39;s wrath, showcases a complete trust and dependence on God.&nbsp;Amidst the chaos and distractions of modern life, Saint Joseph&#39;s example reminds us of the importance of seeking God&#39;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&#39;s providence and seeking His help in navigating life&#39;s challenges.&nbsp;Celebrating Saint Joseph&#39;s Feast: Embracing Silence and Reflection&nbsp;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.&nbsp;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.&nbsp;Exploring the Titles of Saint Joseph&nbsp;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 &quot;Terror of the Demons&quot; may be the most renowned, there are many other interesting designations by which to invoke Saint Joseph in prayer:&nbsp;Mirror of PatienceLover of Poverty&nbsp;Light of PatriarchsJoseph Most (Strong, Chaste, Obedient, Just)&nbsp;Protector of Holy ChurchGlory of Home Life&nbsp;Patron of the Dying&nbsp;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.&nbsp;Patron of the Universal Church&nbsp;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&#39;s obedience to the Father&#39;s plan and his pivotal role in salvation history underscore his greatness and significance in the life of the Church.&nbsp;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.&nbsp;Additional Ways to Celebrate&nbsp;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&#39;s example of paternal love and devotion.&nbsp;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.&nbsp;In commemorating the feast of Saint Joseph, let us strive to copy his virtues of humility, obedience, and unwavering faith, trusting in God&#39;
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.&nbsp;Related Resources&nbsp;Consecration to St. Joseph&nbsp;New Comic Book about Saint Joseph by Fr. Donald CallowayFind Saint Joseph Art - Perfect Gifts for Father&#39;s DayWhat are some ways you celebrate the Feast of St. Joseph? &nbsp;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&#39;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&nbsp;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&#39;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&#39;t have to be complicated. The key is sincerity and consistency. Begin your day with an &quot;Our Father&quot; or &quot;Hail Mary,&quot; expressing gratitude for the blessings in your life. Throughout the day, incorporate the powerful &quot;Jesus Prayer&quot;: &quot;Lord Jesus Christ, Son of God, have mercy upon me, a sinner.&quot; 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&#39;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 &quot;The Bible in a Year&quot; and &quot;Catechism in a Year&quot; 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&#39;s Novenas offer structured approaches to spiritual growth, providing a framework for a transformative year.See 2024&#39;s Best Programs to &quot;Start the New Year off Right Programs.&quot;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">&times;
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&region=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">&times;</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">&times;</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.