PageSourceSearch

https://www.thetrainerdirectory.com/search_results

html thetrainerdirectory.com collected 2026-10-08 05:53:31 UTC 380,941 bytes, 7,791 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/favicon.png">
13    <link rel="icon" type="image/png" href="/images/favicon.png">
14	
15    <!-- Site Meta Data -->
16    <title>Trainers - Find &amp; Compare Professional Professionals</title>
17    <meta name="description" content="Search our Professional database and connect with top rated Trainers.">
18    <meta name="keywords" content="Professional,Trainer,Trainers,search Trainers,find Trainers">
19    <meta name="robots" content="index, follow">
20
21    <!-- Canonical URL -->
22	<link rel="canonical" href="https://www.thetrainerdirectory.com/search_results">	
23	<link rel="alternate" type="application/rss+xml" title="The Trainer Directory RSS Feed" href="https://www.thetrainerdirectory.com/rss" />
24	
25    	<!-- Social Media Meta Data -->
26    <meta property="og:type" content="website">
27    <meta property="og:url" content="https://www.thetrainerdirectory.com/search_results">
28    <meta property="og:site_name" content="The Trainer Directory">
29    <meta property="og:title" content="The Best Trainers Rated By Past Clients">
30    <meta property="og:description" content="Who is the best Trainer? Compare and connect with the top rated Trainers.">
31    <meta property="og:image" content="https://www.thetrainerdirectory.com/images/background.jpg">
32	
32<script>
33	if (window.innerWidth <= 768 && !document.referrer) {
34	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(245, 247, 250);color:rgb(41, 41, 41);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 Trainer Directory</span></div><style>@keyframes spin{to{transform:rotate(360deg);}}</style>');
35	setTimeout(function(){var p=document.getElementById('mobile-loading-message');if(p){p.style.display='none';p.classList.add('hidden-xs','hide');}},7500);}
36	</script>
36
37
38	<!-- Preload -->
39	<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>
40	<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap" fetchpriority="high">
41		
42    <!-- Non-Critical Stylesheet - Render Before Critical Styles -->
43	<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>
44	<noscript>
45		<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css" crossorigin>
46	</noscript>
47		
48	<!-- Critical Stylesheet -->
49	<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" crossorigin>
50    	
51    <!-- Google Fonts Stylesheet -->    
52    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap">
53    <noscript>
54        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nunito:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap">
55    </noscript>
56	
57    <!-- FontAwesome Stylesheet -->
58    <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>
59    <noscript>
60        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
61    </noscript>
62	
63    <!-- Bootstrap Icons Stylesheet -->
64    <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>
65    <noscript>
66        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
67    </noscript>
68	
69    <!-- Critical JavaScript -->
70    
70<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/jquery.min.js"></script>
70
71	
71<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/bootstrap.min.js"></script>
71
72	
72<script>
73		/* jQuery.event.special.touchstart = {
74			setup: function( _, ns, handle ) {
75				this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
76			}
77		}; */
78		jQuery.event.special.touchmove = {
79			setup: function( _, ns, handle ) {
80				this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
81			}
82		};
83		jQuery.event.special.wheel = {
84			setup: function( _, ns, handle ){
85				this.addEventListener("wheel", handle, { passive: true });
86			}
87		};
88		jQuery.event.special.mousewheel = {
89			setup: function( _, ns, handle ){
90				this.addEventListener("mousewheel", handle, { passive: true });
91			}
92		};
93	</script>
93
94
95	<!-- Breadcrumb Position -->
96	<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>
97	
97<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>
97
98		
99	
100    <!-- Prefetch -->
101    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script">
102    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0" as="script">
103
104        
105</head>
106
107<body class="general-session"><!--
108IMPORTANT: 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.
109
110INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section.
111-->
112<style>
113    .upload-form-field::before {
114        content: "choose files";
115        display: inline-block;
116        border: 1px solid #999;
117        border-radius: 3px;
118        padding: 5px 8px;
119    }
120    #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 {
121        white-space: nowrap !important;
122    }
123    /* Main Website Design */
124    body,.modal-header,.modal-content,.modal-body,.modal-footer {
125        background: rgb(245, 247, 250);
126        color: rgb(41, 41, 41);
127        font-family: 'Nunito';
128        font-size: 16px;
129    }
130    .select2-container .select2-choice {
131        font-family: 'Nunito'!important;
132    }
133        html{
134        background: rgb(0, 45, 98)    }
135        .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow {
136        color: #000 !important;
137    }    
138    a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) {
139        color: rgb(51, 122, 183);
140    }
141    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 {
142        color: rgb(35, 82, 124);
143    }
144    .breadcrumb a{
145            color: rgba(119, 119, 119,0.9);
146    }
147    .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active {
148        color: rgb(119, 119, 119);
149    }
150    .help-inline, .help-block {
151            color: rgba(41, 41, 41,0.5);
152    }
153    .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
154        font-family: 'Ubuntu';
155    }
156        /* Header Design */
157    .header, .mobile_website_logo img {
158        background: rgb(245, 247, 250);
159    }
160    .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span {
161        color: rgb(41, 41, 41);
162            font-size: 16px;
163        }
164    .header .mini-nav li a:not(.btn):hover {
165            color: rgba(41, 41, 41,0.95);
166    }
167    .header .btn_get_listed {
168		background-color: rgb(255, 186, 8);
169        border: 1px solid rgb(255, 186, 8);
170        color: rgb(245, 247, 250)!important;
171    }
172    .header .btn_get_listed:hover, .header .btn_get_listed:focus {
173		        background-color: rgba(255, 186, 8,0.97);        
174    }
175    .header .btn_search {
176            background-color: rgba(0, 45, 98,0.97);
177        border: 1px solid rgb(0, 45, 98);
178        color: rgb(255, 255, 255);
179    }
180    .header .btn_search:hover, .header .btn_search:focus {
181        background-color: rgb(0, 45, 98);
182        color: rgb(255, 255, 255);
183    }
184
185    /* Logo Design */
186    .logo,.logo:hover,.logo:focus {
187        color: rgb(24, 46, 69);
188        font-family: 'Nunito';
189    }
190    .logo .slogan {
191        color: rgb(153, 153, 153);
192    }
193    .logo .fa {
194        color: rgb(24, 46, 69);
195        }
196
197    /* Main Menu Design */
198    .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
199        background: rgb(255, 255, 255);
200        position: sticky;
201        z-index: 1;
202            top: 0px;
203        }
204	/* Google Translate When Main Menu Sticky Top */
205	    @media only screen and (max-width: 1100px) {
206        .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
207                    top: 50px;
208                }
209    }
210    .header ul.nav.navbar-nav li ul {
211        background-color: rgb(255, 255, 255);
212    }
213    .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span {
214        color: rgb(24, 46, 69);
215                font-weight: 400;
216            }
217    .header .navbar-default, .pagination > .active > a {
218        background-color: rgb(0, 45, 98);
219    }
220    .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{
221        border-left-color: rgb(24, 46, 69);
222        background: rgb(24, 46, 69);
223        color: rgb(255, 255, 255);
224    }
225    .navbar-default .navbar-toggle .icon-bar {
226        background-color: rgb(255, 255, 255);
227    }
228	.user_sidebar, .main_menu, .compact-mobile-search {
229        color: rgb(255, 255, 255);
230    }
231    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span  {
232        color: rgb(255, 255, 255);
233                font-weight: 400;
234            }
235    .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 {
236        color: rgb(250, 250, 250);
237    }
238    .navbar-default .navbar-nav > li {
239        font-family: 'Ubuntu';
240    }
241    
242        #website_logo .logo-image {
243        max-width: 320px;
244    }
245    
246
247    /* Footer Design */
248    .footer {
249        background-color: rgb(0, 45, 98);
250        display: block;
251    }
252    .footer, .footer_menu a,.footer_terms a,.footer_menu .content {
253        color: rgb(239, 239, 239);
254    }
255    .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus {
256        color: rgb(255, 255, 255);
257    }
258    .footer_menu .head {
259        color: rgb(255, 255, 255);
260    }
261    .btn_footer_get_listed {
262		background-color: rgb(255, 186, 8);
263        border: 1px solid rgb(255, 186, 8);
264        color: rgb(255, 255, 255)!important;
265    }
266    .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{
267				background-color: rgba(255, 186, 8,0.95);        
268    }
269    
270    /* Homepage Design */
271        .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 {
272        font-family: 'Ubuntu';
273    }
274    .homepage_settings h1, .homepage_map h1 {
275        color: rgb(255, 255, 255);
276            font-weight: 300;
277            text-align: left;
278    }
279    .homepage_settings h2, .homepage_map h2 {
280        color: rgb(255, 255, 255);
281            font-weight: 400;
282            text-align: left;
283
284    }
285    .homepage_settings .search_box label {
286        color: rgb(255, 255, 255);
287    }
288    .btn_home_search, .search_box input[type=submit] {
289		background-color: rgb(255, 186, 8);
290        border: 1px solid rgb(255, 186, 8);
291        color: rgb(255, 255, 255);
292    }
293    .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus {
294		        background-color: rgba(255, 186, 8,0.97);        
295        color: rgb(255, 255, 255);
296    }
297	.homepage_settings .search_box {
298		
299				background-color: rgba( 32, 80, 129, 0.5);
300	}
301
302    /* Homepage Steps Module */
303    .homepage_steps {
304            background: none;
305        box-shadow: none;
306        padding: 0;
307                color: rgb(0, 45, 98);
308            }
309    .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{
310        color: rgb(0, 45, 98)!important;
311    }
312    .homepage_steps .fa {
313        color: rgb(116, 129, 143);
314            background-color: rgba(116, 129, 143,0.075);
315    }
316	.homepage_steps h2 + p {
317        opacity: .6;
318	}
319
320    /* Blog Posts Slider Settings */
321    #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 {
322            color: rgb(255, 255, 255);
323        }
324    #myCarousel .list-group-item {
325            background-color: rgba(32, 80, 129,0.9);
326        border-color: rgba(32, 80, 129,0.80);
327    }
328    #myCarousel .carousel-caption {
329            background-color: rgba(32, 80, 129,0.8);
330    }
331    #myCarousel .list-group, #myCarousel .carousel-inner {
332            background-color: rgb(32, 80, 129)        }
333    #myCarousel .list-group .active, #myCarousel .list-group-item:hover {
334            background-color: rgb(32, 80, 129)        }
335    #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{
336            color: rgb(250, 250, 250);
337        }
338
339    /* Additional Settings */
340    .well blockquote {
341        background: rgb(245, 247, 250) none repeat scroll 0 0;
342        border-color: rgb(255, 255, 255);
343        color: rgb(41, 41, 41);
344        padding: 10px 20px;
345    }
346    .account-form-box form table tr td table {
347        background-color: transparent!important;
348        border: none!important;
349    }
350
351    .account-form-box form table tr td table td {
352        background-color: transparent!important;
353        color: rgb(41, 41, 41)!important;
354        border: none!important;
355    }
356    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{
357        color: rgb(41, 41, 41)!important;
358    }
359	.table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td {
360				border-color: rgba(85, 85, 85,0.1);
361		background-color: rgb(238, 238, 238);
362		color: rgb(85, 85, 85);
363		font-weight:600;
364		border-left: none;
365		border-bottom-width: 1px;
366	}
367	.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer {
368				border-color: rgba(85, 85, 85,0.1);
369	}
370	.table > tfoot > tr > td:not(:last-child) {
371		border-right: 1px solid rgba(85, 85, 85,0.1);
372	}
373	table.dataTable.no-footer, table.dataTable {
374		border: 1px solid rgb(255, 255, 255)!important;
375	}
376	.table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div {
377		border-top:1px solid rgb(255, 255, 255);
378	}
379	.table-view .table-view-group:last-child {
380		border-bottom:1px solid rgb(255, 255, 255);
381	}
382	table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped {
383		background-color: rgb(255, 255, 255)!important;
384	}
385	.table-striped.dataTable, .table-striped, .fr-view .table-striped {
386				border: 1px solid rgba(85, 85, 85,0.15);
387		border-collapse: separate;
388		overflow: hidden;
389	}
390	table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 
391    	overflow: visible;
392	}
393	.table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) {
394				background-color: rgba(245, 247, 250,0.5)!important;
395	}
396	.nav-tabs, hr, .account-menu-title, .modal-header {
397		border-color: rgb(255, 255, 255);
398	}
399    .sidemenu_panel .list-group-item{
400        background-color: transparent!important;
401        color: rgb(41, 41, 41)!important;
402    }
403    .img-thumbnail {
404        background-color: rgb(255, 255, 255)!important;
405        border: 1px solid rgb(255, 255, 255);
406    }
407    .member_admin_sidemenu p, .member_admin_sidemenu h3 {
408        color: rgb(41, 41, 41)!important;
409    }
410    .close {
411        color: rgb(41, 41, 41);
412        opacity: 1;
413    }
414    .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 {
415        font-size:34px;
416        display: block;
417    }
418    .member_results_header h2, .feature_results_header h2 {
419        font-size:28px;
420        display: block;
421    }
422    .homepage_settings {
423        padding-top: 130px;
424        padding-bottom: 180px;
425    }
426    @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 
427    @media only screen and (max-width: 768px) {
428                        .member-profile-header .favorite {float:none}
429    }
430    
431
432    @media only screen and (max-width: 1100px) {
433        }
434    .views > i.fa.activeView, .views > i.fa:hover {
435        background-color: rgb(41, 41, 41);
436        color: rgb(245, 247, 250);
437    }
438	.views > i.fa {
439		        background-color: rgba(41, 41, 41,0.1);
440		color: rgb(41, 41, 41);
441	}
442    .ui-rangeSlider-label {
443        background-color: rgb(0, 45, 98)!important;
444        color: rgb(255, 255, 255)!important;
445    }
446    .pricing_menu li .title {
447        background: rgb(32, 80, 129);
448        color: rgb(255, 255, 255);
449    }
450    p.account-tip{
451        color: rgb(41, 41, 41);
452    }
453    .circled_number {
454        background: rgb(32, 80, 129);
455        color: rgb(255, 255, 255);
456    }
457    .pic {
458            background-color: rgba(24, 46, 69,0.8);
459        color: rgb(255, 255, 255);
460        background-repeat: no-repeat;
461        background-position: center;
462        }
463    .pic .pic-caption {
464            background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(24, 46, 69,0.85) 50%);
465        color: rgb(255, 255, 255);
466    }
467    .slick-prev-fa i, .slick-next-fa i{
468        color: rgb(24, 46, 69);
469    }
470    .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 {
471        background-color: rgb(255, 255, 255);
472        border-color: rgb(255, 255, 255);
473        color: rgb(41, 41, 41);
474    }
475    .nav-pills > li.active a, .nav-pills > li > a:hover {
476        background-color: rgb(255, 186, 8)!important;
477        border-color: rgb(255, 186, 8)!important;
478        color: rgb(255, 255, 255)!important;
479    }
480    .sidemenu_panel .panel-heading {
481        color: rgb(41, 41, 41)!important;
482        background-color: rgb(255, 255, 255)!important;
483    }
484    .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a {
485            background: rgba(255, 255, 255,0.5);
486        color:  #5f5f5f;
487    }
488    .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 {
489            background: rgba(255, 255, 255,1);
490        color:  rgb(41, 41, 41);
491    }
492    .author-snapshot .well:not(.well.bg-default) {
493        background-color: rgb(255, 255, 255)!important;
494        border-color: rgb(255, 255, 255)!important;
495        color: rgb(41, 41, 41)!important;
496    }
497    .nav-tabs>li>a, .nav-pills>li>a {
498        font-weight: 600;
499    }
500        .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{
501            color: rgba(41, 41, 41,0.5);
502    }
503    #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a {
504        color: rgb(41, 41, 41) !important;
505    }
506    .popover {
507        background-color: rgb(255, 255, 255);
508        border-color: rgb(255, 255, 255);
509        padding:0;
510        text-align:left;
511    }
512    .popover-title, .popover-content {
513        background-color: rgb(255, 255, 255);
514        color: rgb(41, 41, 41);
515        border-color: rgb(255, 255, 255);
516        text-align:left;
517    }
518    .popover-content {
519    		background-color: rgba(41, 41, 41,.05);
520		border-radius: 4px;
521		transform: translate(-1px, -1px);
522		width: calc(100% + 2px);
523		margin-bottom: -2px;
524    }
525    .popover.left > .arrow::after {
526        border-left-color: rgb(255, 255, 255)!important;
527    }
528    .popover.right > .arrow::after {
529        border-right-color: rgb(255, 255, 255)!important;
530    }
531    .popover.bottom > .arrow::after {
532        border-bottom-color: rgb(255, 255, 255)!important;
533    }
534    .popover.top > .arrow::after {
535        border-top-color: rgb(255, 255, 255)!important;
536    }
537    .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{
538        background-color: rgb(245, 247, 250);
539        color: rgb(41, 41, 41);
540    }
541    .module h1, .module h2, .module h3, .module h4, .module h5 {
542        color: rgb(62, 62, 62);
543    }
544    .module p:not(.fr-box.fr-basic .fr-element p) {
545        color: rgb(41, 41, 41);
546    }
547    .pagination>.active>a {
548            border-color: rgba(255, 255, 255,0.2);
549    }
550    .pagination>.active>a {
551        color: rgb(255, 255, 255);
552    }
553    .pagination > .active > a:hover, .pagination > .active > a:focus {
554            border-color: rgba(255, 255, 255,0.2);
555        background-color: rgb(0, 45, 98);
556        color: rgb(255, 255, 255);
557    }
558    .pagination > li > a {
559        color: rgb(0, 45, 98);
560            border-color: rgba(0, 45, 98,0.2);
561        background-color: rgb(255, 255, 255);
562    }
563    .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover {
564        background-color: rgb(0, 45, 98);
565        border-color: rgb(0, 45, 98);
566        color: rgb(255, 255, 255);
567    }
568
569    .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{
570        background-color: rgb(238, 238, 238)!important;
571        color: rgb(85, 85, 85)!important;
572    }
573    .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover {
574        background-color: rgb(240, 173, 78)!important;
575        border-color: rgb(240, 173, 78);
576        color: rgb(255, 255, 255);
577    }
578    .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a {
579        background-color: rgb(51, 122, 183)!important;
580        color: rgb(255, 255, 255)!important;
581    }
582    .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover {
583        background-color: rgb(0, 45, 98)!important;
584        border-color: rgb(0, 45, 98);
585        color: rgb(255, 255, 255);
586    }
587
588        .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow {
589        border-color: transparent transparent transparent rgb(51, 122, 183)!important;
590    }
591    .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{
592        border-color: rgb(51, 122, 183) rgb(51, 122, 183) rgb(51, 122, 183) transparent!important;
593    }
594    
595        li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge {
596        border-color: rgb(30, 166, 154) rgb(30, 166, 154) rgb(30, 166, 154) transparent!important;
597    }
598    
599        li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge {
600        border-color: rgb(238, 238, 238) rgb(238, 238, 238) rgb(238, 238, 238) transparent!important;
601    }
602    
603    .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover {
604        background-color: rgb(30, 166, 154)!important;
605        color: rgb(255, 255, 255)!important;
606    }
607
608    .member_wizard2 li {
609        color: rgb(255, 255, 255);
610        border-right: 10px solid rgb(245, 247, 250);
611    }
612
613        li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow {
614        border-color: transparent transparent transparent rgb(30, 166, 154)!important;
615    }
616    
617        li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{
618        border-color: transparent transparent transparent rgb(238, 238, 238)!important;
619    }
620    
621    /* Default Colors */
622    .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 {
623    	background-color: rgb(255, 186, 8);
624        border-color: rgb(255, 186, 8);
625        color: rgb(255, 255, 255);
626    }
627    .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 {        
628		        background-color: rgba(255, 186, 8,0.95);
629        border-color: rgb(255, 186, 8);
630        color: rgb(255, 255, 255);
631    }
632	.panel-primary {
633        background-color: #fff5da;
634		border-color: rgb(255, 186, 8);
635	}
636    .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .
636well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary {
637        background-color: rgb(255, 186, 8);
638        color: rgb(255, 255, 255);
639    }
640    .bg-primary .badge {
641        background-color:rgb(255, 255, 255);
642        color: rgb(255, 186, 8);
643    }
644    .btn-primary.btn-outline {
645        background: transparent;
646        color: rgb(255, 186, 8);
647        transition: all 250ms ease-in-out 0ms;
648    }
649    .btn-primary.btn-outline:hover {
650            background: rgba(255, 186, 8,0.1);
651		color: rgb(255, 186, 8);
652    }
653    .alert-primary {
654            background-color:rgba(255, 186, 8,0.7);
655        border-color:rgba(255, 186, 8,0.2);
656            color: rgba(255, 255, 255,0.9);
657    }
658	.alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle {
659		background-color: #fff1ce;
660		border-color: #fff1ce;
661		color: rgb(255, 186, 8);
662		color: color-mix(in srgb, rgb(255, 186, 8) 50%, rgb(41, 41, 41) 50%);
663	}
664    .btn.dropdown-toggle.btn-primary *, .btn-primary a {
665        color: rgb(255, 255, 255);
666    }
667    .text-primary{
668        color: rgb(255, 186, 8);
669    }
670    .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 {
671		background-color: rgb(32, 80, 129);
672        border-color: rgb(32, 80, 129);
673        color: rgb(255, 255, 255);
674    }
675    .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 {
676		        background-color: rgba(32, 80, 129,0.95);
677        border-color: rgb(32, 80, 129);
678        color: rgb(255, 255, 255);
679    }
680	.panel-info {
681        background-color: #dee5ec;
682		border-color: rgb(32, 80, 129);
683	}
684    .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 {
685        background-color: rgb(32, 80, 129);
686        color: rgb(255, 255, 255);
687    }
688    .bg-info .badge {
689        background-color:rgb(255, 255, 255);
690        color: rgb(32, 80, 129);
691    }
692    .btn-info.btn-outline {
693        background: transparent;
694        color: rgb(32, 80, 129);
695        transition: all 250ms ease-in-out 0ms;
696    }
697    .btn-info.btn-outline:hover {
698            background: rgba(32, 80, 129,0.1);
699		color: rgb(32, 80, 129);
700    }
701    .alert-info {
702            background-color:rgba(32, 80, 129,0.7);
703        border-color:rgba(32, 80, 129,0.2);
704            color: rgba(255, 255, 255,0.9);
705    }
706	.alert-info-subtle, .label-info-subtle, .badge-info-subtle {
707		background-color: #d2dce6;
708		border-color: #d2dce6;
709		color: rgb(32, 80, 129);
710		color: color-mix(in srgb, rgb(32, 80, 129) 50%, rgb(41, 41, 41) 50%);
711	}
712    .btn.dropdown-toggle.btn-info *, .btn-info a {
713        color: rgb(255, 255, 255);
714    }
715    .text-info{
716        color: rgb(32, 80, 129);
717    }
718    .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 {
719		background-color: rgb(0, 45, 98);
720        border-color: rgb(0, 45, 98);
721        color: rgb(255, 255, 255);
722    }
723    .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 {        
724		        background-color: rgba(0, 45, 98,0.95);
725        border-color: rgb(0, 45, 98);
726        color: rgb(255, 255, 255);
727    }
728    .panel-success {
729        background-color: #d9e0e7;
730        border-color: rgb(0, 45, 98);
731    }
732    .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 {
733        background-color: rgb(0, 45, 98);
734        color: rgb(255, 255, 255);
735    }
736    .bg-success .badge {
737        background-color: rgb(255, 255, 255);
738        color: rgb(0, 45, 98);
739    }
740    .btn-success.btn-outline {
741        background: transparent;
742        color: rgb(0, 45, 98);
743        transition: all 250ms ease-in-out 0ms;
744    }
745    .btn-success.btn-outline:hover {
746            background: rgba(0, 45, 98,0.1);
747		color: rgb(0, 45, 98);
748    }
749    .alert-success {
750            background-color:rgba(0, 45, 98,0.7);
751        border-color:rgba(0, 45, 98,0.2);
752            color: rgba(255, 255, 255,0.9);
753    }
754	.alert-success-subtle, .label-success-subtle, .badge-success-subtle {
755		background-color: #ccd5e0;
756		border-color: #ccd5e0;
757		color: rgb(0, 45, 98);
758		color: color-mix(in srgb, rgb(0, 45, 98) 50%, rgb(41, 41, 41) 50%);
759	}
760    .btn.dropdown-toggle.btn-success *, .btn-success a {
761        color: rgb(255, 255, 255);
762    }
763    .text-success{
764        color: rgb(0, 45, 98);
765    }
766    .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 {
767		background-color: rgb(240, 173, 78);
768        border-color: rgb(240, 173, 78);
769        color: rgb(255, 255, 255);
770    }
771    .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 {        
772		        background-color: rgba(240, 173, 78,0.95);
773        border-color: rgb(240, 173, 78);
774        color: rgb(255, 255, 255);
775    }
776	.panel-warning {
777        background-color: #fdf3e4;
778		border-color: rgb(240, 173, 78);
779	}
780    .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 {
781        background-color: rgb(240, 173, 78);
782        color: rgb(255, 255, 255);
783    }
784    .bg-warning .badge {
785        background-color: rgb(255, 255, 255);
786        color: rgb(240, 173, 78);
787    }
788    .btn-warning.btn-outline {
789        background: transparent;
790        color: rgb(240, 173, 78);
791        transition: all 250ms ease-in-out 0ms;
792    }
793    .btn-warning.btn-outline:hover {
794            background: rgba(240, 173, 78,0.1);
795		color: rgb(240, 173, 78);
796    }
797    .alert-warning {
798            background-color:rgba(240, 173, 78,0.7);
799        border-color:rgba(240, 173, 78,0.2);
800            color: rgba(255, 255, 255,0.9);
801    }
802	.alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle {
803		background-color: #fcefdc;
804		border-color: #fcefdc;
805		color: rgb(240, 173, 78);
806		color: color-mix(in srgb, rgb(240, 173, 78) 50%, rgb(41, 41, 41) 50%);
807	}
808    .btn.dropdown-toggle.btn-warning *, .btn-warning a {
809        color: rgb(255, 255, 255);
810    }
811    .text-warning {
812        color: rgb(240, 173, 78);
813    }
814    .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 {
815		background-color: rgb(217, 83, 79);
816        border-color: rgb(217, 83, 79);
817        color: rgb(255, 255, 255);
818    }
819    .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 {        
820		        background-color: rgba(217, 83, 79,0.95);
821        border-color: rgb(217, 83, 79);
822        color: rgb(255, 255, 255);
823    }
824    .has-error .form-control {
825        border-color: rgb(217, 83, 79);
826    }
827    .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 {
828        background: rgb(217, 83, 79);
829        color: rgb(255, 255, 255) !important;
830    }
831    .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 {
832        color: rgb(217, 83, 79);
833    }
834	.panel-danger {
835        background-color: #f9e5e5;
836		border-color: rgb(217, 83, 79);
837	}
838    .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 {
839        background-color: rgb(217, 83, 79);
840        color: rgb(255, 255, 255);
841    }
842    .bg-danger .badge {
843        background-color: rgb(255, 255, 255);
844        color: rgb(217, 83, 79);
845    }
846    .btn-danger.btn-outline {
847        background: transparent;
848        color: rgb(217, 83, 79);
849        transition: all 250ms ease-in-out 0ms;
850    }
851    .btn-danger.btn-outline:hover {
852            background: rgba(217, 83, 79,0.1);
853		color: rgb(217, 83, 79);
854    }
855    .alert-danger {
856            background-color:rgba(217, 83, 79,0.7);
857        border-color:rgba(217, 83, 79,0.2);
858            color: rgba(255, 255, 255,0.9);
859    }
860	.alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle {
861		background-color: #f7dddc;
862		border-color: #f7dddc;
863		color: rgb(217, 83, 79);
864		color: color-mix(in srgb, rgb(217, 83, 79) 50%, rgb(41, 41, 41) 50%);
865	}	
866    .btn.dropdown-toggle.btn-danger *, .btn-danger a {
867        color: rgb(255, 255, 255);
868    }
869    .text-danger{
870        color: rgb(217, 83, 79);
871    }
872    .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
872s, 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 {
873		background-color: rgb(238, 238, 238);
874        border-color: rgb(238, 238, 238);
875        color: rgb(85, 85, 85);
876    }
877    .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 {        
878		        background-color: rgba(238, 238, 238,0.95);
879        border-color: rgb(238, 238, 238);
880        color: rgb(85, 85, 85);
881    }
882    .sidemenu_panel .panel-default .panel_heading {
883        background-color: rgb(238, 238, 238)!important;
884        border-color: rgb(238, 238, 238)!important;
885        color: rgb(85, 85, 85)!important;
886    }
887	.panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading {
888				
889		box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset;
890		background-color: rgb(238, 238, 238);
891	}
892    .panel-default, .member_accounts .panel-default {
893			
894        background-color: rgba(238, 238, 238,0.15);
895		border-color: #fdfdfd;
896		border-color: color-mix(in srgb,rgb(238, 238, 238) 100%,rgba(238, 238, 238) 10%);
897	}
898	.member_admin_sidemenu .panel-default {
899		background-color: transparent;
900	}
901    .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 {
902        background-color: rgb(238, 238, 238);
903        color: rgb(85, 85, 85);
904    }
905    .bg-default .badge {
906        background-color: rgb(85, 85, 85);
907        color: rgb(238, 238, 238);
908    }
909    .btn-default.btn-outline {
910        background: transparent;
911        color: rgb(238, 238, 238);
912        transition: all 250ms ease-in-out 0ms;
913    }
914    .btn-default.btn-outline:hover {
915            background: rgba(238, 238, 238,0.1);
916		color: rgb(238, 238, 238);
917    }
918	.alert-default {
919		background-color:rgb(238, 238, 238);
920		border-color:rgb(238, 238, 238);
921		color: rgb(85, 85, 85);
922	}
923	.alert-default-subtle, .label-default-subtle, .badge-default-subtle {
924				background-color:rgba(238, 238, 238,0.5);
925		border-color: rgba(238, 238, 238,0.5);
926		color: rgb(85, 85, 85);
927		color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(41, 41, 41) 50%);
928	}	
929    .btn.dropdown-toggle.btn-default *, .btn-default a {
930        color: rgb(85, 85, 85);
931    }
932    .text-default{
933        color: rgb(238, 238, 238);
934    }
935    .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 {
936		background-color: rgb(41, 41, 41);
937        border: 1px solid rgb(41, 41, 41);
938        color: rgb(245, 247, 250);
939    }
940    .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 {        
941		        background-color: rgba(41, 41, 41,0.95);
942        border-color: rgb(41, 41, 41);
943        color: rgb(245, 247, 250);
944    }
945    .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 {
946        background-color: rgb(41, 41, 41);
947        color: rgb(245, 247, 250);
948    }
949    .bg-secondary .badge {
950        background-color:rgb(245, 247, 250);
951        color: rgb(41, 41, 41);
952    }
953    .btn-secondary.btn-outline {
954        background: transparent;
955        color: rgb(41, 41, 41);
956        transition: all 250ms ease-in-out 0ms;
957    }
958    .btn-secondary.btn-outline:hover {
959            background: rgba(41, 41, 41,0.1);
960		color: rgb(41, 41, 41);
961    }
962	.panel-secondary {
963        background-color: #dfdfdf;
964		border-color: rgb(41, 41, 41);
965	}
966	.alert-secondary {
967		background-color:rgb(41, 41, 41);
968		border-color:rgb(41, 41, 41);
969		color: rgb(245, 247, 250);
970	}
971	.alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle {
972				background-color:rgba(41, 41, 41,0.8);
973		border-color: rgba(41, 41, 41,0.5);
974		color: rgb(245, 247, 250);
975	}
976	.btn-outline {
977		-webkit-backdrop-filter: blur(5px);
978		backdrop-filter: blur(5px);
979	}
980	.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 {
981		background-color: rgb(245, 247, 250);
982		border: 1px solid rgb(245, 247, 250);
983		color: rgb(41, 41, 41);
984	}
985	.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 {        
986				background-color: rgba(245, 247, 250,0.95);
987		border: 1px solid rgb(245, 247, 250);
988		color: rgb(41, 41, 41);
989	}	
990	.btn.btn-body.dropdown-toggle * {
991		color: rgb(41, 41, 41)	
992	}
993	.btn-body.dropdown-toggle + ul li, .daterangepicker .ranges {
994		color: #333;
995	}
996    .bg-body {
997        background: rgb(245, 247, 250);
998        color: rgb(41, 41, 41);
999    }
1000    .bg-content-box {
1001        background: rgb(255, 255, 255);
1002        color: rgb(41, 41, 41);
1003    }
1004    .bg-content-box-border {
1005        background: rgb(255, 255, 255);
1006    }
1007    .btn.dropdown-toggle.btn-secondary *, .btn-secondary a {
1008        color: rgb(245, 247, 250);
1009    }
1010    .text-secondary {
1011        color: rgb(41, 41, 41);
1012    }
1013	.text-body {
1014		color: rgb(245, 247, 250);
1015	}
1016    .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section  .alert-secondary {
1017		border-radius: 10px;
1018        background-color: rgba(41, 41, 41,0.2);
1019    }
1020
1021    /* Footer Newsletter Row */
1022    .newsletter_row .alert {
1023        color: rgb(255, 255, 255);
1024    }
1025    .newsletter_row {
1026        background-color: rgb(32, 80, 129);
1027        color: rgb(255, 255, 255);
1028    }
1029    .newsletter_row input[type="submit"],.newsletter_footer_button {
1030            background-color: rgba(30, 166, 154,0.97);
1031        color: rgb(255, 255, 255);
1032        border-color: rgb(30, 166, 154);
1033    }
1034    .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus {
1035        background-color: rgb(30, 166, 154);
1036        color: rgb(255, 255, 255);
1037    }
1038    .newsletter_button_left {
1039            border-right: 1px solid rgba(255, 255, 255,0.2);
1040    }
1041    .newsletter_button_right {
1042        border-left: 1px solid rgba(255, 255, 255,0.2);
1043    }
1044    .newsletter_row small.help-block {
1045        background: rgb(255, 255, 255);
1046        margin-top: -5px;
1047        float: left;
1048        padding: 8px;
1049        border-radius: 1px;
1050        color: rgb(32, 80, 129);
1051        text-transform: capitalize;
1052    }
1053    .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{
1054        color: rgb(255, 255, 255);
1055    }
1056    @media only screen and (max-width: 767px) {
1057        .newsletter_button_right,.newsletter_button_left{
1058            border: none;
1059            margin: 5px 0;
1060        }
1061    }
1062
1063    /* Font Sizes */
1064
1065    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span {
1066        font-size: 16px;
1067    }
1068    .header .logo {
1069        font-size: 34px;
1070    }
1071    .homepage_title h1, .homepage_settings h1 {
1072		letter-spacing: -1px;
1073        font-size: 60px;
1074					margin-bottom: 20px;
1075				    }
1076    @media only screen and (max-width: 768px) {
1077        .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;}
1078    }	
1079    .homepage_settings h2 {
1080        font-size: 28px;
1081    }
1082
1083    .ui-rangeSlider-bar{
1084        background: rgb(255, 186, 8)!important;
1085    }
1086
1087    
1088    
1089    @media only screen and (max-width: 1024px){
1090        .modal {margin-top: 40px;}
1091    }
1092    @media only screen and (max-width: 768px){
1093        .modal {margin-top: 60px;}
1094    }
1095
1096    /* Calendar Styles */
1097
1098    #cal-slide-content {
1099        color: rgb(85, 85, 85)!important;
1100        background-color: rgb(238, 238, 238)!important;
1101        -webkit-box-shadow: none!important;
1102        box-shadow: none!important;
1103    }
1104    #cal-slide-content a.event-item {
1105        color: rgb(85, 85, 85)!important;
1106        font-weight:bold!important;
1107    }
1108    #cal-slide-content a.event-item small {
1109        display: inline-block;
1110    }
1111    .cal-month-box, .cal-year-box, .cal-week-box {
1112        border: 1px solid rgb(255, 255, 255)!important;
1113    }
1114    .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid {
1115        border-bottom: 1px solid rgb(255, 255, 255)!important;
1116    }
1117    .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] {
1118        border-right: 1px solid rgb(255, 255, 255)!important;
1119    }
1120    .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) {
1121        background-color: rgb(245, 247, 250)!important;
1122    }
1123    .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) {
1124        color: rgb(85, 85, 85)!important;
1125    }
1126    .cal-day-today span[data-cal-date] {
1127        color: rgb(41, 41, 41)!important;
1128    }
1129    .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child {
1130        border: 0!important;
1131    }
1132    .cal-row-head {
1133        background: rgb(255, 255, 255)!important;
1134    }
1135    .day-highlight:hover, .day-highlight {
1136        background-color: rgb(255, 255, 255)!important;
1137    }
1138    .cal-event-list .event.pull-left {
1139        background-color: rgb(41, 41, 41)!important;
1140        opacity: 0.4;
1141        margin-top: 7px!important;
1142    }
1143    .cal-day-today {
1144        background-color: rgb(255, 255, 255)!important;
1145    }
1146    #cal-day-tick {
1147        border: 1px solid rgb(255, 255, 255)!important;
1148        background-color: rgb(255, 255, 255)!important;
1149    }
1150    .cal-day-weekend span[data-cal-date]{
1151        color: rgb(41, 41, 41)!important;
1152    }
1153        .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs {
1154		border-radius: 10px;
1155        background: #151515!important;
1156    }
1157	.img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary  .rsDefault .rsOverflow {
1158		border-radius:0;
1159	}
1160    
1161    #first_container .favorite, #first_container .fa.favorite {
1162        color: rgb(85, 85, 85);
1163        background: rgb(238, 238, 238);
1164        border: 1px solid rgb(238, 238, 238);
1165        white-space:nowrap!important;
1166		height:24px;
1167		padding:0 6px;
1168		border-radius:8px;
1169    }
1170    #first_container .favorite span, #first_container .fa.favorite span {
1171        font-family: 'Nunito';
1172        white-space:nowrap!important;
1173    }
1174    #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) {
1175        color: rgb(217, 83, 79);
1176    }
1177        #first_container .favorite::after, #first_container .fa.favorite::after {
1178        font-family: 'Nunito';
1179        margin-left: 3px;
1180    }
1181    #first_container .favorite span, #first_container .fa.favorite span{
1182        padding-left: 4px;
1183        font-family: 'Nunito';
1184        font-size: 11px;
1185		letter-spacing:.5px;
1186		top:-1px;
1187		position:relative;
1188		font-weight:700;		
1189    }
1190	#first_container .favorite span:empty, #first_container .fa.favorite span:empty {
1191		padding: 0;
1192	}
1193	#first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number {
1194		padding: 1px 0;
1195		border-radius: 100px;
1196		display: inline-block;
1197		font-weight: bold;
1198		min-width: 15px;
1199		font-size: .8em;
1200		vertical-align: bottom;
1201		height: 15px;
1202		line-height: 13px;
1203		margin-left: 3px;
1204		text-align: center;
1205	}
1206    #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number {
1207        background: rgb(217, 83, 79);
1208		color: #fff;
1209    }
1210    
1211    span.checkbox_value::after {
1212        content: ', ';
1213    }
1214
1215    span.checkbox_value:last-child::after {
1216        content: '';
1217    }
1218        #first_container .member-profile-tabs .profile-tabs-nav {
1219        overflow-x: auto;
1220        overflow-y: hidden;
1221        display: flex;
1222        flex-direction: row
1223    }
1224
1225    #first_container .member-profile-tabs .profile-tabs-nav > li * {
1226        white-space: nowrap !important
1227    }
1228
1229    .member-profile-tabs .profile-tabs-nav::-webkit-scrollbar {
1230        display: none
1231    }
1232
1233    .member-profile-tabs .profile-tabs-nav {
1234        scrollbar-width: none
1235    }
1236
1237    .member-profile-tabs .tabs-container {
1238        display: flex;
1239        align-items: center;
1240        border-radius:8px 8px 0 0;
1241    }
1242    .member-profile-tabs .tabs-container > ul {
1243        border: none;
1244    }
1245    .member-profile-tabs .scroll-arrow {
1246        display: none;
1247        cursor: pointer;
1248        z-index: 2;
1249        padding: 0 15px;
1250        background-color: rgb(238, 238, 238);
1251        color: rgb(85, 85, 85);
1252        height: 41px;
1253        line-height: 42px;
1254        margin-top: 2px;
1255        margin-left: 5px;
1256        border-radius:4px;
1257    }
1258
1259    .member-profile-tabs .scroll-arrow.left-arrow {
1260        margin-right: -6px;
1261    }
1262
1263    .member-profile-tabs .scroll-arrow.right-arrow {
1264        margin-left: -10px;
1265        margin-right: 5px;
1266    }
1267    
1268    .member_results .grid_element{
1269	position:relative;
1270	overflow:hidden;
1271	display: inline-block;
1272	width:100%;
1273}
1274.member_results .grid_element::before {
1275	position: absolute;
1276	top: 24px;
1277	text-align: center;
1278	width: 200px;
1279	left: -62px;
1280	transform: rotate(-45deg);
1281	-webkit-transform: rotate(-45deg);
1282	z-index: 1;
1283	line-height: 1.2em;
1284	padding: 6px 0;
1285	font-weight: bold;
1286	letter-spacing: 1px;
1287}
1288@media only screen and (max-width: 767px) {
1289	.member_results .grid-container > hr {
1290		border-color: transparent;
1291	}
1292	.member_results .grid_element{
1293		overflow:visible;
1294	}
1295	.member_results .grid_element::before {
1296		top: -19px!important;
1297		transform: rotate(0deg);
1298		-webkit-transform: rotate(0deg);
1299		font-size: 10px !important;
1300		letter-spacing: 0;
1301		width: auto;
1302		padding: 3px 6px;
1303	}
1304}
1305
1306
1307    .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-snapsh
1307ot .search_result_image, .saved-member {
1308        border-radius: 1000px!important;
1309    }
1310    
1311    
1312
1313    /*  Homepage Sections Background Color Logic */
1314
1315    
1316    .homepage-section-1 {
1317        padding: 40px 0 40px;
1318    }
1319
1320    
1321    .homepage-section-2 {
1322        padding: 40px 0 40px;
1323    }
1324
1325    
1326    .homepage-section-3 {
1327        padding: 40px 0 40px;
1328    }
1329
1330    
1331    .homepage-section-3 {
1332        background: rgb(245, 247, 250);
1333    }
1334
1335    
1336    .homepage-section-4 {
1337        padding: 40px 0 40px;
1338    }
1339
1340    
1341    .homepage-section-5 {
1342        padding: 40px 0 40px;
1343    }
1344
1345    
1346    .homepage-section-5 {
1347        background: rgb(32, 80, 129);
1348    }
1349
1350    
1351    .homepage-section-6 {
1352        padding: 40px 0 40px;
1353    }
1354
1355    
1356    .homepage-section-6 {
1357        background: rgb(245, 247, 250);
1358    }
1359
1360    
1361    .homepage-section-7 {
1362        padding: 40px 0 40px;
1363    }
1364
1365    
1366    .homepage-section-8 {
1367        padding: 40px 0 40px;
1368    }
1369
1370    
1371    .homepage-section-9 {
1372        padding: 40px 0 40px;
1373    }
1374
1375    
1376    .homepage-section-10 {
1377        padding: 40px 0 40px;
1378    }
1379
1380    
1381    .homepage-section-11 {
1382        padding: 40px 0 40px;
1383    }
1384
1385    
1386    .homepage-section-12 {
1387        padding: 40px 0 40px;
1388    }
1389
1390    
1391    .homepage-section-13 {
1392        padding: 40px 0 40px;
1393    }
1394
1395    
1396    .homepage-section-14 {
1397        padding: 40px 0 40px;
1398    }
1399
1400    
1401    .homepage-section-15 {
1402        padding: 40px 0 40px;
1403    }
1404
1405    
1406    /* Additional Settings */
1407
1408    
1409    /* Streaming Widgets Title Settings */
1410
1411    .streaming-title {
1412        text-align: center;
1413        font-size: 48px;
1414		line-height:1.5em;
1415            font-weight: 300;
1416                font-family: 'Ubuntu';
1417            padding-bottom: 50px;
1418    }
1419	
1420	@media only screen and (max-width: 990px) {
1421		.streaming-title {
1422			line-height:1.1em;
1423		}
1424	}
1425
1426            .streaming-title + hr {
1427        display: none;
1428    }
1429    
1430    .homepage-join-module .module h2:first-of-type {
1431        color: rgb(62, 62, 62);
1432    }
1433
1434    .homepage-join-module .module{
1435        background: rgb(250, 250, 250);
1436        border-color: rgb(245, 247, 250);
1437    }
1438
1439    .homepage-about-module .module h2:first-of-type {
1440        color: rgb(62, 62, 62);
1441    }
1442
1443    .homepage-about-module .module{
1444        background: rgb(250, 250, 250);
1445        border-color: rgb(245, 247, 250);
1446
1447	}
1448
1449	.the-post-description > :is(h2, h3, h4, h5):not(:first-child) {
1450		font-weight: 600;
1451		margin-top: 20px;
1452	}
1453	
1454	/* Keep: Ensure ul/ol respect padding and margins */
1455	.the-post-description > :is(ul, ol) {
1456		display: flow-root;
1457	}
1458	.the-post-description li {
1459		margin-bottom: 8px;
1460	}
1461
1462        .btn:not(#refcode_submit):not(.input-group-btn .btn):not(.logo-preview-input):not(.cover-preview-input):not(.member_login):not(.img-circle):not(.submit_reply):not(.submit_comment):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top):not(.btn-facebook), .btn-sm:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), .btn-xs:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), button:not(.social_share_buttons button):not(.social_share_buttons a):not(#refcode_submit):not(.input-group-btn button), .btn-group-lg > .btn, .btn-lg, .btn-lg, .btn-xl, .input-group-sm > .input-group-btn > .btn, .favorite, .tags a, select#sid.input-lg, select#tid.input-lg, select#ttid.input-lg, select.combobox.input-lg, select#bd-chained.input-lg, select#category-chained.input-lg, select.infinite-chained.input-lg, select.subcategory-chained.input-lg, select.search-chained.input-lg, select#country-chained.input-lg, select#state-chained.input-lg, select#country-chained-2.input-lg, select#state-chained-2.input-lg, select#profession_id.input-lg, [name^="bd_phone_country_code"].input-lg, select.input-lg, select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-ch
1462ained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] {
1463            border-radius: 100px!important;
1464        }
1465    
1466        .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 {
1467        box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a;
1468    }
1469    
1470    .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 {
1471        border-radius:1000px!important;
1472    }
1473
1474    .img-rounded img, img.fr-dib.img-rounded{
1475        border-radius: 10px!important;
1476    }
1477    
1478    /* Google Translate Module */
1479        .skiptranslate{font-size:0}
1480    .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}
1481    .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important}
1482    .goog-te-gadget .goog-te-combo{margin-bottom:-4px}
1483    .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)}
1484    @media only screen and (max-width: 1100px) {
1485        .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px}
1486        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important}
1487        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px}
1488        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important}
1489        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important}
1490        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px}
1491        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;}
1492    }
1493    @media only screen and (max-width: 767px) {
1494        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important}
1495    }
1496
1497    
1498    
1499</style>
1500
1501<!--GOOGLE TAG MANAGER CODE-->    <!-- ON-PAGE CSS FUNCTIONS -->
1502        <style type="text/css">
1503        .btn_get_listed {
1504	padding: 8px 12px;
1505}
1506
1507/* Home Page Hero Title Text */
1508h1.sm-text-center {
1509  display: grid;
1510  grid-template-columns: auto 1fr;
1511  align-items: center;
1512  font-family: Ubuntu, sans-serif;
1513  font-size: 24px;
1514  text-align: left;
1515  margin: 0;
1516  padding-bottom: 40px;
1517  letter-spacing: 1px;
1518}
1519.line1, .line2 {
1520  grid-column: 1;
1521  font-size: 34px;
1522  letter-spacing:0.5px;
1523  padding: 5px 0;
1524  text-align: right;
1525}
1526
1527.trainers {
1528  grid-row: 1 / 3;
1529  grid-column: 2;
1530  font-size: 85px;
1531  font-weight: 400;
1532  padding-left: 15px;
1533}
1534
1535.mobile-text {
1536  display: none;
1537}
1538
1539/* Media query for mobile devices */
1540@media (max-width: 768px) {
1541
1542  .mobile-text {
1543    display: block;
1544    font-size: 36px;
1545    font-weight: 400;
1546    padding: 10px;
1547  }
1548  
1549   .line1, .line2, .trainers {
1550    display: none;
1551  }
1552}
1553
1554.form-group {
1555  margin-bottom: 14px;
1556}
1557
1558/* Grid styling for the checkbox list */
1559.checkbox-group {
1560  display: grid;
1561  flex-direction: column;
1562  grid-template-columns: repeat(5, 1fr); /* 4 columns by default */
1563  gap: 2px;
1564}
1565
1566
1567
1568
1569p.location_main {
1570  text-transform: uppercase;
1571  color: #666;
1572  font-size: 14px;
1573  font-weight: bold;
1574}
1575
1576p.location_main:first-of-type {
1577  padding-top: 2px;
1578}
1579
1580.checkbox-group label {
1581  display: block;
1582  font-weight: 400;
1583  margin-bottom: 2px;
1584}
1585
1586/* Optional styling for checkboxes */
1587input[type="checkbox"] {
1588  margin-right: 2px;
1589}
1590
1591.delivery-locations-helpblock {
1592  padding-bottom: 20px;
1593}
1594
1595/* Media query for mobile: 2 columns on smaller screens */
1596@media (max-width: 768px) {
1597  .checkbox-group {
1598    grid-template-columns: repeat(2, 1fr); /* 2 columns on mobile */
1599  }
1600}    </style>
1601    <div class="header">
1602            <div class="container">
1603			<div class="row header-main-row">
1604				<style type='text/css'> .logo-text:has(.logo_title:empty) {
1605	display:none
1606} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container">
1607			<a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.thetrainerdirectory.com" title="The Trainer Directory">
1608			<img width="320" height="82" src="/images/ttd_logo.png" alt="The Trainer Directory">
1609		</a>
1610		<div class="clearfix"></div>
1611</div>
1612									<style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query {
1613	background-color: white !important;
1614}
1615.mini-nav:not(:has(li)) {
1616	display: none!important;
1617}
1618/* Parent Container - Main List */
1619.mini-nav li:has(ul) {
1620	position: relative;
1621	border-radius: 8px 8px 0 0;
1622}
1623.mini-nav > li:has(ul) {
1624	padding-left: 0;
1625	padding-right: 0;
1626	background: rgb(245, 247, 250);
1627}
1628.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span {
1629	padding: 10px 15px;
1630	margin: 0!important;
1631}
1632.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) {
1633	box-shadow: 0 -1px 3px rgba(41, 41, 41,0.25);
1634}
1635/* Parent Links */
1636.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) {
1637	display:inline-block;
1638	border-radius: 8px 8px 0 0;
1639}
1640.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span {
1641	background: rgb(245, 247, 250);
1642	display: inline-block;
1643	position: relative;
1644	z-index: 1000;
1645}
1646/* First Level Dropdowns */
1647.mini-nav li ul {
1648	background: rgb(245, 247, 250);
1649	box-shadow: 0 0px 3px rgba(41, 41, 41,0.25), 0 5px 5px 5px rgba(41, 41, 41,0.05);
1650	text-align: left;
1651	display: none;
1652	border-radius: 0 8px 8px 8px;
1653	list-style: none;
1654	padding: 10px;
1655	position: absolute;
1656	white-space: nowrap;
1657	min-width: 130%;
1658	width: auto;
1659	top: 100%;
1660	left: 0;
1661	z-index: 999;
1662	margin-top: -1px;
1663}
1664.mini-nav li:hover > ul {
1665	display: block;
1666}
1667/* First Level Dropdown Items */
1668.mini-nav li ul li {
1669	position: relative;
1670	display: block;
1671	width: 100%;
1672}
1673.mini-nav li ul li a, .mini-nav li ul li span {
1674	font-size: 14.8px !important;
1675	display: block;
1676	font-weight: 400;
1677	padding: 8px 12px;
1678	border-radius: 8px;
1679	text-decoration: none;
1680	width: 100%;
1681}
1682.mini-nav li ul li a:hover, .mini-nav li ul li span:hover {
1683	box-shadow: 0 0 0 25px rgba(41, 41, 41,0.05) inset;
1684}
1685/* Second Level Dropdowns */
1686.mini-nav li ul li ul {
1687	display: none;
1688	position: absolute;
1689	top: 0;
1690	left: 100%;
1691	margin: 0;
1692	border-radius: 8px;
1693}
1694.mini-nav li ul li:hover > ul {
1695	display: block;
1696}
1697/* Edge Positioning - Last Child Dropdowns */
1698.mini-nav > li:last-child ul {
1699	right: 0;
1700	left: auto;
1701	border-radius: 8px 0 8px 8px;
1702}
1703.mini-nav > li:last-child ul li ul {
1704	right: 100%;
1705	left: auto;
1706}
1707/* Flex Spacing Utility */
1708.mini-nav.mini-nav-flex-spaced {
1709	display: flex;
1710	justify-content: space-between;
1711	align-items: center;
1712	flex-wrap: wrap;
1713	row-gap: 0;
1714}
1715.mini-nav.mini-nav-flex-spaced > li {
1716	flex: none;
1717	padding: 0;
1718	margin: 2px 0;
1719	order: 2;
1720}
1721.mini-nav.mini-nav-flex-spaced > li.header-member-account-links,
1722.mini-nav:has(li ul) > li.header-member-account-links {
1723	order: 1;
1724	margin-left: auto;
1725	width: 100%;
1726	margin-bottom: 10px;
1727}
1728.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li {
1729	line-height: 1em;
1730	min-height: 0;
1731}
1732@media (min-width: 992px) {
1733	.header-main-row {
1734		display: flex;
1735		align-items: center;
1736		flex-wrap: wrap;
1737	}
1738}
1739@media (max-width: 991px) {
1740	.mini-nav.mini-nav-flex-spaced {
1741		justify-content: center;
1742	}
1743	.mini-nav.mini-nav-flex-spaced > li {
1744		margin-left: 5px !important;
1745		margin-right: 5px !important;
1746	}
1747} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad">
1748            <ul class="mini-nav  nobmargin list-inline xs-nopad xs-tmargin tpad">
1749            <li class='bmargin xs-nomargin'><a href='/about/contact' id='link320'  class='hpad bmargin'>Contact Us</a></li><li class='bmargin xs-nomargin'><a href='/login' id='link321'  class='rpad bmargin'>Member Login</a></li><li class='bmargin norpad xs-nopad xs-vmargin'><a href='/join' id='link322'  class='btn btn_get_listed bold'>Register as a Trainer</a></li>        </ul>
1750            <div class="clearfix"></div>
1751                <form action="/search_results" name="frm1" class="form-inline website-search">
1752                                    <div class="input-group input-group-sm bmargin sm-autosuggest">
1753                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
1754                        <input type="text"
1755                               placeholder="Name or Keyword" value="" name="q"
1756                               class="member_search form-control input-sm" autocomplete="off">
1757                    </div>
1758                                        <div class="input-group input-group-sm bmargin">
1759                        <span class="input-group-addon"><i class="fa fa-location-arrow"></i></span>
1760                        <input type="text" autocomplete="off" placeholder="City or Post Code"
1761                               value="" id="location_google_maps_header" name="location_value"
1762                               class="googleSuggest googleLocation form-control">
1763                    </div>
1764                                    <input type="submit" value="Search" class="btn btn-sm btn_search bmargin xs-btn-block bold">
1765            </form>
1766            </div>
1767				            </div>
1768        </div>
1769        <style type='text/css'> .mobile-main-menu .hasChildren span a {
1770	padding: 0px;
1771}
1772
1773.user_sidebar > img {
1774	width: 32px;
1775	height: 32px;
1776	position: absolute;
1777	z-index: 10;
1778	border-radius: 100px;
1779	top: -1px;
1780	object-fit: cover;
1781	left: -10px;
1782	background: rgb(238, 238, 238);
1783}
1784#member_sidebar_toggle img+.fa {
1785	display: none;
1786}
1787.main_menu, .user_sidebar, .compact-mobile-search {
1788	padding: 5px 8px;
1789	margin-right:0;
1790	min-height: 33.0333px;
1791	min-width: 38.116px;	
1792}
1793.main_menu i, .user_sidebar i {
1794	font-size: 16px;
1795}
1796.navbar-nav li {
1797	float: none!Important;
1798}
1799.navbar-default{
1800	-webkit-transition: all .6s ease-in-out;
1801	-moz-transition: all .6s ease-in-out;
1802	-o-transition: all .6s ease-in-out;
1803	transition: all .6s ease-in-out;
1804}
1805.transparent_menu {
1806		background-color: rgba(0, 45, 98,0.95)!important;
1807}
1808@media only screen and (max-width: 991px) {
1809	#popover {display: none}
1810}
1811@media only screen and (max-width: 1100px){
1812	.mobile-main-menu{display:block!important}
1813	.navbar-toggle {display: block}
1814	#bs-main_menu .nav {display: none!important}
1815}
1816.mobile-main-menu {
1817	position: fixed;
1818	height: calc(100% - 50px)!important;
1819	width: 250px;
1820	background: rgb(0, 45, 98);
1821	z-index: 99999;
1822	right: -250px;
1823	top: 50px;
1824	display: none;
1825	-webkit-transition: all .6s ease-in-out;
1826	-moz-transition: all .6s ease-in-out;
1827	-o-transition: all .6s ease-in-out;
1828	transition: all .6s ease-in-out;
1829	overflow-y: auto!important;
1830	overflow-x: hidden!important;
1831}
1832.mobile-main-menu ul li i {
1833	color: rgb(255, 255, 255);
1834	cursor: pointer;
1835	float: right;
1836	padding: 13px;
1837}
1838.mobile-main-menu.opened{
1839	right: 0px!important;
1840}
1841.mobile-main-menu ul li a, .mobile-main-menu ul li span {
1842	display: inline-block;
1843	float: left;
1844	-webkit-touch-callout: none;
1845	-webkit-user-select: none;
1846	-khtml-user-select: none;
1847	-moz-user-select: none;
1848	-ms-user-select: none;
1849	user-select: none;
1850	padding: 10px 0px;
1851	width: 80%;
1852	width: calc(100% - 40px);
1853}
1854.mobile-main-menu .sidebar-nav li ul {
1855	height: 0px;
1856	overflow: hidden;
1857	list-style: none;
1858	color: rgb(255, 255, 255);
1859	padding-left: 10px;
1860}
1861.mobile-main-menu .sidebar-nav li.sub_open > ul{
1862	height: 100%;
1863}
1864.mobile-main-menu ul.sidebar-nav {
1865	position: absolute;
1866	width: 250px;
1867	margin: 0;
1868	padding: 0;
1869	list-style: none;
1870	font-size: 14px;
1871}
1872.mobile-main-menu .sidebar-nav > li {
1873	display: block;
1874	line-height: 20px;
1875	padding: 0 15px 0 20px;
1876}
1877.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span {
1878	text-decoration: none;
1879	color: rgb(255, 255, 255);
1880	padding-left:10px;
1881}
1882.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i {
1883	display: none;
1884}
1885
1886 </style><div class="mobile-main-menu">
1887	<ul class="sidebar-nav">
1888		<li class=''><a href='/home' id='link344'>
1888Home</a></li><li class=''><a href='/about' id='link346'>About</a></li><li class=''><a href='/search_results' id='link345'>Member Directory</a></li><li class=''><a href='/blog' id='link347'>The Trainer Hub</a></li><li class=''><a href='/events' id='link352'>Upcoming Events</a></li><li class=''><a href='/join' id='link348'>Join Today</a></li>	</ul>
1889</div>
1890<nav class="navbar navbar-default ">
1891	<div class="container container-fluid">
1892
1893		<div class="navbar-header">
1894						<button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu">
1895								<i class="fa fa-bars fa-fw"></i>
1896							</button>
1897
1898			
1899			
1900		</div>
1901
1902
1903		<div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu">
1904			<ul class="tablet-menu-ul nav navbar-nav nav-justified">
1905				<li class=''><a href='/home' id='link344'>Home</a></li><li class=''><a href='/about' id='link346'>About</a></li><li class=''><a href='/search_results' id='link345'>Member Directory</a></li><li class=''><a href='/blog' id='link347'>The Trainer Hub</a></li><li class=''><a href='/events' id='link352'>Upcoming Events</a></li><li class=''><a href='/join' id='link348'>Join Today</a></li>			</ul>
1906		</div>
1907	</div>
1908</nav>
1909<!--CSS IF MENU IS FIXED TOP-->
1910
1911</div>
1912<div class="clearfix"></div>
1913<!-- Begin  Content -->
1914<main role="main" id="main-content">
1915<div id="first_container" class="content-container fr-view">
1916        <div class="container">
1917                        <div class="clearfix body-content"></div>
1918        <style type='text/css'> div#map-bounds {
1919	width: 100%;
1920	height: 600px;
1921	display: block;
1922}
1923.gsc-control-cse.gsc-control-cse-en {
1924	border-radius: 4px;
1925	margin-top: 20px;
1926	padding-top: 0;
1927}
1928.mid_section .btn-sm.btn-block {
1929	width:auto;
1930	display:inline-block
1931}
1932.tab-content #results > div > hr {   
1933	display: none; 
1934} </style>            <div class="clearfix"></div>
1935                <div class="row content_w_sidebar member_results">
1936            
1937                    <div class='col-md-9 col-md-push-3 main-container'><style type='text/css'> .views {
1938    margin-top: -1px!important;
1939}
1940.member-search-result-filters + .clearfix + div > hr {   
1941	margin-top: 10px; 
1942}
1943@media only screen and (max-width: 767px) {
1944    .member_results .sort-members-select, .member_results .overall_rating_filter {
1945        float: left;
1946        width: 150px;
1947    }
1948} </style>
1949    <div class="col-xs-12 col-sm-4 fpad-sm nohpad member-search-result-count-container">
1950        Showing 1        - <span class="current__amount__js">7</span> of
1951
1952        <span class="total__js">7</span> Results
1953            </div>
1954    <div class="col-xs-12 col-sm-8 nopad text-right bmargin member-search-result-filters">
1955        <div class="form-inline">
1956                        <div class="form-group sort-members-select">
1957                <select class="form-control pull-right input-sm" name=sort
1958                        onchange="window.location='/search_results?sort='+this.value;" id="sortbox">
1959                    <option value="" selected>Sort Results
1960                    </option>
1961
1962                                            <option value="reviews" >
1963                            Sort by Most Reviews
1964                        </option>
1965                                            <option value="name ASC" >
1966                            Sort by Name A-Z
1967                        </option>
1968                                            <option value="name DESC" >
1969                            Sort by Name Z-A
1970                        </option>
1971                                            <option value="last_name_asc" >
1972                            Sort By Last Name A-Z
1973                        </option>
1974                                            <option value="last_name_desc" >
1975                            Sort By Last Name Z-A
1976                        </option>
1977                                    </select>
1978            </div>
1979            <div class="form-group">
1980                <style type='text/css'> 	@media (min-width: 961px) {
1981		body:not(.bdGridDone) .grid-container:not(.row) { opacity: 0; }
1982	}
1983	
1984.search_result.grid {
1985	display: grid;
1986}
1987.views > i {
1988	font-size: 18px;
1989	margin-left: 5px;
1990	border-radius: 4px;
1991	cursor: pointer;
1992	width: 30px;
1993	height: 30px;
1994	line-height: 30px;
1995	display: inline-flex;
1996	align-items: center;
1997	justify-content: center;
1998	text-align: center;
1999	vertical-align: top;
2000	transition: all 100ms linear 0ms;
2001}
2002a.gridA {
2003	font-size: 18px;
2004	text-align: center;
2005	margin: 10px 0;
2006	display: block;
2007}
2008.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 {
2009	display:none;
2010}
2011.visible-lg {
2012	word-wrap: break-word;
2013}
2014.grid .post-location-snippet b + span {
2015	display: block;
2016}
2017@media only screen and (max-width: 767px) {
2018	.member_results .sort-members-select, .member_results .overall_rating_filter {
2019		float: left;
2020		width: 150px;
2021	}
2022} </style>    <div class='views pull-right '>
2023                    <i class='fa bi bi-list-task activeView listView'></i>
2024                            <i class='fa bi bi-grid js-click gridView hidden-xs'></i>
2025                            <i class="fa bi bi-geo-alt mapView"></i>
2026            </div>
2027            </div>
2028        </div>
2029        <div class="clearfix"></div>
2030    </div>
2031    <div class="clearfix"></div>
2032
2033    <div class="member_results_header">
2034        <h1 class="bold nomargin">Trainer  Directory</h1>
2035            </div>
2036                <div itemscope itemtype="https://schema.org/CollectionPage" itemid="https://www.thetrainerdirectory.com/search_results#entity">
2037                    <meta itemprop="name" content="Trainers - Find & Compare Professional Professionals">
2038                    <meta itemprop="headline" content="Trainer  Directory">
2039                    <meta itemprop="description" content="Search our Professional database and connect with top rated Trainers.">
2040										<link itemprop="primaryImageOfPage" href="/images/ttd_logo.png">
2041															<meta itemprop="keywords" content="Trainer  Directory, The Trainer Directory, Trainer">
2042										<meta itemprop="inLanguage" content="en-US">
2043					<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2044					<meta itemprop="mainEntityOfPage" content="https://www.thetrainerdirectory.com/search_results#page">
2045					<meta itemprop="copyrightYear" content="2026">
2046					<link itemprop="copyrightHolder" href="https://www.thetrainerdirectory.com/#organization">
2047					<link itemprop="isPartOf" href="https://www.thetrainerdirectory.com/#website">
2048					<link itemprop="publisher" href="https://www.thetrainerdirectory.com/#organization">
2049										                    <div itemprop="mainEntity" itemscope itemtype="https://schema.org/ItemList" itemid="https://www.thetrainerdirectory.com/search_results#itemlist">
2050                        <meta itemprop="name" content="Trainer  Directory">
2051                        <link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2052                        <meta itemprop="description" content="Search our Professional database and connect with top rated Trainers.">
2053                        <meta itemprop="mainEntityOfPage" content="https://www.thetrainerdirectory.com/search_results#page">
2054                        <meta itemprop="itemListOrder" content="http://schema.org/ItemListOrderAscending">
2055                                                <meta itemprop="numberOfItems" content="7">
2056                                                <hr>
2057<div class="grid-container"><div class="row-fluid member_results level_5 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2058	<meta itemprop="name" content="Alison Rood">
2059	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2060	<meta itemprop="position" content="1">
2061		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/top-level-category/alison-rood#entity">
2062		<meta itemprop="name" content="Alison Rood">
2063		<link itemprop="url" href="https://www.thetrainerdirectory.com/top-level-category/alison-rood">
2064		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-25-255-photo.jpg">
2065		<meta itemprop="priceRange" content="$$">
2066		<meta itemprop="telephone" content="N/A">
2067				<meta itemprop="description" content="Founder and Director of Alison Rood Ltd - Workplace wellness. Coach and trainer.">
2068				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2069			<meta itemprop="streetAddress" content="N/A">
2070			<meta itemprop="addressLocality" content="N/A">
2071			<meta itemprop="addressRegion" content="N/A">
2072			<meta itemprop="postalCode" content="E14 9XA">
2073			<meta itemprop="addressCountry" content="GB">
2074		</div>
2075				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2076			<meta itemprop="latitude" content="0.00000000">
2077			<meta itemprop="longitude" content="0.00000000">
2078		</div>
2079				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/top-level-category/alison-rood#page">
2080	</div>
2081        <div class="grid_element">
2082        <div class="img_section col-xs-2 nopad">
2083            <a title="Alison Rood - Trainer" href="/top-level-category/alison-rood">
2084								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Alison Rood" src="https://www.thetrainerdirectory.com/pictures/profile/pimage-25-255-photo.jpg" />
2085				   
2086            </a>
2087        </div>
2088        <div class="mid_section col-xs-10 col-sm-7 norpad">
2089            <span class="postItem" data-userid="25" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Free Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Alison Rood" href="/top-level-category/alison-rood">
2090                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2091                    Alison Rood                </span>
2092                                    <span class="hidden-xs inline-block member-search-company notranslate">
2093                        Alison Rood Ltd                    </span>
2094                            </a>
2095			<div class="clearfix fpad-sm nobpad"></div>
2096						<div class="clearfix fpad-sm nobpad"></div>
2097						
2098                        				
2099				<p class="small nomargin member-search-description">
2100					Founder and Director of Alison Rood Ltd - Workplace wellness. Coach and trainer.				</p>
2101                    </div>
2102        <div class="info_section hidden-xs col-sm-3 norpad">
2103            <div class="module nomargin fpad-md text-center">
2104                				<a 
2105				title="View Listing - Alison Rood" 
2106				aria-label="View Listing - Alison Rood" 
2107				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2108				href="/top-level-category/alison-rood">View Listing</a>
2109								<div class="clearfix fpad-sm nobpad"></div>
2110				<a 
2111				title="Send Message - Alison Rood" 
2112				aria-label="Send Message - Alison Rood" 
2113				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2114				href="/top-level-category/alison-rood/connect">Send Message</a>
2115				<div class="clearfix"></div>
2116                            </div>
2117        </div>
2118		<div class="clearfix"></div>
2119    </div>
2120</div>
2121<div class="clearfix"></div>
2122<hr>
2123<span class="google-pin-location" id="google-pin" data-token="25"data-hideMessages="0" data-lat="0.00000000" data-lng="0.00000000" data-name="Alison Rood" data-filename="/top-level-category/alison-rood" data-photo="/pictures/profile/pimage-25-255-photo.jpg" data-phone="" data-addon="1"></span><div class="row-fluid member_results level_5 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2124	<meta itemprop="name" content="Chris Dudley">
2125	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2126	<meta itemprop="position" content="2">
2127		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/united-kingdom/leeds/top-level-category/chris-dudley#entity">
2128		<meta itemprop="name" content="Chris Dudley">
2129		<link itemprop="url" href="https://www.thetrainerdirectory.com/united-kingdom/leeds/top-level-category/chris-dudley">
2130		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-22-294-photo.png">
2131		<meta itemprop="priceRange" content="$$">
2132		<meta itemprop="telephone" content="07854637326">
2133				<meta itemprop="description" content="Chris is an experienced and trusted associate trainer who collaborates with various training providers to deliver high-impact workshops both in person and online.">
2134				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2135			<meta itemprop="streetAddress" content="63a Great George St">
2136			<meta itemprop="addressLocality" content="Leeds">
2137			<meta itemprop="addressRegion" content="England">
2138			<meta itemprop="postalCode" content="LS1 3BB">
2139			<meta itemprop="addressCountry" content="GB">
2140		</div>
2141				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2142			<meta itemprop="latitude" content="53.80107440">
2143			<meta itemprop="longitude" content="-1.55222100">
2144		</div>
2145				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/united-kingdom/leeds/top-level-category/chris-dudley#page">
2146	</div>
2147        <div class="grid_element">
2148        <div class="img_section col-xs-2 nopad">
2149            <a title="Chris Dudley - Trainer" href="/united-kingdom/leeds/top-level-category/c
2149hris-dudley">
2150								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Chris Dudley" src="https://www.thetrainerdirectory.com/pictures/profile/pimage-22-294-photo.png" />
2151				   
2152            </a>
2153        </div>
2154        <div class="mid_section col-xs-10 col-sm-7 norpad">
2155            <span class="postItem" data-userid="22" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Free Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Chris Dudley" href="/united-kingdom/leeds/top-level-category/chris-dudley">
2156                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2157                    Chris Dudley                </span>
2158                            </a>
2159			<div class="clearfix fpad-sm nobpad"></div>
2160						<div class="clearfix fpad-sm nobpad"></div>
2161						
2162                        				
2163				<p class="small nomargin member-search-description">
2164					Chris is an experienced and trusted associate trainer who collaborates with various training providers to deliver high-impact workshops both in person and online.				</p>
2165                    </div>
2166        <div class="info_section hidden-xs col-sm-3 norpad">
2167            <div class="module nomargin fpad-md text-center">
2168                				<a 
2169				title="View Listing - Chris Dudley" 
2170				aria-label="View Listing - Chris Dudley" 
2171				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2172				href="/united-kingdom/leeds/top-level-category/chris-dudley">View Listing</a>
2173								<div class="clearfix fpad-sm nobpad"></div>
2174				<a 
2175				title="Send Message - Chris Dudley" 
2176				aria-label="Send Message - Chris Dudley" 
2177				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2178				href="/united-kingdom/leeds/top-level-category/chris-dudley/connect">Send Message</a>
2179				<div class="clearfix"></div>
2180                            </div>
2181        </div>
2182		<div class="clearfix"></div>
2183    </div>
2184</div>
2185<div class="clearfix"></div>
2186<hr>
2187<span class="google-pin-location" id="google-pin" data-token="22"data-hideMessages="0" data-lat="53.80107440" data-lng="-1.55222100" data-name="Chris Dudley" data-filename="/united-kingdom/leeds/top-level-category/chris-dudley" data-photo="/pictures/profile/pimage-22-294-photo.png" data-phone="" data-addon="1"></span><div class="row-fluid member_results level_5 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2188	<meta itemprop="name" content="Dionne Lewis-Reid">
2189	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2190	<meta itemprop="position" content="3">
2191		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/london/top-level-category/dionne-lewis-reid#entity">
2192		<meta itemprop="name" content="Dionne Lewis-Reid">
2193		<link itemprop="url" href="https://www.thetrainerdirectory.com/london/top-level-category/dionne-lewis-reid">
2194		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-41-264-photo.jpg">
2195		<meta itemprop="priceRange" content="$$">
2196		<meta itemprop="telephone" content="N/A">
2197				<meta itemprop="description" content="Dionne is a specialist in EDI, conflict resolution, and outplacement, helping organisations and individuals navigate change with fairness, empathy, and impact.">
2198				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2199			<meta itemprop="streetAddress" content="56 Falkland Park Avenue">
2200			<meta itemprop="addressLocality" content="London">
2201			<meta itemprop="addressRegion" content="N/A">
2202			<meta itemprop="postalCode" content="SE25 6SH">
2203			<meta itemprop="addressCountry" content="GB">
2204		</div>
2205				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2206			<meta itemprop="latitude" content="0.00000000">
2207			<meta itemprop="longitude" content="0.00000000">
2208		</div>
2209				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/london/top-level-category/dionne-lewis-reid#page">
2210	</div>
2211        <div class="grid_element">
2212        <div class="img_section col-xs-2 nopad">
2213            <a title="Dionne Lewis-Reid - Trainer" href="/london/top-level-category/dionne-lewis-reid">
2214								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Dionne Lewis-Reid" src="https://www.thetrainerdirectory.com/pictures/profile/pimage-41-264-photo.jpg" />
2215				   
2216            </a>
2217        </div>
2218        <div class="mid_section col-xs-10 col-sm-7 norpad">
2219            <span class="postItem" data-userid="41" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Free Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Dionne Lewis-Reid" href="/london/top-level-category/dionne-lewis-reid">
2220                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2221                    Dionne Lewis-Reid                </span>
2222                                    <span class="hidden-xs inline-block member-search-company notranslate">
2223                        Lewis-Reid Ltd                    </span>
2224                            </a>
2225			<div class="clearfix fpad-sm nobpad"></div>
2226						<div class="clearfix fpad-sm nobpad"></div>
2227						
2228                        				
2229				<p class="small nomargin member-search-description">
2230					Dionne is a specialist in EDI, conflict resolution, and outplacement, helping organisations and individuals navigate change with fairness, empathy, and impact.				</p>
2231                    </div>
2232        <div class="info_section hidden-xs col-sm-3 norpad">
2233            <div class="module nomargin fpad-md text-center">
2234                				<a 
2235				title="View Listing - Dionne Lewis-Reid" 
2236				aria-label="View Listing - Dionne Lewis-Reid" 
2237				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2238				href="/london/top-level-category/dionne-lewis-reid">View Listing</a>
2239								<div class="clearfix fpad-sm nobpad"></div>
2240				<a 
2241				title="Send Message - Dionne Lewis-Reid" 
2242				aria-label="Send Message - Dionne Lewis-Reid" 
2243				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2244				href="/london/top-level-category/dionne-lewis-reid/connect">Send Message</a>
2245				<div class="clearfix"></div>
2246                            </div>
2247        </div>
2248		<div class="clearfix"></div>
2249    </div>
2250</div>
2251<div class="clearfix"></div>
2252<hr>
2253<span class="google-pin-location" id="google-pin" data-token="41"data-hideMessages="0" data-lat="0.00000000" data-lng="0.00000000" data-name="Dionne Lewis-Reid" data-filename="/london/top-level-category/dionne-lewis-reid" data-photo="/pictures/profile/pimage-41-264-photo.jpg" data-phone="" data-addon="1"></span><div class="row-fluid member_results level_5 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2254	<meta itemprop="name" content="Laure Goubau">
2255	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2256	<meta itemprop="position" content="4">
2257		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/top-level-category/laure-goubau#entity">
2258		<meta itemprop="name" content="Laure Goubau">
2259		<link itemprop="url" href="https://www.thetrainerdirectory.com/top-level-category/laure-goubau">
2260		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-47-254-photo.jpg">
2261		<meta itemprop="priceRange" content="$$">
2262		<meta itemprop="telephone" content="N/A">
2263				<meta itemprop="description" content="Laure Goubau is an Executive Coach and Leadership Development Expert, and the Founder &amp; CEO of Gloria Coach.">
2264				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2265			<meta itemprop="streetAddress" content="Montreal, Quebec, Canada">
2266			<meta itemprop="addressLocality" content="N/A">
2267			<meta itemprop="addressRegion" content="N/A">
2268			<meta itemprop="postalCode" content="N/A">
2269			<meta itemprop="addressCountry" content="GB">
2270		</div>
2271				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2272			<meta itemprop="latitude" content="0.00000000">
2273			<meta itemprop="longitude" content="0.00000000">
2274		</div>
2275				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/top-level-category/laure-goubau#page">
2276	</div>
2277        <div class="grid_element">
2278        <div class="img_section col-xs-2 nopad">
2279            <a title="Laure Goubau - Trainer" href="/top-level-category/laure-goubau">
2280								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Laure Goubau" src="https://www.thetrainerdirectory.com/pictures/profile/pimage-47-254-photo.jpg" />
2281				   
2282            </a>
2283        </div>
2284        <div class="mid_section col-xs-10 col-sm-7 norpad">
2285            <span class="postItem" data-userid="47" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Free Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Laure Goubau" href="/top-level-category/laure-goubau">
2286                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2287                    Laure Goubau                </span>
2288                                    <span class="hidden-xs inline-block member-search-company notranslate">
2289                        Executive Coach, Leadership &amp; Talent Development Expert                    </span>
2290                            </a>
2291			<div class="clearfix fpad-sm nobpad"></div>
2292						<div class="clearfix fpad-sm nobpad"></div>
2293						
2294                        				
2295				<p class="small nomargin member-search-description">
2296					Laure Goubau is an Executive Coach and Leadership Development Expert, and the Founder & CEO of Gloria Coach.				</p>
2297                    </div>
2298        <div class="info_section hidden-xs col-sm-3 norpad">
2299            <div class="module nomargin fpad-md text-center">
2300                				<a 
2301				title="View Listing - Laure Goubau" 
2302				aria-label="View Listing - Laure Goubau" 
2303				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2304				href="/top-level-category/laure-goubau">View Listing</a>
2305								<div class="clearfix fpad-sm nobpad"></div>
2306				<a 
2307				title="Send Message - Laure Goubau" 
2308				aria-label="Send Message - Laure Goubau" 
2309				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2310				href="/top-level-category/laure-goubau/connect">Send Message</a>
2311				<div class="clearfix"></div>
2312                            </div>
2313        </div>
2314		<div class="clearfix"></div>
2315    </div>
2316</div>
2317<div class="clearfix"></div>
2318<hr>
2319<span class="google-pin-location" id="google-pin" data-token="47"data-hideMessages="0" data-lat="0.00000000" data-lng="0.00000000" data-name="Laure Goubau" data-filename="/top-level-category/laure-goubau" data-photo="/pictures/profile/pimage-47-254-photo.jpg" data-phone="" data-addon="1"></span><div class="row-fluid member_results level_1 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2320	<meta itemprop="name" content="ALASTAIR DUNS">
2321	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2322	<meta itemprop="position" content="5">
2323		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/kimberley/top-level-category/alastair-duns#entity">
2324		<meta itemprop="name" content="ALASTAIR DUNS">
2325		<link itemprop="url" href="https://www.thetrainerdirectory.com/kimberley/top-level-category/alastair-duns">
2326		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-40-350-photo.jpg">
2327		<meta itemprop="priceRange" content="$$">
2328		<meta itemprop="telephone" content="07765825703">
2329				<meta itemprop="description" content="I&#039;m a trainer in leadership, high-performance teams &amp; resilience. ​ I deliver global sessions in English, French, and Spanish, fostering growth and adaptability.">
2330				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2331			<meta itemprop="streetAddress" content="20 Norman Street">
2332			<meta itemprop="addressLocality" content="Kimberley">
2333			<meta itemprop="addressRegion" content="N/A">
2334			<meta itemprop="postalCode" content="NG16 2LA">
2335			<meta itemprop="addressCountry" content="GB">
2336		</div>
2337				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2338			<meta itemprop="latitude" content="0.00000000">
2339			<meta itemprop="longitude" content="0.00000000">
2340		</div>
2341				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/kimberley/top-level-category/alastair-duns#page">
2342	</div>
2343        <div class="grid_element">
2344        <div class="img_section col-xs-2 nopad">
2345            <a title="ALASTAIR DUNS - Trainer" href="/kimberley/top-level-category/alastair-duns">
2346								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="ALASTAIR DUNS" data-src="https://www.thetrainerdirectory.com/pictures/profile/pimage-40-350-photo.jpg">
2347				   
2348            </a>
2349        </div>
2350        <div class="mid_section col-xs-10 col-sm-7 norpad">
2351            <span class="postItem" data-userid="40" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Basic Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="ALASTAIR DUNS" href="/kimberley/top-level-category/alastair-duns">
2352                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2353                    ALASTAIR DUNS                </span>
2354                            </a>
2355			<div class="clearfix fpad-sm nobpad"></div>
2356						<div class="clearfix fpad-sm nobpad"></div>
2357						
2358                        				
2359				<p class="small nomargin member-search-description">
2360					I'm a trainer in leadership, high-performance teams & resilience. ​ I deliver global sessions in English, French, and Spanish, fostering growth and adaptability.				</p>
2361                    </div>
2362        <div class="info_section hidden-xs col-sm-3 norpad">
2363            <div class="module nomargin fpad-md text-center">
2364                				<a 
2365				title="View Listing - ALASTAIR DUNS" 
2366				aria-label="View Listing - ALASTAIR DUNS" 
2367				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2368				href="/kimberley/top-level-category/alastair-duns">View Listing</a>
2369								<div class="clearfix fpad-sm nobpad"></div>
2370				<a 
2371				title="Send Message - ALASTAIR DUNS" 
2372				aria-label="Send Message - ALASTAIR DUNS" 
2373				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2374				href="/kimberley/top-level-category/alastair-duns/connect">Send Message</a>
2375				<div class="clearfix"></div>
2376                            </div>
2377        </div>
2378		<div class="clearfix"></div>
2379    </div>
2380</div>
2381<div class="clearfix"></div>
2382<hr>
2383<span class="google-pin-location" id="google-pin" data-token="40"data-hideMessages="0" data-lat="0.00000000" data-lng="0.00000000" data-name="ALASTAIR DUNS" data-filename="/kimberley/top-level-category/alastair-duns" data-photo="/pictures/profile/pimage-40-350-photo.jpg" data-phone="" data-addon="0"></span><div class="row-fluid member_results level_1 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2384	<meta itemprop="name" content="Jonathan Cann">
2385	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2386	<meta itemprop="position" content="6">
2387		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/accra/top-level-category/jonathan-cann#entity">
2388		<meta itemprop="name" content="Jonathan Cann">
2389		<link itemprop="url" href="https://www.thetrainerdirectory.com/accra/top-level-category/jonathan-cann">
2390		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-46-362-photo.jpeg">
2391		<meta itemprop="priceRange" content="$$">
2392		<meta itemprop="telephone" content="0501335817">
2393				<meta itemprop="description" content="I am the CEO of JPCann Associates Group. Also a lead Facilitator and Trainer specializing in Governance, Risk Management, Compliance &amp; Finance. ">
2394				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2395			<meta itemprop="streetAddress" content="Kokomlemle">
2396			<meta itemprop="addressLocality" content="Accra">
2397			<meta itemprop="addressRegion" content="N/A">
2398			<meta itemprop="postalCode" content="N/A">
2399			<meta itemprop="addressCountry" content="GB">
2400		</div>
2401				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2402			<meta itemprop="latitude" content="0.00000000">
2403			<meta itemprop="longitude" content="0.00000000">
2404		</div>
2405				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/accra/top-level-category/jonathan-cann#page">
2406	</div>
2407        <div class="grid_element">
2408        <div class="img_section col-xs-2 nopad">
2409            <a title="Jonathan Cann - Trainer" href="/accra/top-level-category/jonathan-cann">
2410								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="Jonathan Cann" data-src="https://www.thetrainerdirectory.com/pictures/profile/pimage-46-362-photo.jpeg">
2411				   
2412            </a>
2413        </div>
2414        <div class="mid_section col-xs-10 col-sm-7 norpad">
2415            <span class="postItem" data-userid="46" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Basic Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Jonathan Cann" href="/accra/top-level-category/jonathan-cann">
2416                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2417                    Jonathan Cann                </span>
2418                                    <span class="hidden-xs inline-block member-search-company notranslate">
2419                        JPCann Associates                    </span>
2420                            </a>
2421			<div class="clearfix fpad-sm nobpad"></div>
2422						<div class="clearfix fpad-sm nobpad"></div>
2423						
2424                        				
2425				<p class="small nomargin member-search-description">
2426					I am the CEO of JPCann Associates Group. Also a lead Facilitator and Trainer specializing in Governance, Risk Management, Compliance & Finance. 				</p>
2427                    </div>
2428        <div class="info_section hidden-xs col-sm-3 norpad">
2429            <div class="module nomargin fpad-md text-center">
2430                				<a 
2431				title="View Listing - Jonathan Cann" 
2432				aria-label="View Listing - Jonathan Cann" 
2433				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2434				href="/accra/top-level-category/jonathan-cann">View Listing</a>
2435								<div class="clearfix fpad-sm nobpad"></div>
2436				<a 
2437				title="Send Message - Jonathan Cann" 
2438				aria-label="Send Message - Jonathan Cann" 
2439				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2440				href="/accra/top-level-category/jonathan-cann/connect">Send Message</a>
2441				<div class="clearfix"></div>
2442                            </div>
2443        </div>
2444		<div class="clearfix"></div>
2445    </div>
2446</div>
2447<div class="clearfix"></div>
2448<hr>
2449<span class="google-pin-location" id="google-pin" data-token="46"data-hideMessages="0" data-lat="0.00000000" data-lng="0.00000000" data-name="Jonathan Cann" data-filename="/accra/top-level-category/jonathan-cann" data-photo="/pictures/profile/pimage-46-362-photo.jpeg" data-phone="" data-addon="0"></span><div class="row-fluid member_results level_1 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2450	<meta itemprop="name" content="Peter Gandolfo">
2451	<link itemprop="url" href="https://www.thetrainerdirectory.com/search_results">
2452	<meta itemprop="position" content="7">
2453		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.thetrainerdirectory.com/top-level-category/peter-gandolfo#entity">
2454		<meta itemprop="name" content="Peter Gandolfo">
2455		<link itemprop="url" href="https://www.thetrainerdirectory.com/top-level-category/peter-gandolfo">
2456		<link itemprop="image" href="https://www.thetrainerdirectory.com/pictures/profile/pimage-45-47-photo.jpg">
2457		<meta itemprop="priceRange" content="$$">
2458		<meta itemprop="telephone" content="N/A">
2459				<meta itemprop="description" content="Peter Gandolfo is an Executive Coach and founder of Gandolfo Group.">
2460				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2461			<meta itemprop="streetAddress" content="N/A">
2462			<meta itemprop="addressLocality" content="N/A">
2463			<meta itemprop="addressRegion" content="N/A">
2464			<meta itemprop="postalCode" content="N/A">
2465			<meta itemprop="addressCountry" content="GB">
2466		</div>
2467				<link itemprop="mainEntityOfPage" href="https://www.thetrainerdirectory.com/top-level-category/peter-gandolfo#page">
2468	</div>
2469        <div class="grid_element">
2470        <div class="img_section col-xs-2 nopad">
2471            <a title="Peter Gandolfo - Trainer" href="/top-level-category/peter-gandolfo">
2472								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="Peter Gandolfo" data-src="https://www.thetrainerdirectory.com/pictures/profile/pimage-45-47-photo.jpg">
2473				   
2474            </a>
2475        </div>
2476        <div class="mid_section col-xs-10 col-sm-7 norpad">
2477            <span class="postItem" data-userid="45" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="SAVE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Basic Membership"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>SAVE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Peter Gandolfo" href="/top-level-category/peter-gandolfo">
2478                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2479                    Peter Gandolfo                </span>
2480                                    <span class="hidden-xs inline-block member-search-company notranslate">
2481                        Founder of Gandolfo Group; Master Certified Coach (MCC, ICF)                    </span>
2482                            </a>
2483			<div class="clearfix fpad-sm nobpad"></div>
2484						<div class="clearfix fpad-sm nobpad"></div>
2485						
2486                        				
2487				<p class="small nomargin member-search-description">
2488					Peter Gandolfo is an Executive Coach and founder of Gandolfo Group.				</p>
2489                    </div>
2490        <div class="info_section hidden-xs col-sm-3 norpad">
2491            <div class="module nomargin fpad-md text-center">
2492                				<a 
2493				title="View Listing - Peter Gandolfo" 
2494				aria-label="View Listing - Peter Gandolfo" 
2495				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2496				href="/top-level-category/peter-gandolfo">View Listing</a>
2497								<div class="clearfix fpad-sm nobpad"></div>
2498				<a 
2499				title="Send Message - Peter Gandolfo" 
2500				aria-label="Send Message - Peter Gandolfo" 
2501				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2502				href="/top-level-category/peter-gandolfo/connect">Send Message</a>
2503				<div class="clearfix"></div>
2504                            </div>
2505        </div>
2506		<div class="clearfix"></div>
2507    </div>
2508</div>
2509<div class="clearfix"></div>
2510<hr>
2511</div>
2512
2513    <div class="map_container" style="display:none;">
2514        <style type='text/css'> .info_window p {
2515	text-align: center;
2516	font-size: 12px;
2517	margin: 5px 0;
2518}
2519.info_window > a {
2520	display: block;
2521	text-align: center;
2522	margin: 5px 0;
2523}
2524.info_window img {
2525	display: block;
2526	max-width: 125px;
2527	margin: 0 auto;
2528	max-height:80px;
2529}
2530.info_window {
2531	width: 150px;
2532}
2533.gm-style-iw div div {
2534	overflow: visible!important;
2535}
2536#map-canvas {
2537	height: 500px;
2538	margin-bottom: 15px;
2539	width: 100%;
2540}
2541.suggestion-search-location {
2542	margin: 2px 2px;
2543	color: #333;
2544	background-color: #CEDDE9;
2545	display: inline-block;
2546	padding: 5px 11px;
2547}
2548
2549.other-locations-container {
2550	overflow: hidden;
2551	max-height: 32px;
2552	transition: all 0.5s ease 0s;
2553}
2554span.show-more-suggestions {
2555	padding: 5px;
2556	margin: 0px 13px 9px 4px;
2557	display: inline-block;
2558	cursor: pointer;
2559	color: #1a0dab;
2560	font-weight: 500;
2561}
2562span.show-more-suggestions:hover {
2563	text-decoration: underline;
2564}
2565.suggestions-heading {
2566	margin-bottom: 5px;
2567} </style><div data-id="map-canvas"></div>    </div>
2568<script>
2569	 function clickToCall (element, hideFlag=true) {
2570		 if(hideFlag){
2571       	 	$(element).siblings().toggleClass("hide");
2572        	$(element).remove();
2573		} else {
2574			$(element).addClass("hide").siblings().removeClass("hide");
2575		}
2576	 }
2577	</script>
2577
2578                    </div>
2579                </div>
2580					            </div>
2581
2582                        <div class="col-md-3 col-md-pull-9 sidebar-container">            <!--
2583
2584This search module will detect which of the default membership features' search results pages is being viewed and display the related search feature.
2585
2586IMPORTANT: This module will only work with the default search features that come with the software when they are using the default forms associated with those features.  If the form or the membership feature is modified, this widget may not work as expected.
2587
2588-->
2589
2590<div class="module sidebar-search-member-keyword-location">
2591	<h2>Find Trainers</h2>
2592	<form action="/search_results" class="website-search"  accept-charset="UTF-8" method="get">
2593				
2594		<div class="form-group normal-autosuggest">	
2595						<label>What training do you need:</label>
2596						<input type="text" name="q" value="" placeholder="Name or Keyword" class="form-control member_search">
2597		</div>
2598		
2599		<div class="form-group">
2600						<label>Search by location:</label>
2601						<input type=text autocomplete="off" placeholder="City or Post Code" class="googleSuggest googleLocation form-control" id="location_google_maps_homepage" name="location_value" value="">
2602		</div>
2603		
2604		<div class="form-group nomargin">
2605			<button class="btn btn-primary btn-block" type="submit">Search Now</button>    
2606		</div>    
2607	</form>
2608</div><div class="module newsletter-sign-up-form">
2609	<h2 class="bpad text-center">Join Our Newsletter</h2>
2610	<a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-primary btn-block">
2611		Click to Subscribe
2612	</a>
2613</div>
2614
2615<div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
2616	<div class="modal-dialog">
2617		<div class="modal-content">
2618			<div class="container-fluid">
2619				<div class="row">
2620					<div class="col-md-12">
2621						<br>
2622						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2623							<span aria-hidden="true">&times;</span>
2624						</button>
2625						<h3 class="nomargin">
2626							Join Our Newsletter
2627						</h3>
2628						<hr>
2629						<div class="newsletter_modal_form_container">
2630							 <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Module%20-%20Newsletter%20Actions" id="newsletter_modal_signup_380" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div=".newsletter_modal_form_container" return_data_type="" name="newsletter_modal_signup_380" class=" "><input type="hidden" name="sized" value="0" id="newsletter_modal_signup_380-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="newsletter_modal_signup_380-element-1"/><input type="hidden" name="form" value="myform" id="newsletter_modal_signup_380-element-2"/><input type="hidden" name="formname" value="newsletter_modal_signup" id="newsletter_modal_signup_380-element-3"/><input type="hidden" name="dowiz" value="1" id="newsletter_modal_signup_380-element-4"/><input type="hidden" name="save" value="1" id="newsletter_modal_signup_380-element-5"/><input type="hidden" name="url_origin_pars" value="/search_results" id="newsletter_modal_signup_380-element-6"/><input type="hidden" name="action" autocomplete="off" value="subscribe" id="newsletter_modal_signup_380-element-7"/><div class="form-group"><input type="text" name="first_name" placeholder="Name" autocomplete="off" value class="form-control control-group  form-control " id="newsletter_modal_signup_380-element-8"/></div><div class="form-group"><input type="email" name="email" required placeholder="Enter email address" autocomplete="off" value class="form-control control-group form-control" id="newsletter_modal_signup_380-element-9"/></div>	<div class="clearfix"></div>
2631	<div class="gdpr_consent_email well bmargin">
2632						<div class="form-group nomargin text-left">
2633					<div class="checkbox nomargin">
2634						<label class="bmargin small"> <input type="checkbox" class="consent_history" name="consent_history[1]" autocomplete="off" value="1" required="required" data-fv-notempty="true" data-fv-notempty-message="You must agree to the GDPR consent terms"/>
2635							<span class="required">* </span> I understand that the email I enter will be stored by the website. I understand that I may be contacted by the Admin of the website at this email.						</label>
2636					</div>
2637				</div>
2638				</div>
2639<div class="form-group"><div class="form-group security_question_label">
2640            <div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
2641        <div class="g-recaptcha"  id="newsletter_modal_signup_380-google-recaptcha"></div>
2642    </div>
2643    <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>
2644    <div class="clearfix bmargin"></div>
2645    <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
2646</div>
2647    <style>
2648        .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 {
2649            transform: scale(0.77);
2650            -webkit-transform: scale(0.77);
2651            transform-origin: 0 0;
2652            -webkit-transform-origin: 0 0;
2653            margin-bottom: -15px;
2654        }
2655
2656        .modal #newsletter_modal_signup_380-captchaContainer, .col-md-4 #newsletter_modal_signup_380-captchaContainer, .col-md-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-4 #newsletter_modal_signup_380-captchaContainer {
2657            transform: scale(0.77);
2658            -webkit-transform: scale(0.77);
2659            transform-origin: 0 0;
2660            -webkit-transform-origin: 0 0;
2661            margin-bottom: -15px;
2662        }
2663    </style>
2664    
2664<script type="text/javascript">
2665        if(typeof formsFound == "undefined"){
2666            var formID                  = '';
2667            var currentCaptcha          = {};
2668            var captchaHolders          = {};
2669            var formsFound              = {};
2670            var captchaApiRequested     = false;
2671            /* The forms the visitor has actually interacted with - only these get a widget. */
2672            var captchaArmedForms       = [];
2673            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
2674               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
2675               and presses Enter without ever clicking, so api.js never loaded, the captcha
2676               never rendered, and the form POSTed an empty token. */
2677            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
2678
2679            window.addEventListener('load', () => {
2680                formID = document.querySelectorAll('[name="recaptcha"]');
2681                if (typeof formID != "undefined" && formID !== null) {
2682                    for (let i = 0; i < formID.length; i++) {
2683                        let formIDForm      = formID[i].closest('form');
2684                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
2685
2686                        if (typeof formsFound[formIDForm.id] != "undefined") {
2687                            formsFound[formIDForm.id]['counter']++;
2688                        }else{
2689                            formsFound[formIDForm.id] = {'counter' : 1};
2690                        }
2691
2692                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
2693                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
2694
2695                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
2696                            captchaTriggerEvents.forEach( evt =>
2697                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
2698                            );
2699                        }
2700                    }
2701                }
2702            });
2703        }
2704
2705        function reCaptchaOnFormInteraction(event) {
2706            if (event && event.currentTarget) {
2707                captchaArmForm(event.currentTarget);
2708            }
2709            if (captchaApiRequested) {
2710                renderArmedCaptchas();
2711                return;
2712            }
2713            captchaApiRequested = true;
2714
2715            var head    = document.getElementsByTagName('head')[0];
2716            var script  = document.createElement('script');
2717            script.type = 'text/javascript';
2718            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
2719            head.appendChild(script);
2720        }
2721
2722        var captchaArmForm = function (formEl) {
2723            if (!formEl) {
2724                return;
2725            }
2726            for (var a = 0; a < captchaArmedForms.length; a++) {
2727                if (captchaArmedForms[a] === formEl) {
2728                    return;
2729                }
2730            }
2731            captchaArmedForms.push(formEl);
2732        };
2733
2734        var captchaSolvedCallback = function (holder) {
2735            return function () {
2736                var formEl = holder.closest('form');
2737                if (!formEl) {
2738                    return;
2739                }
2740                $(formEl).find('.security_question_label').removeClass('has-error');
2741                $(formEl).find('#recaptcha_error').css('display', 'none');
2742                var notification = document.getElementById(formEl.id + '-notification');
2743                if (notification && notification.classList.contains('alert-danger-subtle')) {
2744                    $(notification).slideUp();
2745                }
2746            };
2747        };
2748
2749        var renderArmedCaptchas = function () {
2750            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
2751                return;
2752            }
2753            for (var f = 0; f < captchaArmedForms.length; f++) {
2754                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
2754aptcha]');
2755
2756                if (!holder || !holder.id || holder.getClientRects().length === 0) {
2757                    continue;
2758                }
2759                /* Guard a second render: grecaptcha throws on an element it already claimed. */
2760                if (typeof captchaHolders[holder.id] === "undefined") {
2761                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
2762                        'sitekey': '6LefnrMqAAAAAJ7P0zC7FpwVr8HmTffHnk3k7ZBX',
2763                        'callback': captchaSolvedCallback(holder)
2764                    });
2765                }
2766            }
2767        };
2768
2769        var onloadCallback = function (event) {
2770            renderArmedCaptchas();
2771        };
2772
2773    </script>
vendor: 1 bytes, line 2773
2773
2774<script>
2775    $(document).ready(function(){
2776        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
2777           the submit button, so the click guard below never sees it and the form POSTed an
2778           empty token. Bound on document/capture so it runs before FormValidation's own
2779           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
2780           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
2781           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
2782        var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
2783        if (captchaGuardedForm) {
2784            document.addEventListener('submit', function (event) {
2785                if (event.target !== captchaGuardedForm) {
2786                    return;
2787                }
2788
2789                var formId              = captchaGuardedForm.id;
2790                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
2791                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
2792
2793                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
2794                    $("#" + formId + " .security_question_label").removeClass("has-error");
2795                    $("#" + formId + " #recaptcha_error").css("display", "none");
2796                    return;
2797                }
2798
2799                /* Unsolved, or api.js still in flight: either way there is no token to send. */
2800                event.preventDefault();
2801                event.stopImmediatePropagation();
2802                $("#" + formId + " .security_question_label").addClass("has-error");
2803                $("#" + formId + " #recaptcha_error").css("display", "block");
2804                return false;
2805            }, true);
2806        }
2807        $("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
2808        $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
2809
2810            var formId = $(this.form).attr('id');
2811            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
2812
2813            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
2814                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
2815                    event.preventDefault();
2816                    $("#" + formId).formValidation('validate');
2817                    $("#" + formId + " .security_question_label").addClass("has-error");
2818                    $("#" + formId + " #recaptcha_error").css("display", "block");
2819                    return false;
2820                }
2821
2822                /* Solved captcha: clear the error UI and let the click proceed untouched.
2823                   The browser then fires a REAL, button-initiated submit event, so
2824                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
2825                   checkout / native POST on login). Re-submitting here artificially broke
2826                   both ways: native form.submit() skips the FV chain (checkout rendered the
2827                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
2828                   refuses, leaving the form stuck after the first error (Bug 2). */
2829                $("#" + formId + " .security_question_label").removeClass("has-error");
2830                $("#" + formId + " #recaptcha_error").css("display", "none");
2831            }
2832        });
2833    });
2834</script>
2834</div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="newsletter_modal_signup_380-element-12"/></div><div class="form-actions"><input type="submit" value="Subscribe Now" name class="btn btn-primary btn-block btn-lg  bold " id="newsletter_modal_signup_380-element-13"/></div><input type='hidden' name='origin' value='/search_results'></form>
2834<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#newsletter_modal_signup_380").bind("submit", function() { 
2835		});}); </script>
2835 						</div>						
2836						<br>
2837					</div>
2838				</div>
2839			</div>
2840		</div>
2841	</div>
2842</div><div class="module member-join-offer">
2843	<h2>Join Our Community</h2>
2844	<p>
2845		<b>1.</b> Register an account<br>
2846		<b>2.</b> Create a searchable listing<br> 
2847		<b>3.</b> Connect with more clients
2848	</p>
2849	<a title="Get Listed Today" href="/join" class="btn btn-primary btn-block">Get Listed Today</a>
2850</div>	
2851        </div>
2852        </div>
2853    
2854            <div class="clearfix"></div>
2855    </div>
2856</div>
2857</main>
2858<!-- End Content -->
2859<div class="clearfix footer-clear-element clearfix-lg"></div>
2860
2861<div class="footer">
2862    <div class="container">
2863        <div class="row">
2864            <ul class="footer_menu sm-text-center">
2865                <li class='col-md-5'><span id='link323'  class='head'> About</span><ul><li class=''><span id='link324'  class='content'> The place for Trainers, and the place to find Trainers.</span></li><li class=''><span id='link351'  class='companynumber'> The Trainer Directory Limited | Company Number 16109907</span></li></ul></li><li class='col-md-2 col-md-offset-1'><span id='link325'  class='head'> Website</span><ul><li class=''><a href='/about' id='link326'>About</a></li><li class=''><a href='/about/contact' id='link327'>Contact Us</a></li></ul></li><li class='col-md-2'><span id='link328'  class='head'> Search</span><ul><li class=''><a href='/search_results' id='link329'>Browse Directory</a></li></ul></li><li class='col-md-2'><span id='link331'  class='head'> Support</span><ul><li class=''><a href='/login' id='link332'>Member Login</a></li><li class=''><a href='/login/retrieval' id='link333'>Reset Password</a></li></ul></li><li class='col-md-12 clearfix'><span id='link334'> </span></li><li class='col-md-5 vpad vmargin'><span id='link335'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style>
2866<div class="list-social-links">
2867	<a class="network-icon contact" href="/about/contact" title="Contact Us The Trainer Directory">
2868		<i class="bi bi-envelope"></i>
2869	</a> 
2870			     
2871	      
2872		 
2873						<div class="clearfix"></div>
2874</div></span></li><li class='col-md-6 col-md-offset-1 vpad vmargin'><a href='/join' id='link336'  class='btn btn_footer_get_listed btn-lg btn-block bold center sm-block'>Trainers - Join Us Today</a></li><li class='col-md-12 clearfix vmargin text-center'><span id='link337'> </span><ul><li class='clearfix vmargin vpad inline-block'><span id='link338'> </span></li><li class='btn-lg font-sm  novpad  norpad inline-block'><span id='link339'> © 2026</span></li><li class='font-sm inline-block hpad'><a href='/' id='link340'  title='The Trainer Directory'>The Trainer Directory</a></li><li class='font-sm inline-block'><span id='link341'> All Rights Reserved</span></li><li class='font-sm inline-block hpad'><a href='/about/terms' id='link342'  title='Terms of Use'>Terms of Use</a></li><li class='font-sm inline-block'><a href='/about/privacy' id='link343'  title='Privacy Policy'>Privacy Policy</a></li></ul></li>            </ul>
2875        </div>
2876		    </div>
2877</div><style type='text/css'> .scrollup {
2878  border-radius: 3px;
2879  width: 40px;
2880  height: 40px;
2881  opacity: 0.4;
2882  position: fixed;
2883  bottom: 30px;
2884  right: 30px;
2885  display: none;
2886  background: rgba(119, 119, 119, 0.8);
2887  z-index: 1000000;
2888}
2889.scrollup i {
2890  font-size: 36px;
2891  color: white;
2892  position: relative;
2893  top: 0px;
2894  left: 10px;
2895} </style>            <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"
2896                 data-backdrop="static" data-keyboard="false">
2897                <div class="modal-dialog" role="document">
2898                    <div class="modal-content">
2899                        <div class="modal-body nohpad nobpad">
2900                            <button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin"
2901                                    data-dismiss="modal">&times;
2902                            </button>
2903                                <style>
2904        .member-login-container:not(.modal .module) {
2905            width: 555px;
2906            max-width: 100%;
2907            margin-left: auto;
2908            margin-right: auto;
2909            margin-bottom:0;
2910            background-color: rgb(255, 255, 255)!important;
2911            border-color: rgb(255, 255, 255)!important;
2912            color: rgb(41, 41, 41)!important;
2913        }
2914        .login-register-tabs, .login-register-content {
2915            width: 555px!important;
2916            max-width: 100%;
2917            margin-left: auto!important;
2918            margin-right: auto!important;
2919            background-color: rgb(255, 255, 255);
2920        }
2921        .login-register-content {
2922            background: transparent;
2923            padding: 0;
2924            border: none;
2925        }
2926        .login-register-content h2, .login-register-content h2+hr, .login-register-content .account-menu-title {
2927            display: none!important;
2928        }
2929        .express_login_create_account_prefix hr {
2930            margin: 15px 0 10px;
2931        }
2932        .modal-content #containerFBLogin, .modal-content #containerGoogleLogin {
2933            margin:15px 0;
2934        }
2935
2936        /* CSS When Login Form and Express Registration Rendered in Sidebar */
2937        .col-md-3 .bd-chat-well-container,.col-md-4 .bd-chat-well-container {
2938            padding: 15px 10px;
2939        }
2940        .col-md-3 .bd-chat-center-text,.col-md-4 .bd-chat-center-text {
2941            margin: 0;
2942            font-size: 20px;
2943            padding: 0 15px;
2944        }
2945        .col-md-3 .member-login-page-container .login-register-tabs *, .col-md-4 .member-login-page-container .login-register-tabs * {
2946            font-size: 12px;
2947            line-height: 1.2em;
2948            vertical-align: bottom;
2949        }
2950        .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
2951            padding: 5px !important;
2952            height: 50px;
2953            vertical-align: middle;
2954            display: table-cell !important;
2955            width: 1%;
2956        }
2957        .col-md-3 .member-login-page-container .login-register-content, .col-md-4  .member-login-page-container .login-register-content {
2958            padding: 0;
2959        }
2960        .col-md-3 .member-login-container, .col-md-4 .member-login-container {
2961            padding: 15px !important;
2962            font-size: 13px;
2963        }
2964        .col-md-3 .member-login-page-container .input-lg, .col-md-4 .member-login-page-container .input-lg {
2965            height: 34px;
2966            padding: 6px 12px;
2967            font-size: 14px;
2968        }
2969        .col-md-3 .member-login-page-container .security_question_label, .col-md-4 .member-login-page-container .security_question_label {
2970            transform: scale(.85);
2971            margin: -1.15em -1.15em 0;
2972        }
2973        .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 {
2974            width: 100%;
2975            display: block;
2976            margin-top:5px;
2977        }
2978        .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
2979            padding:0
2980        }
2981        .col-md-3 .login-cta-buttons ul.nav, .col-md-4 .login-cta-buttons ul.nav {
2982            margin-top: -10px;
2983        }
2984        .col-md-3 #googleAction, .col-md-3 #facebookAction, .col-md-4 #googleAction, .col-md-4 #facebookAction {
2985            padding: 0;
2986            min-height: 0;
2987            font-size: 14px;
2988            margin: 0;
2989        }
2990        .col-md-3 #googleAction img, .col-md-3 #facebookAction img, .col-md-4 #googleAction img, .col-md-4 #facebookAction img {
2991            height: 36px !important;
2992            margin-right: 5px;
2993            position: relative!important;
2994            display: inline-block;
2995        }
2996        @media only screen and (max-width: 767px) {
2997            .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
2998                display: block !important;
2999                width: 100%;
3000                line-height: 40px;
3001            }
3002
3003            #containerGoogleLogin {
3004                text-align: center;
3005                margin-top: 10px;
3006            }
3007            #containerGoogleLogin #gBtn {
3008                display: inline-block;
3009            }
3010        }
3011    </style>
3012    <div class="row member-login-page-container">
3013        <div class="fpad-lg novpad">
3014
3015            
3016                                    <div class="module fpad-xl member-login-container">
3017                         <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" id="member_login_190" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="redirect" form_action_div return_data_type="" name="member_login_190" class=" ">
3017<input type="hidden" name="sized" value="0" id="member_login_190-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="member_login_190-element-1"/><input type="hidden" name="form" value="myform" id="member_login_190-element-2"/><input type="hidden" name="formname" value="member_login" id="member_login_190-element-3"/><input type="hidden" name="dowiz" value="1" id="member_login_190-element-4"/><input type="hidden" name="save" value="1" id="member_login_190-element-5"/><input type="hidden" name="url_origin_pars" value="/search_results" id="member_login_190-element-6"/><input type="hidden" name="action" autocomplete="off" value="login" id="member_login_190-element-7"/><h2 class="nomargin member-login-h2-form-title">Member Login</h2><hr><style type='text/css'> #containerGoogleLogin #gBtn {
3018    display: inline-block;
3019    text-align: center;
3020    width: 216px;
3021}
3022
3023.module #containerFBLogin #facebookAction img, .module #containerFBLogin #facebookAction img {
3024    position: absolute !important;
3025}
3026.module #containerFBLogin a#facebookAction {
3027    max-width: 200px;
3028    position: relative;
3029    left: -8px;
3030    
3031} </style>    <!-- Required Font-Family for Social Buttons -->
3032    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap">
3033    <noscript>
3034        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap">
3035    </noscript>
3036
3037    <div class="row social-login-row">
3038    </div><div class="form-group"><label class="vertical-label bd-email" for="member_login_190-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-element-10"/></div><div class="form-group"><label class="vertical-label bd-password" for="member_login_190-element-11"><span class="required">* </span>Password</label>
3039                    <style>
3040                        #togglePassword {
3041                            background: none;
3042                            border: none;
3043                            cursor: pointer;
3044                            font-weight: bold;
3045                            font-size: .85em;
3046                            position: absolute;
3047                            right: 5px;
3048                            top: 0;
3049                        }
3050                    </style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button>
3051                
3051<script>
3052                    function showPassword(node){
3053                        const parent = node.closest('.form-group');
3054                        const passwordField = parent.querySelector(`input[type='password'], input[type='text']`);
3055                        const isPassword = passwordField.getAttribute('type') === 'password';
3056                        passwordField.setAttribute('type', isPassword ? 'text' : 'password');
3057                        const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`;
3058                        node.innerHTML = iconHTML;
3059                    }       
3060               </script>
3060<input type="password" name="pass" required placeholder="Enter Password" autocomplete="off" value class="form-control input-lg" id="member_login_190-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">
3061            <div id="member_login_190-captchaContainer" class="control-group">
3062        <div class="g-recaptcha"  id="member_login_190-google-recaptcha"></div>
3063    </div>
3064    <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>
3065    <div class="clearfix bmargin"></div>
3066    <input type="hidden" name="recaptcha" id="member_login_190-rcap">
3067</div>
3068    <style>
3069        .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 {
3070            transform: scale(0.77);
3071            -webkit-transform: scale(0.77);
3072            transform-origin: 0 0;
3073            -webkit-transform-origin: 0 0;
3074            margin-bottom: -15px;
3075        }
3076
3077        .modal #member_login_190-captchaContainer, .col-md-4 #member_login_190-captchaContainer, .col-md-3 #member_login_190-captchaContainer, .col-lg-3 #member_login_190-captchaContainer, .col-lg-4 #member_login_190-captchaContainer {
3078            transform: scale(0.77);
3079            -webkit-transform: scale(0.77);
3080            transform-origin: 0 0;
3081            -webkit-transform-origin: 0 0;
3082            margin-bottom: -15px;
3083        }
3084    </style>
3085    
3085<script type="text/javascript">
3086        if(typeof formsFound == "undefined"){
3087            var formID                  = '';
3088            var currentCaptcha          = {};
3089            var captchaHolders          = {};
3090            var formsFound              = {};
3091            var captchaApiRequested     = false;
3092            /* The forms the visitor has actually interacted with - only these get a widget. */
3093            var captchaArmedForms       = [];
3094            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
3095               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
3096               and presses Enter without ever clicking, so api.js never loaded, the captcha
3097               never rendered, and the form POSTed an empty token. */
3098            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
3099
3100            window.addEventListener('load', () => {
3101                formID = document.querySelectorAll('[name="recaptcha"]');
3102                if (typeof formID != "undefined" && formID !== null) {
3103                    for (let i = 0; i < formID.length; i++) {
3104                        let formIDForm      = formID[i].closest('form');
3105                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
3106
3107                        if (typeof formsFound[formIDForm.id] != "undefined") {
3108                            formsFound[formIDForm.id]['counter']++;
3109                        }else{
3110                            formsFound[formIDForm.id] = {'counter' : 1};
3111                        }
3112
3113                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
3114                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
3115
3116                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
3117                            captchaTriggerEvents.forEach( evt =>
3118                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
3119                            );
3120                        }
3121                    }
3122                }
3123            });
3124        }
3125
3126        function reCaptchaOnFormInteraction(event) {
3127            if (event && event.currentTarget) {
3128                captchaArmForm(event.currentTarget);
3129            }
3130            if (captchaApiRequested) {
3131                renderArmedCaptchas();
3132                return;
3133            }
3134            captchaApiRequested = true;
3135
3136            var head    = document.getElementsByTagName('head')[0];
3137            var script  = document.createElement('script');
3138            script.type = 'text/javascript';
3139            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
3140            head.appendChild(script);
3141        }
3142
3143        var captchaArmForm = function (formEl) {
3144            if (!formEl) {
3145                return;
3146            }
3147            for (var a = 0; a < captchaArmedForms.length; a++) {
3148                if (captchaArmedForms[a] === formEl) {
3149                    return;
3150                }
3151            }
3152            captchaArmedForms.push(formEl);
3153        };
3154
3155        var captchaSolvedCallback = function (holder) {
3156            return function () {
3157                var formEl = holder.closest('form');
3158                if (!formEl) {
3159                    return;
3160                }
3161                $(formEl).find('.security_question_label').removeClass('has-error');
3162                $(formEl).find('#recaptcha_error').css('display', 'none');
3163                var notification = document.getElementById(formEl.id + '-notification');
3164                if (notification && notification.classList.contains('alert-danger-subtle')) {
3165                    $(notification).slideUp();
3166                }
3167            };
3168        };
3169
3170        var renderArmedCaptchas = function () {
3171            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
3172                return;
3173            }
3174            for (var f = 0; f < captchaArmedForms.length; f++) {
3175                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
3175aptcha]');
3176
3177                if (!holder || !holder.id || holder.getClientRects().length === 0) {
3178                    continue;
3179                }
3180                /* Guard a second render: grecaptcha throws on an element it already claimed. */
3181                if (typeof captchaHolders[holder.id] === "undefined") {
3182                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
3183                        'sitekey': '6LefnrMqAAAAAJ7P0zC7FpwVr8HmTffHnk3k7ZBX',
3184                        'callback': captchaSolvedCallback(holder)
3185                    });
3186                }
3187            }
3188        };
3189
3190        var onloadCallback = function (event) {
3191            renderArmedCaptchas();
3192        };
3193
3194    </script>
vendor: 1 bytes, line 3194
3194
3195<script>
3196    $(document).ready(function(){
3197        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
3198           the submit button, so the click guard below never sees it and the form POSTed an
3199           empty token. Bound on document/capture so it runs before FormValidation's own
3200           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
3201           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
3202           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
3203        var captchaGuardedForm = document.getElementById('member_login_190');
3204        if (captchaGuardedForm) {
3205            document.addEventListener('submit', function (event) {
3206                if (event.target !== captchaGuardedForm) {
3207                    return;
3208                }
3209
3210                var formId              = captchaGuardedForm.id;
3211                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
3212                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
3213
3214                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
3215                    $("#" + formId + " .security_question_label").removeClass("has-error");
3216                    $("#" + formId + " #recaptcha_error").css("display", "none");
3217                    return;
3218                }
3219
3220                /* Unsolved, or api.js still in flight: either way there is no token to send. */
3221                event.preventDefault();
3222                event.stopImmediatePropagation();
3223                $("#" + formId + " .security_question_label").addClass("has-error");
3224                $("#" + formId + " #recaptcha_error").css("display", "block");
3225                return false;
3226            }, true);
3227        }
3228        $("#member_login_190 input[type=submit]").unbind('click');
3229        $("#member_login_190 input[type=submit]").click(function (event) {
3230
3231            var formId = $(this.form).attr('id');
3232            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
3233
3234            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
3235                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
3236                    event.preventDefault();
3237                    $("#" + formId).formValidation('validate');
3238                    $("#" + formId + " .security_question_label").addClass("has-error");
3239                    $("#" + formId + " #recaptcha_error").css("display", "block");
3240                    return false;
3241                }
3242
3243                /* Solved captcha: clear the error UI and let the click proceed untouched.
3244                   The browser then fires a REAL, button-initiated submit event, so
3245                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
3246                   checkout / native POST on login). Re-submitting here artificially broke
3247                   both ways: native form.submit() skips the FV chain (checkout rendered the
3248                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
3249                   refuses, leaving the form stuck after the first error (Bug 2). */
3250                $("#" + formId + " .security_question_label").removeClass("has-error");
3251                $("#" + formId + " #recaptcha_error").css("display", "none");
3252            }
3253        });
3254    });
3255</script>
3255</div><div class="form-actions"><input type="submit" value="Login Now" name class="btn btn-primary btn-lg btn-block " id="member_login_190-element-14"/></div><div class="login-cta-buttons"><hr class="cta-hr"><ul class="list-inline nomargin inline-block btn-block"><li class='col-xs-12 col-sm-12 col-md-6 nolpad sm-nopad nav'><a href='/checkout/5' id='link349'  class='btn btn-danger btn-block sm-bmargin'>Not Joined? <span class="inline-block">Create Your Profile Now</span></a></li><li class='col-xs-12 col-sm-12 col-md-6 norpad sm-nopad nav'><a href='/join' id='link350'  class='btn btn-success btn-block'>Are You a Trainer<span class="inline-block">Join Now</span></a></li></ul><div class="clearfix"></div></div></form>
3255<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#member_login_190").bind("submit", function() { 
3256		});}); </script>
3256                         <div class="clearfix"></div>
3257                    </div>
3258                
3259            
3260        </div>
3261    </div>
3262                        </div>
3263                    </div>
3264                </div>
3265            </div>
3266            
3267
3268
3269    <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
3270<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
3270
3271
3272<script>
3273    function clearContent(thisObj){
3274        var size;
3275        if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){
3276            size = "small";
3277        } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){
3278            size = "large";
3279        } else {
3280            size = "medium";
3281        }
3282        if(!thisObj.parent().hasClass('input_wrapper')){
3283            if(thisObj.parent().hasClass('input-group-sm')){
3284                thisObj.wrap('<span class="input-group-sm input_wrapper"></span>');
3285            } else if (thisObj.parent().hasClass('input-group-lg')){
3286                thisObj.wrap('<span class="input-group-lg input_wrapper"></span>');
3287            } else {
3288                thisObj.wrap('<span class="input_wrapper"></span>');
3289            }
3290        }
3291        if(thisObj.val() != ""){
3292            if(thisObj.hasClass('googleSuggest')){
3293                thisObj.parent().find('.fill_location').remove();
3294            }
3295            if (!thisObj.parent().find('.clear_content').length){
3296                thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`);
3297                if (thisObj.hasClass("tt-input")) {
3298            		thisObj.focus();
3299        		}
3300
3301            }
3302        }
3303                if (thisObj.hasClass('googleSuggest') && thisObj.val().length == 0) {
3304            thisObj.parent().append(`<span class="fill_location ${size}"><i class="fa fa-crosshairs" title="Use Current Location" aria-hidden="true"></i></span>`);
3305        }
3306        if (thisObj.val() == "" && thisObj.parent().find('.clear_content').length){
3307            thisObj.parent().find('.clear_content').remove();
3308        }
3309            }
3310
3311    $(document).on('click', '.drp-buttons .applyBtn', function(){
3312        clearContent($(".dateRange input"));
3313    });
3314
3315    $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){
3316        clearContent($(this));
3317    });
3318
3319    $(document).ready(function(){
3320        $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){
3321            clearContent($(this));
3322        })
3323    })
3324
3325    $(document).on('click', '.clear_content', function(){
3326        $(this).parent().find('input').val('');
3327        //tt-input its a class for typeahead auto-suggest
3328        if ($(this).parent().find('input').hasClass("tt-input")) {
3329            $(this).parent().find('input').typeahead('val','');
3330        }
3331        clearContent($(this).parent().find('input'));
3332        $(this).remove();
3333    });
3334
3335	$(window).on('load', function () {
3336		setTimeout(function() {
3337			// add missing href attribute to multi-category options in search modules
3338			$('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#');
3339		}, 2000);
3340        	});
3341</script>
3341
3342
3343
3344
3345<a href="#" class="scrollup" title="scrollup">
3346    <i class="fa fa-caret-up" aria-hidden="true"></i>
3347</a>
3348<script>
3349        $(document).ready(function(){
3350        // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318.
3351        // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an
3352        // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button).
3353        if ($.fn.progressbar) {
3354            $('.progress .progress-bar').progressbar({
3355                display_text: 'fill'
3356            });
3357        }
3358        $(window).scroll(function(){
3359
3360            if ($(this).scrollTop() > 600) {
3361                $('.scrollup').fadeIn();
3362
3363            } else {
3364                $('.scrollup').fadeOut();
3365            }
3366        });
3367        $('.scrollup').click(function(){
3368            $("html, body").animate({
3369                scrollTop: 0
3370            }, 600);
3371            return false;
3372        });
3373        $('#cropButton').click(function(){
3374            var iframe = $("#cropiFrame");
3375            iframe.attr("src", iframe.data("src"));
3376        });
3377    });
3378</script>
vendor: 2 bytes, line 3378
3378
3379<script defer>
3380    var favoriteMode = "";
3381    var apiEngine = "";
3382    var api = 0;  // Set API to use. Default is 0
3383    var activeMembershipLevelEnable = "";
3384    var favoriteUserClickId = "";
3385    var bookmarkLabel = `SAVE`;
3386    var bookmarkCountLabel = `SAVES`;
3387    var currentButton;
3388
3389    function favoriteOn(lookForAll = false) {
3390        $('.col-md-6.col-md-offset-3').addClass("col-md-12").removeClass('col-md-6 col-md-offset-3');
3391        favoriteMode = 'search';
3392        if ($('.sidebarenabled').data('sidebar')) {
3393            favoriteMode = 'detail';
3394            if (!$('.sidebarenabled').siblings('.postItem').data('userid')) {
3395                $('.sidebarenabled').siblings('.listingData').remove();
3396            }
3397        }
3398        favoriteUserClickId = $('.favorite').data('activeuser');
3399        activeMembershipLevelEnable = $('.favorite').data('activefeatureenable');
3400
3401// Sets the API URL to use based on API value
3402        if (api == 0) {
3403            apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap%20Theme%20-%20Function%20-%20Add%20to%20Favorites%20Button';
3404        } else if (api == 1) {
3405            apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap Theme - Function - Add to Favorites Button';
3406        } else {
3407            apiEngine = '/api/widget/json/get/Bootstrap Theme - Function - Add to Favorites Button';
3408        }
3409        if (favoriteUserClickId) {
3410            var favoriteCounter = $('.favorite').siblings('.postItem');
3411            if ($('.sidebarenabled').data('sidebar') || lookForAll) {
3412
3413                if (favoriteCounter.length == 1) {
3414                    var favoriteMode = 'detail';
3415                    var favoriteDataType = $('.sidebarenabled').siblings('.postItem').data('datatype');
3416                    var favoriteDataId = $('.sidebarenabled').siblings('.postItem').data('dataid');
3417                    var favoritePostId = $('.sidebarenabled').siblings('.postItem').data('postid');
3418                    var favoriteUserId = [];
3419                    $('.sidebarenabled').siblings('.postItem').each(function () {
3420                        favoriteUserId.push($(this).data('userid'));
3421                    });
3422                } else {
3423                    var favoriteMode = 'multiSidebar';
3424                    var favoriteDataType = [];
3425                    var favoriteDataId = [];
3426                    var favoritePostId = [];
3427                    var favoriteUserId = [];
3428                    $('.postItem').each(function () {
3429                        favoriteDataType.push($(this).data('datatype'));
3430                        favoriteDataId.push($(this).data('dataid'));
3431                        favoritePostId.push($(this).data('postid'));
3432                        favoriteUserId.push($(this).data('userid'));
3433                    });
3434                }
3435            } else {
3436                var favoriteMode = 'search';
3437                var favoriteDataType = $('.favorite').siblings('.postItem').data('datatype');
3438                var favoriteDataId = $('.favorite').siblings('.postItem').data('dataid');
3439                if (lookForAll) {
3440                    favoriteDataType = (favoriteDataType == 10) ? 11 : 10;
3441                }
3442                if (favoriteDataType != 10) {
3443                    var favoritePostId = [];
3444                    $('.postItem').each(function () {
3445                        favoritePostId.push($(this).data('postid'));
3446                    });
3447                    var favoriteUserId = $('.favorite').siblings('.postItem').data('userid');
3448                } else {
3449                    var favoriteUserId = [];
3450                    $('.postItem').each(function () {
3451                        favoriteUserId.push($(this).data('userid'));
3452                    });
3453                    var favoritePostId = $('.favorite').siblings('.postItem').data('postid');
3454                }
3455            }
3456            favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'check');
3457        }
3458    }
3459
3460    $(document).on('click', '.favorite', function (e) {
3461        var favoriteUserClickId = $('.favorite').data('activeuser');
3462        if (favoriteUserClickId && activeMembershipLevelEnable) {
3463            var thisButton = $(this);
3464            currentButton = thisButton;
3465            $(thisButton).attr("disabled", true);
3466                        var favoriteUserClickId = $(this).data('activeuser');
3467            var favoriteUserId = $(this).siblings('.postItem').data('userid');
3468            var favoriteDataType = $(this).siblings('.postItem').data('datatype');
3469            var favoriteDataId = $(this).siblings('.postItem').data('dataid');
3470            var favoritePostId = $(this).siblings('.postItem').data('postid');
3471            $(this).toggleClass('favoriteActive');
3472            if ($(this).data('state') == 0) {
3473                favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'add');
3474                $(this).data('state', 1);
3475            } else {
3476                favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'delete');
3477                $(this).data('state', 0);
3478            }
3479            setTimeout(function () {
3480                $(thisButton).attr("disabled", false);
3481            }, 500);
3482        }
3483    });
3484
3485    function toogleBookmark(node) {
3486        var postId = $(node).data('postid');
3487        var count = $(node).data('count');
3488        var numberNode = $(node).find("#number-" + postId);
3489        var textLabelNode = $(node).find("#bookmark-content");
3490
3491        if ($(node).hasClass('favoriteActive') !== false) {
3492            count--;
3493        } else {
3494            count++;
3495        }
3496
3497        $(node).data("count", count);
3498
3499        if (count > 0) {
3500            $(textLabelNode).html(bookmarkCountLabel);
3501            $(numberNode).html(' (' + count + ')');
3502        } else {
3503            $(textLabelNode).html(bookmarkLabel);
3504            $(numberNode).html('');
3505        }
3506    }
3507
3508    // Function that Adds, Deletes and Selects Favorites from Backend
3509    function favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, favoriteAction) {
3510        $.post(apiEngine, {
3511            favoriteUserClickId: favoriteUserClickId,
3512            favoriteUserId: favoriteUserId,
3513            favoriteDataType: favoriteDataType,
3514            favoriteDataId: favoriteDataId,
3515            favoritePostId: favoritePostId,
3516            favoriteMode: favoriteMode,
3517            favoriteAction: favoriteAction
3518        }, function (data) {
3519            if (api == 0) {
3520                var splitData = data.split('<split>');
3521                data = splitData[1];
3522            }
3523
3524            if(favoriteAction == "add" && data == "save_favorite_error"){
3525                $(currentButton).trigger('click');
3526                swal({
3527                    type:"warning",
3528                    title: `Action Unavailable`,
3529                    html: `Your account is currently not ACTIVE. <br> Only ACTIVE accounts can perform this action.`,
3530                });
3531            }
3532            
3533            if (data !== null && data !== 'null') {
3534                // Checks if the action 'check' was send
3535                if (favoriteAction == 'check' && favoriteMode != 'multiSidebar') {
3536                    // Checks if we are in a Detail Page
3537                    if (!$('.sidebarenabled').data('sidebar')) {
3538                        // Checks if we are viewing a Member
3539                        if (favoriteDataType != 10) {
3540                            $.each(JSON.parse(data), function (index, value) {
3541                                $('.postItem[data-postid="' + value + '"]').siblings('.favorite').addClass('favoriteActive');
3542                                $('.postItem[data-postid="' + value + '"]').siblings('.favorite').data('state', 1);
3543                            });
3544                        } else {
3545                            $.each(JSON.parse(data), function (index, value) {
3546                                $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').addClass('favoriteActive');
3547                                $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').data('state', 1);
3548                            });
3549                        }
3550                    } else {
3551                        // Checks if we are viewing a Member
3552                        if (favoriteDataType != 10) {
3553                            $.each(JSON.parse(data), function (index, value) {
3554                                $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive');
3555                                $('.sidebarenabled').siblings('.favorite').data('state', 1);
3556                            });
3557                        } else {
3558                            $.each(JSON.parse(data), function (index, value) {
3559                                $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive');
3560                                $('.sidebarenabled').siblings('.favorite').data('state', 1);
3561                            });
3562                        }
3563                    }
3564                } else if (favoriteAction == 'check' && favoriteMode == 'multiSidebar') {
3565                    let totalDataCount = JSON.parse(data);
3566                    if (totalDataCount) {
3567                        totalDataCount = totalDataCount.length;
3568                        for (let i = 0; i < totalDataCount; i++) {
3569                            if (JSON.parse(data)[i].dataQuery != 0) {
3570                                $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').addClass('favoriteActive');
3571                                $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').data('state', 1);
3572                            } else {
3573                                /* dataQuery == 0 means a MEMBER favorite (users_favorite dataType 10).
3574                                   Restrict the match to member-type spans: on profile pages the owner's
3575                                   post spans carry the same data-userid, and without this filter one
3576                                   member favorite marked every post button of that owner as saved. */
3577                                $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').addClass('favoriteActive');
3578                                $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').data('state', 1);
3579                            }
3580                        }
3581                    }
3582                }
3583            }
3584        });
3585    }
3586
3587    // Code that runs once to show all favored posts by a registered user
3588
3589    favoriteOn();
3590    favoriteOn(true);
3591</script>
3591<script>
3592    const listView = document.getElementsByClassName('listView')[0];
3593    const gridView = document.getElementsByClassName('gridView')[0];
3594    const queryString = {"sized":0,"mysql_real_escape_string_runned":"1","form":"myform","formname":"member_login","dowiz":1,"save":1,"url_origin_pars":"\/search_results"};
3595    const profId = ``;
3596    const servId =null;
3597    const countryId = ``;
3598    const stateId = ``;
3599    const cityId = ``;
3600    const seed = ``;
3601    const profs = {"new_filename":"search_results"};
3602    const btnPositionInside = document.querySelector('.grid-container .clickToLoadMoreContainer');
3603    const btnPositionOutside = document.querySelector('.grid-container ~ .clickToLoadMoreContainer');
3604    const amountToSum = 7;
3605    let currentAmountText = document.querySelector('.current__amount__js');
3606    let totalAmount = document.querySelector('.total__js');
3607    let btnClickMore = document.getElementsByClassName('clickToLoadMoreBtn')[0];
3608    let btnClickMoreContainer = document.getElementsByClassName('clickToLoadMoreContainer')[0];
3609    let flagFirstTime = true;
3610    let autoLoadResults = true;
3611    let lastElementPost ;
3612    if(typeof totalAmount !== "undefined" && totalAmount !== null){
3613        let removeCommasAndDots = /[.,\s]/g;
3614        totalAmount = totalAmount.innerHTML.replace(removeCommasAndDots, '');
3615    }
3616    /*event listener*/
3617    if (typeof btnClickMore !== "undefined") {
3618        btnClickMore.addEventListener('click',  function (event) {
3619            let viewIcons = document.querySelectorAll('.views i.gridView.activeView')[0];
3620            let featureDCId = this.dataset.dc;
3621            let currentPage = this.dataset.page;
3622            let dataType = this.dataset.type;
3623            let levId = this.dataset.lvl;
3624            this.dataset.page = parseInt(currentPage) + 1;
3625            let url = `/wapi/widget`;
3626            let currentBTN = this;
3627            let currentHTML = this.innerHTML;
3628            lastElementPost = document.querySelectorAll('.search_result');
3629            this.classList.add('loadingMore');
3630            this.innerHTML = `<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading...`;
3631            let formData = new FormData();
3632            autoLoadResults=false;
3633            setClassLoaded();
3634
3635            formData.append('dc_id', featureDCId);
3636            formData.append('header_type', 'html');
3637            formData.append('request_type', 'POST');
3638            formData.append('currentPage', currentPage);
3639            formData.append('dataType', dataType);
3640            formData.append('queryString', JSON.stringify(queryString));
3641            formData.append('profId', profId);
3642            formData.append('servId', JSON.stringify(servId));
3643            formData.append('countryId', countryId);
3644            formData.append('stateId', stateId);
3645            formData.append('cityId', cityId);
3646            formData.append('levId', levId);
3647            formData.append('seed', seed);
3648            formData.append('profsPost', JSON.stringify(profs));
3649            formData.append('widget_name', 'Add-On - Bootstrap Theme - Search - Lazy Loader');
3650            let myInit = {
3651                method: 'POST',
3652                body: formData
3653            };
3654            fetch(url, myInit)
3655                .then(function (response) {
3656                    return response.text();
3657                }).then(function (html) {
3658                let parser = new DOMParser();
3659
3660                // Parse the text
3661                let result = parser.parseFromString(html, "text/html");
3662                let newResultsHTML = result.getElementById('grabHTML__js').innerHTML;
3663                autoLoadResults =true;
3664                let amountOfClicks = result.getElementById('grabHTML__js').dataset.pages;
3665
3666                var countBefore = $('.grid-container .search_result').length;
3667
3668                if (typeof btnPositionOutside !== "undefined" && btnPositionOutside !== null) {
3669                    $('.grid-container').append(newResultsHTML);
3670                }
3671                if (typeof btnPositionInside !== "undefined" && btnPositionInside !== null || btnPositionOutside === null && dataType == 13) {
3672                    $('.clickToLoadMoreContainer').before(newResultsHTML);
3673                }
3674
3675                // Fade in only the actually new results
3676                var newCount = $('.grid-container .search_result').length - countBefore;
3677                var $allNew = $('.grid-container .search_result').slice(-newCount);
3678                $allNew.css({opacity: 0, transition: 'opacity 0.4s ease'});
3679
3680                currentBTN.innerHTML = currentHTML; // default html
3681                currentBTN.classList.remove('loadingMore');
3682
3683                if (typeof viewIcons !== 'undefined') {
3684                    applyGridClasses($allNew);
3685                    // Recalculate gridBreak classes and hide clearfix/hr between grid items
3686                    $('.gridBreak').removeClass('gridBreak');
3687                    /* Row-break stride must follow the column class actually on the page, same rule as applyGridClasses */
3688                    var bdGridFourPerRow = $('.grid-container .search_result.col-md-3.grid').length > 0;
3689                    $('.grid-container.visible > hr:nth-of-type(' + (bdGridFourPerRow ? '4n' : '3n') + ')').addClass('gridBreak');
3690                    $('.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();
3691                    if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
3692                        setTimeout(function(){
3693                            $('.grid-container').masonry('appended', $allNew);
3694                            setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
3695                            checkAllImagesLoaded();
3696                        }, 500);
3697                    } else {
3698                        setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
3699                        checkAllImagesLoaded();
3700                    }
3701                } else {
3702                    setTimeout(function(){ $allNew.css('opacity', 1); }, 50);
3703                }
3704                if (typeof favoriteOn == 'function') {
3705                    favoriteOn();
3706                }
3707                if (typeof runRoyalSlider == 'function') {
3708                    runRoyalSlider();
3709                }
3710
3711                setAmountPages(currentBTN, amountOfClicks);
3712                if (typeof currentAmountText !== "undefined" && currentAmountText !== null) {
3713                    let newAmount = parseInt(currentAmountText.innerHTML) + parseInt(amountToSum);
3714                    if (newAmount >= parseInt(totalAmount)) {
3715                        newAmount = document.querySelector('.total__js').innerHTML;
3716                    }
3717                    currentAmountText.innerHTML = newAmount.toString()
3718                }
3719                if (typeof google != "undefined" && google.hasOwnProperty('maps')){
3720                    if (typeof initializeMapSR == 'function') {
3721                        initializeMapSR();
3722                    }else{
3723                        $('.mapView.activeView').click();
3724                    }
3725                }
3726            }).catch((error) => {
3727                console.error('Error:', error);
3728            });
3729        });
3730        // Check if insta_load_btn_behavior is set
3731        
3732    }
3733    if (typeof gridView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
3734        gridView.addEventListener('click', function () {
3735            gridView.classList.add('activeView');
3736            if (gridView.classList.contains('activeView')) {
3737                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
3738            } else {
3739                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
3740            }
3741        });
3742    }
3743    if (typeof listView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
3744
3745        listView.addEventListener('click', function () {
3746            listView.classList.add('activeView');
3747            if (listView.classList.contains('activeView')) {
3748                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
3749            } else {
3750                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
3751            }
3752        });
3753    }
3754
3755    function setAmountPages(btn, amount) {
3756        if (!("pages" in btn.dataset)) {
3757            btn.dataset.pages = parseInt(amount) - 1; // we do -1 because the one just clicked
3758        } else {
3759            btn.dataset.pages = parseInt(btn.dataset.pages) - 1;
3760        }
3761        if (btn.dataset.pages <= 0) {
3762            removeListenToScroll();
3763            btn.remove();
3764        }
3765    }
3766
3767    function setClassLoaded() {
3768        if (flagFirstTime) {
3769            flagFirstTime = false;
3770            let images = document.querySelectorAll('.grid-container img:not(.loaded)');
3771            images.forEach(image => {
3772                image.classList.add("loaded");
3773            });
3774        }
3775    }
3776    function applyGridClasses($el) {
3777        $el.find('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
3778        $el.find('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
3779        $el.find('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
3780        $el.find('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
3781        $el.find('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
3782        $el.find('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
3783        $el.find('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
3784        $el.find('.mid_section .post-location-snippet').addClass('text-center');
3785        $el.find('.mid_section.ex-col-7 .sm-block').addClass('show');
3786        $el.find('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
3787        $el.find('.mid_section .row-fluid.bpad a').addClass('btn-block');
3788        $el.find('.mid_section .row-fluid.bpad').addClass('text-center');
3789        $el.find('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
3790        $el.find('.mid_section > div > p').addClass('text-center');
3791        $el.find('.mid_section h2').addClass('nomargin');
3792        $el.find('.mid_section a.h3').addClass('text-center h4 tmargin');
3793        $el.find('.mid_section .view-details').removeClass('rmargin');
3794        $el.find('.mid_section .contact-member').removeClass('lmargin');
3795        $el.find('.member-search-full-name').removeClass('rmargin');
3796        $el.find('.member-search-reviews').removeClass('rmargin');
3797        $el.find('.member-search-location').removeClass('rmargin rpad');
3798        $el.find('.member-search-company').addClass('btn-block');
3799        $el.find('.view_phone_number').addClass('center-block');
3800        $el.find('.phone_number').addClass('btn-block');
3801        $el.find('.search_result_image').addClass('grid_image');
3802        $el.find('.post-search-category').removeClass('inline-block').addClass('text-center');
3803        $el.find('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
3804        /* 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) */
3805        if ($('.grid-container .search_result.col-md-3.grid').not($el).length > 0) {
3806            $el.addClass('col-xs-12 col-sm-3 col-md-3 grid').removeClass('row-fluid');
3807        } else {
3808            $el.addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
3809        }
3810        $el.find('.grid_element').addClass('well xs-center-block');
3811        $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();
3812        $el.find('h2.h3.bold > a').addClass('gridA');
3813        $el.find('.info_section .module').removeClass('module fpad');
3814    }
3815
3816    function refreshUI(){
3817        if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
3818            $('.grid-container').masonry('layout');
3819        }
3820    }
3821    function checkAllImagesLoaded() {
3822        let images = document.querySelectorAll('.grid-container img:not(.loaded)');
3823        let countImg = 0;
3824
3825        if (images.length === 0) {
3826            refreshUI();
3827            return;
3828        }
3829
3830        images.forEach(image => {
3831            image.classList.add("loaded");
3832
3833            if (image.complete) {
3834                countImg++;
3835                if (countImg === images.length) {
3836                    refreshUI();
3837                }
3838                return;
3839            }
3840
3841            image.addEventListener('load', () => {
3842                countImg++;
3843                if (countImg === images.length) {
3844                    refreshUI()
3845                }
3846            });
3847            image.addEventListener('error', () => {
3848                countImg++;
3849                if (countImg === images.length) {
3850                    refreshUI()
3851                }
3852            });
3853        });
3854
3855    }
3856
3857    // Variables
3858    let userStartedScrolling = false;  // Flag to check if the user has started scrolling
3859    let wasPreviouslyInViewport = false;  // To track if the button was in the viewport previously
3860
3861
3862    // Function to remove the scroll event listener
3863    function removeListenToScroll(){
3864        window.removeEventListener('scroll', listenToScroll);
3865    }
3866
3867    // Function to check button visibility and load content
3868    function listenToScroll() {
3869        const isInViewport = isElementInViewport(btnClickMore);
3870
3871        // Check if the button has just entered the viewport
3872        const justEnteredViewport = !wasPreviouslyInViewport && isInViewport;
3873
3874        // If button just entered the viewport, user has started scrolling, and autoLoadResults is true
3875        if (userStartedScrolling && justEnteredViewport && autoLoadResults) {
3876            // Add a delay (2 seconds) before automatically clicking the button to load content
3877            setTimeout(function() {
3878                btnClickMore.click();
3879                autoLoadResults = false; // Set the flag too false to avoid subsequent auto-clicks
3880            }, 2000);
3881        }
3882
3883        // If the button is out of the viewport, reset autoLoadResults
3884        if (!isInViewport) {
3885            autoLoadResults = true;
3886        }
3887
3888        // Update the previous viewport status for the next check
3889        wasPreviouslyInViewport = isInViewport;
3890    }
3891
3892    // Function to determine if a DOM element is in the viewport
3893    function isElementInViewport(el) {
3894        const rect = el.getBoundingClientRect();
3895        return (
3896            rect.top >= 0 &&
3897            rect.left >= 0 &&
3898            rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
3899            rect.right <= (window.innerWidth || document.documentElement.clientWidth)
3900        );
3901    }
3902
3903</script>
vendor: 2 bytes, line 3903
3903
3904<script type="text/javascript">
3905
3906
3907
3908    //function to get url GET parameters
3909    function getUrlParameter(sParam) {
3910        var sPageURL = window.location.search.substring(1);
3911        var sURLVariables = sPageURL.split('&');
3912
3913        for (var i = 0; i < sURLVariables.length; i++) {
3914            var sParameterName = sURLVariables[i].split('=');
3915            if (sParameterName[0] == sParam) {
3916                return decodeURIComponent(sParameterName[1]);
3917            }
3918        }
3919    }
3920
3921    //stating variables for the first initialize of the sidebar map
3922    var mapSR;
3923    var geocoder;
3924    var mapSRLat = parseFloat(getUrlParameter('lat'));
3925    var mapSRLng = parseFloat(getUrlParameter('lng'));
3926    var theZoom = 8;
3927    var bounds;
3928    if (isNaN(mapSRLat) || isNaN(mapSRLng)) {
3929
3930        mapSRLat = parseFloat(55.3781);
3931        mapSRLng = parseFloat(-3.4360);
3932        theZoom = parseFloat('6');
3933    }
3934    //function that initializes the creation of the google map
3935    function setJsMapSR(element=null) {
3936        if (window['setJsMapSR_var'] ===true) {
3937            return;
3938        }
3939        if(element == null){
3940            element = document.getElementById('map-canvas');
3941            if (element === null) {
3942                element = document.querySelector('div[data-id]');
3943            }
3944        }
3945        window['setJsMapSR_var']=true;
3946                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}]}];
3947            var styledMap = new google.maps.StyledMapType(styles, {name: "Styled Map"});
3948        
3949        let mapDivElement = element;
3950        if (typeof mapDivElement !== undefined && mapDivElement != null) {
3951            var mapSROptions = {
3952                center: {lat: mapSRLat, lng: mapSRLng},
3953                mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']},
3954                mapTypeControl: false,
3955                zoom: theZoom,
3956                controlSize: 26,
3957                mapSRTypeControl: false,
3958                streetViewControl: false,
3959                scrollwheel: false
3960            };
3961            mapSR = new google.maps.Map(mapDivElement, mapSROptions);
3962                        mapSR.mapTypes.set('map_style', styledMap);
3963            mapSR.setMapTypeId('map_style');
3964            
3965            //This piece of code will create an autosuggest for every input with the class "googleSuggest"
3966            var counter = 1;
3967            var inputsArray = [];
3968            initializeMapSR(); // add markers
3969        }
3970    }
3971
3972    function isFloat(value) {
3973        value = parseFloat(value);
3974        if (
3975            typeof value === 'number' &&
3976            !Number.isNaN(value) &&
3977            !Number.isInteger(value)
3978        ) {
3979            return true;
3980        }
3981
3982        return false;
3983    }
3984
3985    function initializeMapSR() {
3986        //the markers process will only happen if there are spans with the class "google-pin-location"
3987        if ($('.google-pin-location:not(".marker-pin")').length > 0) {
3988            //array with all the markers
3989            var markersArray = [];
3990            // variable to close the last window
3991            var closeLastWindows = null;
3992            if (window['google_bounds'] != true) {
3993                window['google_bounds'] = true;
3994                bounds = new google.maps.LatLngBounds();
3995            }
3996            //function that will set a marker on the map for each user location
3997            $('.google-pin-location:not(".marker-pin")').each(function () {
3998                $(this).addClass('marker-pin');
3999                if( !isFloat($(this).attr("data-lat"))  ||  !isFloat($(this).attr("data-lng"))){
4000                    return;
4001                }
4002
4003                // Making the icon
4004                var iconImage = '/images/marker.png';
4005                //var markerLatLng = parseFloat($(this).attr("data-lat"))+","+parseFloat($(this).attr("data-lng"));
4006                var markerLatLng = {lat:parseFloat($(this).attr("data-lat")),lng:parseFloat($(this).attr("data-lng"))};
4007                var markerName = $(this).attr("data-name");
4008                var marker = new google.maps.Marker({
4009                    position: markerLatLng,
4010                    map: mapSR,
4011                    icon: iconImage,
4012                    title: markerName
4013                });
4014                bounds.extend(markerLatLng);
4015                var hideLink = $(this).attr('data-hideMessages');
4016                                var phonehtml = '';
4017                if ($(this).attr("data-phone") != "") {
4018                    phonehtml = '<p class="btn-xs btn-default btn-block"><i class="fa fa-phone fa-fw"></i>' + $(this).attr("data-phone") + '</p>';
4019                                        if ($(this).attr("data-addon") == 1) {
4020                        phonehtml = '<div class="btn btn-xs btn-block btn-secondary btn-outline js-btn" onClick="clickToCall(this, false)" title="See Phone Number" data-token="' + $(this).attr("data-token") +'">See Phone Number</div><p class="hide btn-phone btn btn-xs btn-block tmargin btn-secondary btn-outline"><i class="fa fa-phone fa-fw"></i> <a href="tel:' + $(this).attr("data-phone") +'"><span class="text-secondary">' + $(this).attr("data-phone") + '</span></a></p>';
4021                    }
4022                                    }
4023
4024                if (hideLink == 1) {
4025                    marker['infowindow'] = new google.maps.InfoWindow({
4026                        content: `<div class="info_window">
4027                                        <img src="` + $(this).attr("data-photo") + `">` +
4028                            `<a class="h5 bold" href=` + $(this).attr("data-filename") + `>`
4029                            + $(this).attr("data-name") +
4030                            `</a>`
4031                            + phonehtml +
4032                            `<a class="btn btn-xs btn-success btn-block view_profile" href=` + $(this).attr("data-filename") + `>
4033                                            View Listing
4034                                        </a>` +
4035                            `</div>`
4036                    });
4037                } else {
4038                    marker['infowindow'] = new google.maps.InfoWindow({
4039                        content: `<div class="info_window">
4040                                        <img src="` + $(this).attr("data-photo") + `">` +
4041                            `<a class="h5 bold" href=` + $(this).attr("data-filename") + `>`
4042                            + $(this).attr("data-name") +
4043                            `</a>`
4044                            + phonehtml +
4045                            `<a class="btn btn-xs btn-primary btn-block view_profile" href=` + $(this).attr("data-filename") + `>
4046                                            View Listing
4047                                        </a>` +
4048                            `<a class="btn btn-xs btn-secondary btn-block contact_now" href=` + $(this).attr("data-filename") + `/connect>
4049                                            Send Message
4050                                        </a>` +
4051                            `</div>`
4052                    });
4053                }
4054                                // assuming you also want to hide the infowindow when user mouses-out
4055
4056                function closeInfoWindows() {
4057                    if (closeLastWindows != null) {
4058                        closeLastWindows.close();
4059                    }
4060                }
4061
4062                var typeOfListener = 'mouseover'; // by default for desktop
4063                                google.maps.event.addListener(marker, typeOfListener, function () {
4064                    if (window['mapCloseTimeout']) {
4065                        clearTimeout(window['mapCloseTimeout']);
4066                    }
4067                    closeInfoWindows();
4068                    closeLastWindows = this['infowindow'];
4069                    this['infowindow'].open(mapSR, this);
4070                });
4071
4072                // Close infowindow when mouse leaves the marker (desktop only)
4073                if (typeOfListener === 'mouseover') {
4074                    google.maps.event.addListener(marker, 'mouseout', function () {
4075                        var self = this;
4076                        window['mapCloseTimeout'] = setTimeout(function () {
4077                            self['infowindow'].close();
4078                            if (closeLastWindows === self['infowindow']) {
4079                                closeLastWindows = null;
4080                            }
4081                        }, 300);
4082                    });
4083                }
4084
4085            });
4086
4087            // Keep infowindow open when mouse hovers over its content (desktop only)
4088            $(document).on('mouseenter', '.gm-style-iw', function () {
4089                if (window['mapCloseTimeout']) {
4090                    clearTimeout(window['mapCloseTimeout']);
4091                }
4092            }).on('mouseleave', '.gm-style-iw', function () {
4093                if (closeLastWindows != null) {
4094                    closeLastWindows.close();
4095                    closeLastWindows = null;
4096                }
4097            });
4098
4099            mapSR.fitBounds(bounds);
4100        }
4101        if ($('#map-canvas').length > 0) {
4102            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>";
4103            $('body').append(cssHideLogo);
4104
4105        } else {
4106            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>";
4107            $('body').append(cssHideLogo);
4108        }
4109    }
4110
4111    function showPhone(elemente) {
4112  $(elemente).addClass("hide").siblings().removeClass("hide");
4113}
4114    function initGMap() {
4115		
4116			// Check if the map is loaded.
4117			const mapIconView = document.querySelector('.mapView');
4118			if (typeof mapIconView !== undefined && mapIconView != null) {
4119				mapIconView.addEventListener('click', initGMap);
4120				mapIconView.removeEventListener('click', initGMap);
4121			}
4122			const mapDivID = document.getElementById('map-canvas');
4123
4124			if (typeof google === 'object' && google.hasOwnProperty('maps')) {
4125				// Set the map source.
4126				setJsMapSR(mapDivID);
4127			} else {
4128				// If the map is not loaded, wait for it to load before setting the source.
4129				googleMapOnFormClick().then(() => {
4130					setJsMapSR(mapDivID);
4131				});
4132			}
4133
4134			    }
4135
4136    window.addEventListener('load', () => {
4137        // Get the lazy map div, either by data-id or by ID.
4138        const lazyMapDiv = document.querySelector('div[data-id]')
4139        const mapDivID = document.getElementById('map-canvas');
4140        // Add a delay to allow the map to load before initializing it.
4141        setTimeout(() => {
4142            // Check if the map div exists.
4143            if (typeof lazyMapDiv !== "undefined" && lazyMapDiv !== null) {
4144                lazyMapDiv.id = lazyMapDiv.dataset.id;
4145                let mapIconView = document.querySelector('.mapView');
4146                if (typeof mapIconView !== undefined && mapIconView != null) {
4147                    mapIconView.addEventListener('click', initGMap);
4148                    // If map view is already active, initialize immediately
4149                    if (mapIconView.classList.contains('activeView')) {
4150                        initGMap();
4151                    }
4152                }
4153            } else if (typeof mapDivID !== "undefined" || mapDivID !== null) {
4154                // Initialize the map.
4155                initGMap();
4156            }
4157        }, 500);
4158    });
4159</script>
4159<script>
4160
4161$('.view_phone_number').click(function(event){
4162  event.preventDefault();
4163  $(this).hide();
4164  $(this).next('span.phone_number').css("display","inline-block");  
4165});
4166</script>
4166
4167
4168
4169        
4169<script type="text/javascript">
4170    /* CT dissolved its county governments in 1960, so Google returns its 8 counties as
4171       colloquial_area instead of administrative_area_level_2 — they must never reach a
4172       city field. Google translates the component name to the site language, so the
4173       language-stable place_id is checked first and the word list only backs it up. */
4174    if (typeof window.bdIsColloquialCounty !== 'function') {
4175        window.bdIsColloquialCounty = function (componentName, resultPlaceId) {
4176            var countyPlaceIds = [
4177                'ChIJWRM2Nakw5okRoTCxHvz_5xw', /* Middlesex County, CT */
4178                'ChIJmeTbuDYH6IkR3xgeNvszpgg', /* Fairfield County, CT */
4179                'ChIJiT24cvvP54kR2fSPHkp0Akc', /* New Haven County, CT */
4180                'ChIJvYe7N7eQ54kRL6nZaXRwPkI', /* Litchfield County, CT */
4181                'ChIJtxC3p6qs54kRIvK-2bctar0', /* Hartford County, CT */
4182                'ChIJj-lvZQli5okRGCuGRd6xKt0', /* Tolland County, CT */
4183                'ChIJRWKqeLdi5okRLXWDlSEGeTY', /* Windham County, CT */
4184                'ChIJwTIQbvVv5okRU5_gSJczUTQ'  /* New London County, CT */
4185            ];
4186
4187            if (typeof resultPlaceId === 'string' && resultPlaceId !== ''
4188                && countyPlaceIds.indexOf(resultPlaceId) !== -1) {
4189                return true;
4190            }
4191
4192            if (typeof componentName !== 'string' || componentName === '') {
4193                return false;
4194            }
4195
4196            var name = componentName.toLowerCase();
4197
4198            /* Only unambiguous county words — generic ones (region, district) would strip
4199               legitimate colloquial areas, and their languages already match on place_id.
4200               Word-boundary matched so names like "Countyline, OK" are left alone. */
4201            var wordTokens = ['county', 'condado', 'comté', 'contea',
4202                              'comitatul', 'hrabstwo', 'megye', 'konderria'];
4203            var isAlnum = function (ch) {
4204                return (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9');
4205            };
4206
4207            for (var t = 0; t < wordTokens.length; t++) {
4208                var token = wordTokens[t];
4209                var from = 0;
4210                while (true) {
4211                    var at = name.indexOf(token, from);
4212                    if (at === -1) {
4213                        break;
4214                    }
4215                    var before = (at > 0) ? name.charAt(at - 1) : ' ';
4216                    var after = ((at + token.length) < name.length) ? name.charAt(at + token.length) : ' ';
4217                    if (!isAlnum(before) && !isAlnum(after)) {
4218                        return true;
4219                    }
4220                    from = at + 1;
4221                }
4222            }
4223
4224            /* Non-latin scripts have no alphanumeric word boundary. */
4225            var scriptTokens = ['каунти', 'کاؤنٹی', 'काउंटी', '카운티'];
4226            for (var s = 0; s < scriptTokens.length; s++) {
4227                if (name.indexOf(scriptTokens[s]) !== -1) {
4228                    return true;
4229                }
4230            }
4231
4232            return false;
4233        };
4234    }
4235
4236            // Try to load coordinates from sessionStorage on page load
4237            var vlat        = 0;
4238            var vlon        = 0;
4239            try {
4240                var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4241                var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4242                if (savedLat && savedLon) {
4243                    vlat = parseFloat(savedLat);
4244                    vlon = parseFloat(savedLon);
4245                }
4246            } catch(e) {}
4247            var isSubmit    = false;
4248            var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests
4249            
4250            // Function to save coordinates to sessionStorage
4251            function saveCoordinatesToSession(lat, lon) {
4252                try {
4253                    sessionStorage.setItem('bd_geolocation_lat', lat.toString());
4254                    sessionStorage.setItem('bd_geolocation_lon', lon.toString());
4255                } catch(e) {}
4256            }
4257            
4258            // Function to get coordinates from sessionStorage if current ones are 0
4259            function getCoordinatesFromSession() {
4260                if (vlat === 0 && vlon === 0) {
4261                    try {
4262                        var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4263                        var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4264                        if (savedLat && savedLon) {
4265                            vlat = parseFloat(savedLat);
4266                            vlon = parseFloat(savedLon);
4267                            return true;
4268                        }
4269                    } catch(e) {}
4270                }
4271                return false;
4272            }
4273            var cityTypes       = [
4274                'colloquial_area',
4275                'locality',
4276                'sublocality',
4277                'sublocality_level_1',
4278                'sublocality_level_2',
4279                'sublocality_level_3',
4280                'sublocality_level_4',
4281                'sublocality_level_5',
4282                'neighborhood',
4283                'ward',
4284                'postal_town'
4285            ];
4286
4287            var postalTypes = [
4288                'postal_code',
4289                'postal_code_prefix',
4290                'postal_code_suffix',
4291                'street_number',
4292                'premise',
4293                'subpremise',
4294                'route',
4295                'intersection',
4296                'street_address',
4297                'floor',
4298                'room',
4299                'post_box',
4300                'delivery_address'
4301            ];
4302
4303            var isSubmitting = false;
4304            window.cachedSelectedOption = [{ 'typed_location': '' }];
4305            window.isSubmittingMainSearch = false;
4306
4307            document.addEventListener('DOMContentLoaded', () => {
4308                let isSubmitting = false; // Add flag at the top level
4309
4310                setTimeout(()=>{
4311                    let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location');
4312                    if (typeof googleSuggestForm != "undefined") {
4313                        for (let i = 0; i < googleSuggestForm.length; i++) {
4314                            let closestForm = googleSuggestForm[i].closest('form');
4315                            if(typeof closestForm != "undefined" && closestForm != null){
4316                                closestForm.addEventListener('focusin', googleMapOnFormClick, false);
4317
4318                            }else{
4319                                googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false);
4320                            }
4321                                googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false);
4322                            }
4323                        }
4324                },200);
4325
4326                $('.website-search button[type=submit]').click(async function (e) {
4327                    e.preventDefault(); // Prevent the default submit action
4328                    var nativeForm = $(this).closest('form')[0];
4329                    if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
4330                        return false;
4331                    }
4332                    await googleMapOnFormClick();
4333                    $(this).closest('form').submit();
4334                });
4335            });
4336             window['gmapClick'] = false;
4337            function googleMapOnFormClick() {
4338                if(window.gmapClick){
4339                    return;
4340                }
4341                window.gmapClick = true;
4342                
4343                return new Promise((resolve, reject) => {
4344                    window.isSubmittingMainSearch = false;
4345                    let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location');
4346                    let mapUri = "https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places&region=GB&callback=initializeG&language=en&key=AIzaSyDDI6MtCAWExiktccYlUaJiNkILNwo2zCU";
4347                    
4348                    if (typeof google !== "undefined" && google.hasOwnProperty('maps')) {
4349                        resolve('already loaded');
4350                        return;
4351                    }
4352
4353                    let loadMapScriptAsync = function (uri) {
4354                        return new Promise((resolve, reject) => {
4355                            let script = document.createElement('script');
4356                            script.type = 'text/javascript';
4357                            script.src = uri;
4358                            script.async = true;
4359                            script.onload = function () {
4360                                resolve("ok");
4361                            };
4362                            script.onerror = function () {
4363                                reject("Failed to load Google Maps script.");
4364                            };
4365                            document.head.appendChild(script);
4366                        });
4367                    };
4368
4369                        loadMapScriptAsync(mapUri)
4370                            .then(() => {
4371                                resolve();
4372                            })
4373                            .catch((error) => {
4374                                console.error(error);
4375                                reject();
4376                            });
4377                  
4378                });
4379            }
4380
4381            function initializeG() {
4382                var geocoder;
4383                //This piece of code will create an autosuggest for every input with the class "googleSuggest"
4384                var counter = 1;
4385                var inputsArray = [];
4386                window.cachedSelectedOption = [{ 'typed_location': '' }];
4387                let mapExists = document.querySelectorAll('[id^="map"]').length > 0;
4388                const functionsToInvoke = {
4389                    setJsMap: true,
4390                    setJsMapOverview: mapExists,
4391                    setJsMapSR: mapExists,
4392                    setJsMapSidebar: mapExists
4393                };
4394                if (window['maps_loaded'] !== true) {
4395                    for (let func in functionsToInvoke) {
4396                        if (typeof window[func] === 'function' && functionsToInvoke[func]) {
4397                            window['maps_loaded'] = true;
4398                            window[func]();
4399                        }
4400                    }
4401                }
4402                $(".googleSuggest").each(function () {
4403                    //get the id from the input to be the unique identifier for each autocomplete
4404                    var inputId = $(this).attr("id");
4405                    var inputElement = $(this);
4406                    inputsArray[counter] = /** @type {HTMLInputElement} */(
4407                        document.getElementById('' + inputId));
4408                    const mainCountry = '';
4409                    const inputOptions = {
4410                        fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
4411                        types: ['geocode']
4412                    }
4413                    const language = "en";
4414
4415                    if (language) {
4416                        inputOptions.language = language;
4417                    }
4418                    if (mainCountry) {
4419                        inputOptions.componentRestrictions = {country: mainCountry};
4420                        inputOptions.region = mainCountry;
4421                    }
4422
4423                    var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions);
4424                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
4425                        const place = autocomplete.getPlace();
4426
4427                        cachedSelectedOption = [];
4428                        cachedSelectedOption.push(place);
4429
4430                        cachedSelectedOption[0]['typed_location'] = inputElement.val();
4431                       /* if(cachedSelectedOption[0]['adr_address']){
4432                            let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, '');
4433                            cachedSelectedOption[0]['typed_location'] = cleanLocation;
4434                            inputElement.val(cleanLocation);
4435                        }*/
4436                        if (cachedSelectedOption[0]['address_components'] == undefined) {
4437                            cachedSelectedOption = [];
4438                            var emptyObj = {
4439                                'typed_location': ''
4440                            };
4441                            cachedSelectedOption.push(emptyObj);
4442                        }
4443                    });
4444                    //the code that prevents the submition when hit enter on a google location autocomplete item
4445                    inputElement.keydown( function (e) {
4446                        if (e.keyCode == 13) {
4447                            var pacCounter = 0;
4448                            //need to run a loop to check each pac container
4449                            $('.pac-container').each(function () {
4450
4451                                if ($(this).css("display") != "none") {
4452                                    pacCounter++;
4453                                }
4454                            });
4455                            if (pacCounter > 0) {
4456                                e.preventDefault();
4457                            }
4458                        }
4459                    });
4460                    counter++;
4461                });
4462
4463                //triggers every time a form with the id website-search is trigered
4464                $('.website-search').submit(function (e) {
4465
4466                    var currentForm = $(this);
4467                    var locationInput = $(this).find(".googleLocation");
4468                    var $submitButton = currentForm.find('input[type=submit], button[type=submit]');
4469
4470
4471                    if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') {
4472
4473                        // Set submitting flag
4474                        window.isSubmittingMainSearch = true;
4475                        $submitButton.prop('disabled', true);
4476
4477                        e.preventDefault();
4478                        //this variable has the main country of the site
4479                        var form = currentForm;
4480                        var urlGET = form.serialize();
4481                        var formActionUrl = form.attr("action");
4482                        var locationValue = locationInput.val();
4483
4484
4485
4486                        const mainCountry = '';
4487                        const inputOptions = {
4488                            address:locationValue
4489                        }
4490                        const language = "en";
4491
4492                        if (language) {
4493                            inputOptions.language = language;
4494                        }
4495                        if (mainCountry) {
4496                            inputOptions.componentRestrictions = {country: mainCountry};
4497                            inputOptions.region = mainCountry;
4498                        }
4499
4500                        if (typeof cachedSelectedOption == 'undefined') {
4501                            var emptyForm = {
4502                                'typed_location': ''
4503                            };
4504                            cachedSelectedOption.push(emptyForm);
4505                        }
4506
4507                        if (locationValue != cachedSelectedOption[0]['typed_location']) {
4508                            geocoder = new google.maps.Geocoder();
4509                            geocoder.geocode(inputOptions, function (results, status) {
4510
4511                                //if the google response of the geocoding was successful it will use that info to build the url for the new search
4512                                if (status == google.maps.GeocoderStatus.OK) {
4513                                    parseInfoToSearch(results, urlGET, formActionUrl);
4514
4515                                } else {
4516                                    var urlPath = formActionUrl;
4517                                    var redirect = urlPath + "?" + urlGET;
4518                                    //will redirect the page using the new url that has been constructed
4519                                    window.location.href = redirect;
4520                                }
4521                            });
4522
4523                        } else {
4524                            parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl);
4525                        }
4526                    }
4527                });
4528
4529
4530                //check if a map has been loaded
4531                if ($('#map-canvas').length > 0) {
4532                    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>";
4533                    $('body').append(cssHideLogo);
4534                } else {
4535                    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>";
4536                    $('body').append(cssHideLogo);
4537                }
4538
4539                if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") {
4540                    populateSearchFields();
4541                }
4542
4543                if($('.googleSuggest').val() == ""){
4544                    populateSearchFields();
4545                }
4546                
4547                var geocodeVisitorsSetting = '1';
4548                var geocodingMethod = 'HTML5';
4549
4550                //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
4551
4552                var vlon = '';
4553                var vlat = '';
4554            }
4555
4556            function switchPlaceID(placeId,urlGET, formActionUrl) {
4557                let request = {
4558                    placeId: placeId,
4559                    fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'],
4560                };
4561
4562                let service = new google.maps.places.PlacesService(document.createElement('div'));
4563                service.getDetails(request, function(place, status) {
4564                    if (status === google.maps.places.PlacesServiceStatus.OK) {
4565                        let dataArray = [];
4566                        dataArray.push(place);
4567                        parseInfoToSearch(dataArray, urlGET, formActionUrl);
4568                    } else {
4569                        console.error('Place details request failed with status:', status);
4570                    }
4571                });
4572            }
4573
4574            function parseInfoToSearch(results, urlGET, formActionUrl) {
4575                var urlSearchParams = new URLSearchParams(urlGET);
4576                var parameters = {};
4577                var addressComponentsArray = [];
4578                if (results.length > 1) {
4579                    if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){
4580                        let tempResult = results[0];
4581                        results[0] = results[1];
4582                        results[1] = tempResult;
4583                    }
4584                    for (let i = 0; i < results.length; i++) {
4585                        if (results[i].types[0] === 'natural_feature' ||
4586                            results[i].types[0] === 'airport' ||
4587                            results[i].types[0] === 'point_of_interest' ||
4588                            results[i].types[0] === 'establishment' ||
4589                            results[i].types[0] === 'political' ||
4590                            results[i].types[0] === 'park') {
4591                            results.splice(i, 1);
4592                        }
4593                    }
4594                }
4595                var adComLength = results[0].address_components.length;
4596
4597                if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){
4598                    switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl);
4599                    return;
4600                }
4601                sessionStorage.setItem("google_result",JSON.stringify(results));
4602
4603                
4604                var foundPostalType     = results[0].types.find(type => postalTypes.includes(type));
4605                var foundCityType       = results[0].types.find(type => cityTypes.includes(type));
4606
4607                //loop that will build the array with the address components and will get the short name of country and administrative area level 1
4608                for (var i = 0; i < adComLength; i++) {
4609
4610                    if (results[0].address_components[i]['types'][0] == "country") {
4611                        parameters.country_sn = results[0].address_components[i]['short_name'];
4612                    }
4613                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
4614                        parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name'];
4615                    }
4616                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
4617                        parameters.stateSearchLN = results[0].address_components[i]['long_name'];
4618                    }
4619                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") {
4620                        /* short_name is what the service-area writer stores in
4621                           service_areas.county_sn, so the search must send the same
4622                           form or county matching breaks wherever short != long. */
4623                        parameters.county_sn = results[0].address_components[i]['short_name'];
4624                    }
4625                    if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) {
4626                        var addrType = results[0].address_components[i]['types'][0];
4627                        var addrLong = results[0].address_components[i]['long_name'];
4628                        /* CT counties come back as colloquial_area — keep them out of parameters.city. */
4629                        if (addrType !== 'colloquial_area'
4630                            || !window.bdIsColloquialCounty(addrLong, results[0].place_id)) {
4631                            parameters.city = addrLong;
4632                        }
4633                    }
4634                    if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") {
4635                        parameters.postal_code = results[0].address_components[i]['long_name'];
4636                    }
4637                }
4638
4639
4640                // Filter out 'political' from result types - use more specific type when available
4641                // Same pattern as BD-directory-maps-typePolitical (PR #5642)
4642                if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') {
4643                    results[0].types.splice(0, 1);
4644                }
4645
4646                // Pick the most specific type from results, skip "political" (too generic)
4647                parameters.location_type = results[0].types[0];
4648                for (var t = 0; t < results[0].types.length; t++) {
4649                    if (results[0].types[t] != 'political') {
4650                        parameters.location_type = results[0].types[t];
4651                        break;
4652                    }
4653                }
4654
4655                // When searching by city/locality, omit postal_code — Google returns
4656                // a partial zip prefix that doesn't match all members in the city
4657                if (parameters.location_type == 'locality' && parameters.postal_code) {
4658                    delete parameters.postal_code;
4659                }
4660
4661                if (parameters.adm_lvl_1_sn != '') {
4662                    parameters.stateSearch = parameters.adm_lvl_1_sn;
4663                }
4664                if (parameters.country_sn == "GB") {
4665                    delete parameters.adm_lvl_1_sn;
4666                }
4667
4668                //will check if the response had the bounds parameters
4669                //if it had it will add the south west and north east parameters to the new url
4670                if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) {
4671
4672                    if (results[0].geometry.hasOwnProperty('bounds')) {
4673                        var boundsResponse = results[0].geometry.bounds;
4674
4675                    } else {
4676                        var boundsResponse = results[0].geometry.viewport;
4677                    }
4678                    parameters.swlat = boundsResponse.getSouthWest
4678().lat();
4679                    parameters.nelat = boundsResponse.getNorthEast().lat();
4680                    parameters.swlng = boundsResponse.getSouthWest().lng();
4681                    parameters.nelng = boundsResponse.getNorthEast().lng();
4682
4683                    //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
4684                } else {
4685                    parameters.fsearch = "radius";
4686                }
4687                var locationCenterResponse = results[0].geometry.location;
4688                parameters.lat = locationCenterResponse.lat();
4689                parameters.lng = locationCenterResponse.lng();
4690                parameters.faddress = results[0].formatted_address;
4691                parameters.place_id = results[0].place_id;
4692                var formatParameters = $.param(parameters);
4693                urlGET = urlGET + "&" + formatParameters;
4694                var urlPath = formActionUrl;
4695                var redirect = urlPath + "?" + urlGET;
4696                //will redirect the page using the new url that has been constructed
4697                window.location.href = redirect;
4698            }
4699            function populateSearchFields() {
4700                var prePopulateLocationSetting = '1';
4701                var geolocationMethod = 'HTML5';
4702
4703                // If geolocation is in progress and we don't have coordinates yet, wait a bit
4704                if (isGettingLocation && (vlat === 0 || vlon === 0)) {
4705                    var waitStartTime = performance.now();
4706                    var waitInterval = setInterval(function() {
4707                        if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) {
4708                            clearInterval(waitInterval);
4709                            // Retry after a short delay to ensure coordinates are set
4710                            setTimeout(function() {
4711                                populateSearchFields();
4712                            }, 100);
4713                        } else if ((performance.now() - waitStartTime) > 10000) {
4714                            // Timeout after 10 seconds - try sessionStorage
4715                            clearInterval(waitInterval);
4716                            if (getCoordinatesFromSession()) {
4717                                setTimeout(function() {
4718                                    populateSearchFields();
4719                                }, 100);
4720                            }
4721                        }
4722                    }, 200);
4723                    return;
4724                }
4725
4726                // If coordinates are 0, try to get from sessionStorage
4727                if (vlat === 0 || vlon === 0) {
4728                    getCoordinatesFromSession();
4729                }
4730
4731                // Validate coordinates first
4732                var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180);
4733                
4734                if (!hasValidCoordinates) {
4735                    return;
4736                }
4737
4738                //if set to one will get the lat and lng to do reverse geocoding
4739                if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) {
4740                    var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon));
4741                    var visitorGeocoder = new google.maps.Geocoder();
4742                    var formattedAddress = [];
4743                    var preFormattedStructure = {
4744                        "locality": "long_name",
4745                        "administrative_area_level_2": "long_name",
4746                        "administrative_area_level_1": "long_name",
4747                        "country": "long_name"
4748                    };
4749                    visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) {
4750                        //if the google response of the geocoding was successful it will use that info to build the url for the new search
4751                        if (status == google.maps.GeocoderStatus.OK) {
4752                            window.cachedSelectedOption = results;
4753                            $.each(preFormattedStructure, function (findex, fvalue) {
4754                                $.each(results[0].address_components, function (rindex, rvalue) {
4755                                    if (rvalue.types[0] == findex) {
4756                                        formattedAddress.push(rvalue.long_name);
4757                                    }
4758                                });
4759                            });
4760                            $('.googleSuggest').each(function () {
4761                                if ($(this).val() == '') {
4762                                    if (formattedAddress.length > 0) {
4763                                        $(this).val(formattedAddress.join(', '));
4764                                        clearContent($(this));
4765                                    }
4766                                }
4767                            });
4768                        } else {
4769                            $('.googleSuggest').each(function () {
4770                                $(this).val('');
4771                            });
4772                        }
4773                    });
4774                }
4775            }
4776            function showError(error) {
4777                switch (error.code) {
4778                    case error.PERMISSION_DENIED:
4779                    case 1: // PERMISSION_DENIED
4780                        $('.fill_location.clicked').popover({
4781                            content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`,
4782                            container: 'body'
4783                        });
4784                        $('.fill_location.clicked').popover('toggle');
4785                        setTimeout(function () {
4786                            $('.fill_location.clicked').popover('hide');
4787                            $('.fill_location.clicked').removeClass('clicked');
4788                        }, 4000);
4789                        break;
4790                    case error.POSITION_UNAVAILABLE:
4791                    case 2: // POSITION_UNAVAILABLE
4792                        $('.fill_location.clicked').popover({
4793                            content: `Location information is unavailable. Please check your device location settings.`,
4794                            container: 'body'
4795                        });
4796                        $('.fill_location.clicked').popover('toggle');
4797                        setTimeout(function () {
4798                            $('.fill_location.clicked').popover('hide');
4799                            $('.fill_location.clicked').removeClass('clicked');
4800                        }, 4000);
4801                        break;
4802                    case error.TIMEOUT:
4803                    case 3: // TIMEOUT
4804                        $('.fill_location.clicked').popover({
4805                            content: `Location request timed out. Please ensure location services are enabled and try again.`,
4806                            container: 'body'
4807                        });
4808                        $('.fill_location.clicked').popover('toggle');
4809                        setTimeout(function () {
4810                            $('.fill_location.clicked').popover('hide');
4811                            $('.fill_location.clicked').removeClass('clicked');
4812                        }, 4000);
4813                        break;
4814                    case error.UNKNOWN_ERROR:
4815                    default:
4816                        $('.fill_location.clicked').popover({
4817                            content: `An error occurred while getting your location. Please try again.`,
4818                            container: 'body'
4819                        });
4820                        $('.fill_location.clicked').popover('toggle');
4821                        setTimeout(function () {
4822                            $('.fill_location.clicked').popover('hide');
4823                            $('.fill_location.clicked').removeClass('clicked');
4824                        }, 4000);
4825                        break;
4826                }
4827            }
4828            if (navigator.geolocation) {
4829                if ($(".googleSuggest")[0]) {
4830                    $(document).on('click', '.fill_location', function getCXPosition() {
4831                        // Prevent multiple simultaneous geolocation requests
4832                        if (isGettingLocation) {
4833                            return;
4834                        }
4835                        
4836                        var $button = $(this);
4837                        $button.addClass('clicked');
4838                        var startPos;
4839                        
4840                        // Set flag to prevent concurrent requests
4841                        isGettingLocation = true;
4842                        
4843                        // Function to actually get the position
4844                        var attemptGetPosition = function() {
4845                            // Try with shorter timeout first for faster response
4846                            var geoOptions = {
4847                                enableHighAccuracy: false, // Use false for faster response
4848                                timeout: 8000, // 8 second timeout (reduced for faster failure)
4849                                maximumAge: 300000 // Accept cached position up to 5 minutes old
4850                            };
4851                            
4852                            navigator.geolocation.getCurrentPosition(function (position) {
4853                                startPos = position;
4854                                vlat = startPos.coords.latitude;
4855                                vlon = startPos.coords.longitude;
4856                                
4857                                // Validate coordinates before proceeding
4858                                if (!vlat || !vlon || vlat === 0 || vlon === 0) {
4859                                    isGettingLocation = false;
4860                                    $button.removeClass('clicked');
4861                                    return;
4862                                }
4863                                
4864                                // Save coordinates to sessionStorage
4865                                saveCoordinatesToSession(vlat, vlon);
4866                                
4867                                $.get("/api/data/html/get/data_widgets/widget_name", {
4868                                    "vlat": vlat,
4869                                    "vlon": vlon,
4870                                    "name": "Website - Save Coordinates Session"
4871                                });
4872                                
4873                                populateSearchFields();
4874                                
4875                                // Clear flag
4876                                isGettingLocation = false;
4877                                $button.removeClass('clicked');
4878                            }, function(error) {
4879                                // Clear flag on error
4880                                isGettingLocation = false;
4881                                $button.removeClass('clicked');
4882                                
4883                                // For timeout errors, try sessionStorage as fallback
4884                                if (error.code === 3) {
4885                                    if (getCoordinatesFromSession()) {
4886                                        // Use cached coordinates
4887                                        $.get("/api/data/html/get/data_widgets/widget_name", {
4888                                            "vlat": vlat,
4889                                            "vlon": vlon,
4890                                            "name": "Website - Save Coordinates Session"
4891                                        });
4892                                        
4893                                        populateSearchFields();
4894                                        
4895                                        // Clear flag
4896                                        isGettingLocation = false;
4897                                        $button.removeClass('clicked');
4898                                    } else {
4899                                        $button.popover({
4900                                            content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`,
4901                                            container: 'body'
4902                                        });
4903                                        $button.popover('show');
4904                                        setTimeout(function() {
4905                                            $button.popover('hide');
4906                                        }, 5000);
4907                                    }
4908                                } else {
4909                                    showError(error);
4910                                }
4911                            }, geoOptions);
4912                        };
4913                        
4914                        // Check if geolocation permission is already denied (but don't block if it's prompt)
4915                        if (navigator.permissions && navigator.permissions.query) {
4916                            navigator.permissions.query({name: 'geolocation'}).then(function(result) {
4917                                if (result.state === 'denied') {
4918                                    isGettingLocation = false;
4919                                    $button.removeClass('clicked');
4920                                    showError({code: 1, message: 'Permission denied'});
4921                                    return;
4922                                } else {
4923                                    // Permission is granted or prompt - proceed with geolocation
4924                                    attemptGetPosition();
4925                                }
4926                            }).catch(function(err) {
4927                                // If permission API not supported, proceed anyway
4928                                attemptGetPosition();
4929                            });
4930                        } else {
4931                            // Permission API not available, proceed with geolocation
4932                            attemptGetPosition();
4933                        }
4934                    })
4935                }
4936            } else {
4937                console.log('Geolocation is not supported for this Browser/OS version yet.');
4938            }
4939            function getUrlParameter(sParam) {
4940                var sPageURL = window.location.search.substring(1);
4941                var sURLVariables = sPageURL.split('&');
4942
4943                for (var i = 0; i < sURLVariables.length; i++) {
4944                    var sParameterName = sURLVariables[i].split('=');
4945
4946                    if (sParameterName[0] == sParam) {
4947                        return decodeURIComponent(sParameterName[1]);
4948                    }
4949                }
4950            }
4951        </script>
4951
4952        
4952<script>
4953	// switchClass() is jQuery UI (Effects), which is no longer loaded on every page.
4954	// removeClass().addClass() is the same class swap, applied immediately instead of
4955	// after animateClass()'s queued 400ms default.
4956	$(document).ready(function(){
4957		$('.navbar-header .navbar-toggle.main_menu').click(function(){
4958			$('.mobile-main-menu').toggleClass('opened');
4959		});
4960		$('.mobile-main-menu .sidebar-nav').find('li').each(function(){
4961			$(this).addClass('hasChildren');
4962			if ($(this).children('ul').length > 0){
4963				$(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>');
4964				$(this).find('a').after('<div class="clearfix"></div>');
4965				$(this).find('span').after('<div class="clearfix"></div>');
4966			}
4967			$(this).append('<div class="clearfix"></div>');
4968		});
4969
4970		$('.mobile-main-menu .sidebar-nav li i').click(function(){
4971			if ($(this).parent().children('ul').length > 0){
4972				$(this).parent().toggleClass('sub_open');
4973			}
4974			if ($(this).hasClass('fa-plus')){
4975				$(this).removeClass('fa-plus').addClass('fa-minus');
4976			} else {
4977				$(this).removeClass('fa-minus').addClass('fa-plus');
4978			}
4979		});
4980	})
4981
4982	if ($(window).width() > 740 && $(window).width() < 1100) {
4983
4984		$(document).ready(function(){
4985			$('.tablet-menu .tablet-menu-ul').find('li').each(function(){
4986
4987				if ($(this).children('ul').length > 0){
4988					$(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>');
4989					$(this).find('a').after('<div class="clearfix"></div>');
4990					var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");;
4991					$(this).children('a').html(this_link);
4992					$(this).find('span').after('<div class="clearfix"></div>');
4993				}
4994				$(this).append('<div class="clearfix"></div>');
4995			});
4996
4997			$('.tablet-menu .tablet-menu-ul li i').click(function(){
4998
4999				if ($(this).parent().children('ul').length > 0){
5000					$(this).parent().toggleClass('sub_open');
5001
5002					if ($(this).siblings( "ul" ).hasClass('tablet-block')){
5003						$(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none');
5004					} else {
5005						$(this).siblings( "ul" ).addClass( "tablet-block" );
5006
5007						if ($(this).siblings( "ul" ).hasClass('tablet-none')){
5008							$(this).siblings( "ul" ).removeClass('tablet-none')
5009						}
5010
5011						if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) {
5012							$(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none');
5013							$(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus');
5014						}
5015
5016						if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) {
5017							$(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5018							$(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5019						}
5020
5021						if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) {
5022							$(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5023							$(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5024						}
5025
5026					}
5027
5028				}
5029
5030				if ($(this).hasClass('fa-plus')){
5031					$(this).removeClass('fa-plus').addClass('fa-minus');
5032				} else {
5033					$(this).removeClass('fa-minus').addClass('fa-plus');
5034				}
5035			});
5036		})
5037	}
5038	// Append unique ID attribute for mobile main menu links
5039	$('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" });
5040</script>
5040
5041
5042<script>
5043/* Keeps the announcement bar flush with the navbar: this widget's CSS emits static 50px
5044   offsets that are blind to the hide-menu settings, so a hidden or fixed compact-logo
5045   navbar leaves a gap or an overlap. Measure the real navbar state and own the offset. */
5046(function () {
5047    function alignAnnouncementToNavbar() {
5048        var ann = document.querySelector('.announcement-bar');
5049        if (!ann) { return; }
5050        /* above the widget's own offset breakpoints: restore stylesheet values */
5051        if (window.innerWidth > 1100) {
5052            ann.style.removeProperty('margin-top');
5053            ann.style.removeProperty('top');
5054            return;
5055        }
5056        var navbar = document.querySelector('.header nav.navbar.navbar-default');
5057        var navStyle = navbar ? window.getComputedStyle(navbar) : null;
5058        /* navbar hidden: the 50px offsets have nothing to clear, sit flush */
5059        if (!navbar || navStyle.display === 'none') {
5060            ann.style.setProperty('margin-top', '0px', 'important');
5061            ann.style.setProperty('top', '0px', 'important');
5062            return;
5063        }
5064        if (window.innerWidth >= 768) { return; }
5065        /* only act while the navbar is pinned and showing the compact logo */
5066        if (navStyle.position !== 'fixed') { return; }
5067        var logo = navbar.querySelector('.mobile_website_logo');
5068        if (!logo || window.getComputedStyle(logo).display === 'none') { return; }
5069        var navRect = navbar.getBoundingClientRect();
5070        var annRect = ann.getBoundingClientRect();
5071        var delta = Math.round(navRect.bottom - annRect.top); /* >0 overlap, <0 gap */
5072        if (delta === 0) { return; }
5073        var currentMt = parseFloat(window.getComputedStyle(ann).marginTop) || 0;
5074        var nextMt = currentMt + delta;
5075        /* a transient element above the bar during load can inflate the measure; a
5076           negative margin would pull the bar behind the navbar, so clamp at 0 */
5077        if (nextMt < 0) { nextMt = 0; }
5078        /* !important to beat the widget's "margin-top: 50px !important" rule */
5079        ann.style.setProperty('margin-top', nextMt + 'px', 'important');
5080    }
5081
5082    function run() {
5083        alignAnnouncementToNavbar();
5084        /* re-run after late layout shifts (fonts, async embeds) */
5085        window.setTimeout(alignAnnouncementToNavbar, 250);
5086        window.setTimeout(alignAnnouncementToNavbar, 1200);
5087    }
5088
5089    if (document.readyState === 'loading') {
5090        document.addEventListener('DOMContentLoaded', run);
5091    } else {
5092        run();
5093    }
5094    window.addEventListener('load', alignAnnouncementToNavbar);
5095    var resizeTimer;
5096    window.addEventListener('resize', function () {
5097        window.clearTimeout(resizeTimer);
5098        resizeTimer = window.setTimeout(alignAnnouncementToNavbar, 150);
5099    });
5100})();
5101</script>
vendor: 2 bytes, line 5101
5101
5102<script attribute='text/javascript'>
5103	var map;
5104	var members = {};
5105	function initializeMap() {
5106		map = new google.maps.Map(document.getElementById('map-bounds'), {
5107		center: {lat: 0, lng: 0},
5108		zoom: 8,
5109		disableDefaultUI: true,
5110		});
5111	}
5112	function toogleShapeBox(user_id,node){
5113		if($(node).is(':checked') == true){
5114			members['user_id_'+user_id].boundsShape.setMap(map);
5115		}else{
5116			members['user_id_'+user_id].boundsShape.setMap(null);
5117		}
5118	}
5119
5120	function loadMarker(lat,lng,showInfoWindow,title){
5121		var contentString = '';
5122		var marker = new google.maps.Marker({
5123          position: {lat:lat,lng:lng},
5124          map: map,
5125          title: 'Bounds Box Objects'
5126        });
5127        
5128		if(showInfoWindow === true){
5129			
5130			contentString = '<table>';
5131			
5132			$.each(members,function(index,value){
5133				contentString += '<tr>';
5134				contentString += '<td><input type="checkbox" checked="true" onchange="toogleShapeBox('+value.user_id+',this)"><td>';
5135                contentString += '<td>'+value.name+'<td>';
5136                contentString += '</tr>';
5137            });
5138			contentString += '</table>';
5139
5140			var infowindow = new google.maps.InfoWindow({
5141			  content: contentString
5142			});
5143
5144			marker.addListener('click', function() {
5145			  infowindow.open(map, marker);
5146			});
5147			
5148		}else{
5149			marker.setIcon('https://maps.google.com/mapfiles/ms/icons/green-dot.png');
5150			var infowindow = new google.maps.InfoWindow({
5151			  content: title
5152			});
5153
5154			marker.addListener('click', function() {
5155			  infowindow.open(map, marker);
5156			});
5157			
5158		}
5159	}
5160
5161	function drawBounds(lat,lng,swlat,swlng,nelat,nelng,color,address,user_id,name){
5162
5163		latlngs = [];
5164
5165		latlngs.push({ lat: swlat, 	lng: swlng });//bottom left
5166		latlngs.push({ lat: swlat, 	lng: lng });//bottom center
5167		latlngs.push({ lat: swlat, 	lng: nelng });//bottom right
5168		latlngs.push({ lat: lat, 	lng: nelng });// center right
5169		latlngs.push({ lat: nelat, 	lng: nelng });//top right
5170		latlngs.push({ lat: nelat, 	lng: lng });//top center
5171		latlngs.push({ lat: nelat, 	lng: swlng });//top left
5172		latlngs.push({ lat: lat, 	lng: swlng });//center left
5173
5174
5175		members['user_id_'+user_id] = {
5176			boundsShape:new google.maps.Polygon({
5177				paths: latlngs,
5178				strokeColor: color,
5179				strokeOpacity: 0.8,
5180				strokeWeight: 3,
5181				fillColor: 'color',
5182				fillOpacity: 0.35
5183			}),
5184			name:name,
5185			user_id:user_id,
5186			color:color
5187		}
5188
5189		members['user_id_'+user_id].boundsShape.setMap(map);
5190	}
5191
5192    
5193</script>
5193<script>
5194    function loadMasonryJs() {
5195        return new Promise((resolve, reject) => {
5196            if (window["masonryJs"]) {
5197                resolve("already load masonry");
5198            } else {
5199                let script = document.createElement('script');
5200                script.type = 'text/javascript';
5201                script.src = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/masonry_gridview.pkgd.min.js";
5202                script.async = true;
5203                script.onload = function () {
5204                    window['masonryJs'] = true;
5205                    resolve("ok");
5206                };
5207                let head = document.getElementsByTagName('head')[0];
5208                head.appendChild(script);
5209
5210            }
5211        });
5212    }
5213
5214    var map_opened = 0;
5215    var masonry_opened = 0;
5216
5217    $(".views > i").click(function () {
5218        $(".views > i").removeClass('activeView');
5219        $(this).addClass('activeView');
5220    });
5221        $(".views > i.gridView").click(async function () {
5222       await loadMasonryJs();
5223        $('.grid-container .clickToLoadMoreContainer').addClass('gridBtnLazyLoad')
5224        if (map_opened == 1) {
5225            $('.grid-container').removeClass('hidden');
5226            $('.map_container').hide();
5227            map_opened = 0;
5228        }
5229        $('.grid-container').addClass('visible');
5230        $('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
5231        $('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
5232        $('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
5233        $('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
5234        $('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
5235        $('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
5236        $('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
5237        $('.mid_section .post-location-snippet').addClass('text-center');
5238        $('.mid_section.ex-col-7 .sm-block').addClass('show');
5239        $('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
5240        $('.mid_section .row-fluid.bpad a').addClass('btn-block');
5241        $('.mid_section .row-fluid.bpad').addClass('text-center');
5242        $('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
5243        $('.mid_section > div > p').addClass('text-center');
5244        $('.mid_section h2').addClass('nomargin');
5245        $('.mid_section a.h3').addClass('text-center h4 tmargin');
5246        $('.mid_section .view-details').removeClass('rmargin');
5247        $('.mid_section .contact-member').removeClass('lmargin');
5248        $('.member-search-full-name').removeClass('rmargin');
5249        $('.member-search-reviews').removeClass('rmargin');
5250        $('.member-search-location').removeClass('rmargin rpad');
5251        $('.member-search-company').addClass('btn-block');
5252        $('.view_phone_number').addClass('center-block');
5253        $('.phone_number').addClass('btn-block');
5254        $('.search_result_image').addClass('grid_image');
5255        $('.post-search-category').removeClass('inline-block').addClass('text-center');
5256        $('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
5257
5258                $('.grid-container.visible > hr:nth-of-type(3n)').addClass('gridBreak');
5259        $('.search_result').addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
5260                $('.grid_element').addClass('well xs-center-block');
5261
5262        $('.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();
5263        $('h2.h3.bold > a').addClass('gridA');
5264        $('.info_section .module').removeClass('module fpad');
5265        $('.grid-container').addClass('row');
5266        document.body.classList.add('bdGridDone');
5267                $('.grid-container').masonry({
5268            // options
5269            itemSelector: '.search_result',
5270            columnWidth: '.search_result',
5271            horizontalOrder: true,
5272
5273        });
5274        masonry_opened = 1;
5275        
5276    });
5277        $(".views > i.listView").click(function () {
5278        $('.grid-container .clickToLoadMoreContainer').removeClass('gridBtnLazyLoad')
5279
5280        $('.clearfix.spacing').remove();
5281                if (masonry_opened == 1) {
5282            $('.grid-container').masonry('destroy');
5283        }
5284                $('.grid-container').addClass('visible');
5285        $('.img_section.ex-col-2').removeClass('col-xs-12 ex-col-2 bmargin').addClass('col-xs-2');
5286        $('.img_section.ex-col-3').removeClass('col-sm-12 ex-col-3 bmargin').addClass('col-sm-3');
5287        $('.img_section.ex-col-4').removeClass('col-sm-12 ex-col-4 bmargin').addClass('col-sm-4');
5288        $('.mid_section.col-sm-12.ex-col-9').removeClass('col-sm-12').addClass('col-sm-9');
5289        $('.mid_section.col-sm-12.ex-col-6').removeClass('col-sm-12').addClass('col-sm-6');
5290        $('.mid_section.col-sm-12.ex-col-7').removeClass('col-sm-12 nohpad bpad ex-col-7 text-center').addClass('col-sm-7');
5291        $('.mid_section.col-sm-12.ex-col-8').removeClass('col-sm-12 nohpad bpad').addClass('col-sm-8');
5292        $('.mid_section .post-location-snippet.text-center').removeClass('text-center');
5293        $('.mid_section.col-sm-7 .sm-block').removeClass('show');
5294        $('.mid_section.col-sm-12.ex-col-12').removeClass('col-sm-12').addClass('col-sm-12');
5295        $('.mid_section .row-fluid.bpad .col-sm-12').removeClass('col-sm-12 bmargin').addClass('col-md-8');
5296        $('.mid_section .row-fluid.bpad a').removeClass('btn-block');
5297        $('.mid_section .row-fluid.bpad').removeClass('text-center');
5298        $('.info_section').removeClass('col-sm-12 nopad').addClass('col-sm-3 norpad');
5299        $('.info_section > div.nomargin').addClass('module fpad');
5300        $('.mid_section > div > p').removeClass('text-center');
5301        $('.mid_section h2').removeClass('nomargin');
5302        $('.mid_section a.h3').removeClass('text-center h4 tmargin');
5303        $('.mid_section .view-details').addClass('rmargin');
5304        $('.mid_section .contact-member').addClass('lmargin');
5305        $('.member-search-full-name').addClass('rmargin');
5306        $('.member-search-reviews').addClass('rmargin');
5307        $('.member-search-location').addClass('rmargin rpad');
5308        $('.member-search-company').removeClass('btn-block');
5309        $('.view_phone_number').removeClass('center-block');
5310        $('.search_result_image').removeClass('grid_image');
5311        $('.ex-col-8 h2.h3.bold a.gridA').removeClass('bmargin');
5312        $('.gridBreak').removeClass('gridBreak');
5313        $('.post-search-category').removeClass('text-center').addClass('inline-block');
5314        $('.post-results-star').removeClass('text-center tmargin').addClass(' pull-right');
5315                $('.search_result').removeClass('col-md-4 col-sm-4 col-xs-12 grid').addClass('row-fluid');
5316                $('.grid_element').removeClass('well');
5317        $('.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();
5318        $('h2.h3.bold > a').removeClass('gridA');
5319        $('.grid-container').removeClass('row');
5320        if (map_opened == 1) {
5321            $('.grid-container').removeClass('hidden');
5322            $('.map_container').hide();
5323            map_opened = 0;
5324        }
5325    });
5326
5327    $('.views > i.mapView').click(function () {
5328        $('.clearfix.spacing').remove();
5329        $('.grid-container').addClass('hidden');
5330        $('.map_container').show();
5331        map_opened = 1;
5332        if(typeof initializeGoogleMaps === "function"){
5333            initializeGoogleMaps();
5334        }
5335    });
5336    if (document.getElementById("google-pin") !== null) {
5337        $('.mapView').css('display', 'inline-block');
5338    }
5339    $(document).ready(function () {
5340        if ($('.views .fa:visible').length == 1) {
5341            $('.views').hide();
5342        } else {
5343            $('.views').show();
5344        }
5345    })
5346</script>
5346<script>
5347    $('#captchaContainer').removeClass('form-control ');
5348    $(".website_url_field").keyup(function(){
5349        var fieldName = $(this).attr('name');
5350        $(this).val($(this).val().replace(/\s+/g, ''));
5351        $('#myform').formValidation('revalidateField', fieldName);
5352    });
5353</script>
vendor: 2 bytes, line 5353
5353
5354<script>
5355     $('#newsletter input[name="email"]').on('keypress', function() {
5356        $("#newsletter > .gdpr_consent_email").show();
5357    });
5358	$('#newsletter_signup_footer input[name="email"]').on('keypress', function() {
5359        $("#newsletter_signup_footer > .gdpr_consent_email").show();
5360    });
5361</script>
5361                
5361<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
5361
5362                
5362<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
5362
5363                
5363<script type="text/javascript">
5364                    function decodeHtml(html) {
5365                        var txt = document.createElement("textarea");
5366                        txt.innerHTML = html;
5367                        return txt.value;
5368                    }
5369                    
5370                    // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
5371                    $(function() {
5372                        function applyFix() {
5373                            // Check if FormValidation library and URI validator are loaded
5374                            if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
5375                                FormValidation.Validator.uri.validate = function(validator, $field, options) {
5376                                    var value = validator.getFieldValue($field, 'uri').trim();
5377                                    return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
5378                                };
5379                                return true;
5380                            }
5381                            return false;
5382                        }
5383                        
5384                        if (!applyFix()) {
5385                            setTimeout(applyFix, 50);
5386                        }
5387                    });
5388                </script>
5388
5389                        
5389<script type="text/javascript">
5390
5391        var counterSubmit = 0;
5392        $(document).ready(function() {
5393            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
5394               captcha holders that clears the wrong checkbox, so the widget the visitor solved
5395               keeps a token Google has already spent and every retry fails the security check.
5396               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
5397               an undefined id means no per-form id is known and the arg-less call is used,
5398               exactly as before. */
5399            function bdCaptchaWidgetId(formId) {
5400                if (typeof captchaHolders === "undefined" || !formId) {
5401                    return undefined;
5402                }
5403                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
5404                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
5405                   the holder element itself so the counter never has to be reconstructed. */
5406                var form = document.getElementById(formId);
5407                var holder = form && form.querySelector(".g-recaptcha");
5408                return holder ? captchaHolders[holder.id] : undefined;
5409            }
5410
5411            function bdCaptchaReset(formId) {
5412                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
5413                    return;
5414                }
5415                var widgetId = bdCaptchaWidgetId(formId);
5416                if (widgetId === undefined) {
5417                    grecaptcha.reset();
5418                } else {
5419                    grecaptcha.reset(widgetId);
5420                }
5421            }
5422
5423            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
5424            // rules for fields that are NOT rendered in this form (conditionally-rendered or
5425            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
5426            // isValid(), so an empty required field bypasses validation and submits natively.
5427            // Remove any rule whose field has no matching element before initializing.
5428            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
5429            // REMOVES rules (never adds validators, never overrides native submit, never
5430            // intercepts on capture phase, never re-validates on click) — so it cannot
5431            // reproduce the "Save button slides down / nav broken / no success message"
5432            // regression that caused #5902 to be rolled back on site 19413.
5433            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LefnrMqAAAAAJ7P0zC7FpwVr8HmTffHnk3k7ZBX","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}}}};
5434            var formElement = $(`form[name='newsletter_modal_signup_380']`);
5435            if(validatorConfig && validatorConfig.fields) {
5436                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
5437                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
5438                        delete validatorConfig.fields[fieldName];
5439                    }
5440                });
5441            }
5442
5443            // Scroll to the first invalid field when submit fails validation,
5444            // so the user can immediately see why the form will not submit
5445            formElement.on('err.form.fv', function(e) {
5446                var $firstError = $(e.target).find('.form-group.has-error').first();
5447                if ($firstError.length) {
5448                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
5449                }
5450            });
5451
5452            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
5453
5454                if('newsletter_modal_signup' == 'unsubscribe_email'){
5455                    return true;
5456                }
5457                // Prevent form submission
5458                e.preventDefault();
5459                $form = $(e.target),
5460                fv = $form.data('formValidation');
5461
5462                // Check HTML5 required fields that FormValidation may not know about
5463                var requiredEmpty = false;
5464                $form.find('[required]').each(function() {
5465                    var val = $(this).val();
5466                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
5467                        requiredEmpty = true;
5468                        $(this).closest('.form-group').addClass('has-error');
5469                        if ($(this).siblings('.required-error').length === 0) {
5470                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>');
5471                        }
5472                    } else {
5473                        var $reqGroup = $(this).closest('.form-group');
5474                        $(this).siblings('.required-error').remove();
5475                        // Keep has-error if another validator is still failing for this field
5476                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
5477                            $reqGroup.removeClass('has-error');
5478                        }
5479                    }
5480                });
5481                if (requiredEmpty) {
5482                    fv.disableSubmitButtons(false);
5483                    counterSubmit = 0;
5484                    // Scroll to the first field with an error (HTML5-required scan does
5485                    // not trigger err.form.fv, so handle the scroll here too)
5486                    var $firstReqError = $form.find('.form-group.has-error').first();
5487                    if ($firstReqError.length) {
5488                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
5489                    }
5490                    return false;
5491                }
5492
5493                var values = $(this).serialize();
5494
5495                
5496                var locationFieldCorrect = true;
5497
5498                if($("#newsletter_modal_signup_380 .location_required").length > 0){
5499                    $("#newsletter_modal_signup_380 .location_required").each(function (index) {
5500                        if($(this).data('state') == 1){
5501                            if($('#newsletter_modal_signup_380 input[name="lead_location"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lat"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lng"]').val() == "") {
5502                                locationFieldCorrect = false;
5503                            }
5504                        }
5505                    });
5506                }
5507
5508                if(locationFieldCorrect === false){
5509                    //check that there is a latitude or longitude
5510                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
5511                    return false;
5512                }
5513                        
5514
5515                if (!$(this).attr("action")) {
5516                    var action = '';
5517
5518                } else {
5519                    var action = $(this).attr("action");
5520                }
5521                if (!$(this).attr("method")) {
5522                    var method = 'post';
5523
5524                } else {
5525                    var method = $(this).attr("method");
5526                }
5527                if (!$(this).attr("form_action_type")) {
5528                    var form_action_type = 'notification';
5529
5530                } else {
5531                    var form_action_type = $(this).attr("form_action_type");
5532                }
5533                if (!$(this).attr("form_action_div")) {
5534                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
5535                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
5536
5537                } else {
5538                    var form_action_div = $(this).attr("form_action_div");
5539                }
5540                if (!$(this).attr("return_data_type")) {
5541                    var return_data_type = 'json';
5542
5543                } else {
5544                    var return_data_type = $(this).attr("return_data_type");
5545                }
5546                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
5547                if (!submitInFlight) {
5548                    if ($("#newsletter_modal_signup_380-notification").html() != "") {
5549                        $("#newsletter_modal_signup_380-notification").remove();
5550                    }
5551                    if ($(this).find('input[type="submit"]').length > 0) {
5552                        $(this).find('input[type="submit"]').before('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
5553
5554                    } else {
5555                        $(this).prepend('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
5556                    }
5557                }
5558                var notification = $("#newsletter_modal_signup_380-notification");
5559
5560                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
5561                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
5562                    setTimeout(function(){
5563                        fv.defaultSubmit();
5564                    }, 100);
5565                } else {
5566                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
5567                    if(!submitInFlight) {
5568                        counterSubmit++;
5569                        $form.data('bdLastSubmitAt', Date.now());
5570
5571                        var fields      = $(this).serializeArray();
5572                        var formField   = [];
5573                        var processData = true;
5574                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
5575                        
5576                        
5577
5578                        if($("#newsletter_modal_signup_380 input[type=file]").length > 0){
5579                            
5580                            var formObject  = new FormData();
5581                            processData     = false;
5582                            contentType     = false;
5583
5584                            $(fields).each(function(index,field){
5585                                formField.push(field.name+"="+field.value);
5586                            });
5587
5588                            values  = formField.join("&");
5589
5590                            $(formField).each(function(index,fieldValue){
5591                                var fieldInfo = fieldValue.split('=');
5592                                formObject.append(fieldInfo[0],fieldInfo[1]);
5593                            });
5594
5595                            $("#newsletter_modal_signup_380 input[type=file]").each(function(index,node){
5596                                var file = this.files[0];
5597                                if(typeof file != "undefined"){
5598                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
5599                                }
5600                            });
5601                        }else{
5602                            
5603                            $(fields).each(function(index,field){
5604                                formField.push(field.name+"="+encodeURIComponent(field.value));
5605                            });
5606
5607                            var formObject  = formField.join("&");
5608                        } 
5609                        
5610                        $.ajax({
5611                            url: action,
5612                            type: method,
5613                            data: formObject,
5614                            dataType: return_data_type,
5615                            processData: processData,
5616                            contentType: contentType,
5617                            success: function (data) {
5618                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
5619                                notification = $("#newsletter_modal_signup_380-notification");
5620                                if (return_data_type == "html") {
5621                                    var result = 'success';
5622
5623                                    if (!data != "") {
5624                                        var result_widget = data['result_widget'];
5625                                    }
5626
5627                                } else {
5628
5629
5630                                    if (!data['result']) {
5631                                        var result = 'error';
5632                                    } else {
5633                                        var result = data['result'];
5634                                    }
5635                                    if (!data['result_widget']) {
5636                                        var result_widget = '';
5637
5638                                    } else {
5639                                        var result_widget = data['result_widget'];
5640                                    }
5641                                }
5642                                if (result == "success") {
5643
5644                                    if (!data['message']) {
5645                                        var message = `Your information has submitted successfully!`;
5646
5647                                    } else {
5648                                        var message = data['message'];
5649                                    }
5650                                    if (!data['redirect_url']) {
5651                                        var redirect_url = '';
5652
5653                                    } else {
5654                                        var redirect_url = data['redirect_url'];
5655                                    }
5656
5657
5658
5659                                    if (form_action_type == "notification") {
5660                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
5661                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
5662                                                redirect_url = "/" + redirect_url;
5663                                            }
5664                                            if (notification.parents('.modal').length) {
5665                                                $('.modal-backdrop').hide();
5666                                                $('.modal').modal('hide');
5667                                            }
5668                                            window.location.href = redirect_url;
5669                                            fv.resetForm(true);
5670                                        } else {
5671                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
5672                                            .addClass('alert-dismissible')
5673                                            .addClass("alert-success-subtle")
5674                                            .removeClass("alert-danger-subtle")
5675                                            .removeClass("alert-warning-subtle")
5676                                        
5677                                            
5678
5679                                        if(notification.parents('.modal').length && 'newsletter_modal_signup_380' == 'whmcs_billing_address'){
5680                                            setTimeout(function(){
5681                                                notification.parents('.modal').modal('hide');
5682                                            }, 1000);
5683                                        }
5684                                        }
5685
5686                                    } else if (form_action_type == "widget") {
5687
5688                                        if (result_widget != '') {
5689
5690                                            setTimeout(function(){
5691                                                if(form_action_div != '.newsletter_modal_form_container'){
5692                                                    $("html, body").animate({ scrollTop: 0 }, 600);
5693                                                }                                                
5694                                                $(form_action_div).html(decodeHtml(result_widget)).text();
5695
5696                                            }, 1000);
5697                                        }
5698
5699                                    } else if (form_action_type == "redirect") {
5700
5701                                        if (redirect_url == "") {
5702                                            redirect_url = decodeURIComponent("");
5703                                        }
5704
5705                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
5706                                            redirect_url = "/" + redirect_url;
5707                                        }
5708                                        current_location = "/search_results";
5709                                        refresh_pages_string = "/login";
5710                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
5711                                        refresh_pages_array = refresh_pages_string.split(',');
5712                                        notification.html(message)
5713                                            .addClass("alert-success-subtle")
5714                                            .removeClass("alert-danger-subtle")
5715                                            .removeClass("alert-warning-subtle")
5716                                            .delay(2000).slideUp();
5717                                            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" )){
5718                                                                                                    window.location.href = window.location.href+'?logged';
5719                                                                                            } else {
5720                                                window.location.href = redirect_url;
5721                                            }
5722
5723                                        fv.resetForm(true);
5724                                    }
5725                                    if(form_action_div != '.newsletter_modal_form_container' && 'newsletter_modal_signup_380' != 'whmcs_billing_address'){
5726                                        $('.modal-backdrop').hide();
5727                                    }
5728                                } else {
5729                                    bdCaptchaReset(formElement.attr('id'));
5730                                    if (!data['message']) {
5731                                        var message = `You entered invali
5731d data. Please try to save again.`;
5732
5733                                    } else {
5734                                        var message = data['message'];
5735                                    }
5736                                    $("#newsletter_modal_signup_380-notification").html(message)
5737                                        .addClass("alert-danger-subtle")
5738                                        .removeClass("alert-success-subtle")
5739                                        .removeClass("alert-warning-subtle")
5740                                        .fadeIn();
5741                                    fv.disableSubmitButtons(false);
5742                                }
5743                                counterSubmit = 0;
5744                            },
5745                            error: function (e) {
5746                                
5747                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
5748                                        bdCaptchaReset(formElement.attr('id'));
5749                                        $("#newsletter_modal_signup_380-notification").html(`Recaptcha Error`);
5750                                } else {
5751                                    $("#newsletter_modal_signup_380-notification").html(`A connection error occurred while saving. Please try to save again.`);
5752                                }
5753                                $("#newsletter_modal_signup_380-notification").addClass("alert-warning-subtle")
5754                                    .removeClass("alert-success-subtle")
5755                                    .removeClass("alert-warning-subtle")
5756                                    .fadeIn();
5757                                counterSubmit = 0;
5758                            }
5759                        });/// End Ajax
5760                    }
5761                }//END else
5762            }).bind('keydown', function(event) {
5763
5764                if (event.ctrlKey || event.metaKey) {
5765
5766                    switch (String.fromCharCode(event.which).toLowerCase()) {
5767
5768                        case 's':
5769                            var nativeForm = $(this)[0];
5770                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
5771                                event.preventDefault();
5772                                return false;
5773                            }
5774                            $(this).submit();
5775                            break;
5776                    }
5777                }
5778            });
5779
5780            /// This will turn any select2 that are required in the form builder to being required elements.
5781            $('#newsletter_modal_signup_380 select').each(function (i, obj) {
5782                setTimeout(function(){
5783                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
5784                        $(obj).css("z-index","-999");
5785                        $(obj).css("height","0");
5786                        $(obj).css("width","0");
5787                        $(obj).css("display","block");  
5788                        $(obj).css("position","absolute");  
5789                    }
5790                }, 3000);
5791            });
5792
5793            // Clear required-error messages when user fills in a required field
5794            $('#newsletter_modal_signup_380').on('keyup change', '[required]', function() {
5795                var val = $(this).val();
5796                if (val !== '' && val !== null && val.trim() !== '') {
5797                    var $group = $(this).closest('.form-group');
5798                    // Remove only this handler's own required message
5799                    $(this).siblings('.required-error').remove();
5800                    // Keep has-error if another FormValidation validator is still failing
5801                    // (e.g. stringLength, regexp). has-error is shared, so removing it
5802                    // wholesale would clobber other validators' red styling.
5803                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
5804                        $group.removeClass('has-error');
5805                    }
5806                }
5807            });
5808
5809        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
5810    </script>
5810
5811        
5811<script type="text/javascript">
5812(function () {
5813    try {
5814        var email = new URLSearchParams(window.location.search).get('email');
5815        if (!email) { return; }
5816        email = email.trim();
5817        if (email.indexOf('@') === -1) { return; }
5818        /* Sets the input value property (never HTML) -> XSS-safe regardless of the query value. */
5819        var fill = function () {
5820            var fields = document.querySelectorAll('input[name="email_r"]');
5821            for (var i = 0; i < fields.length; i++) {
5822                if (!fields[i].value) { fields[i].value = email; }
5823            }
5824        };
5825        if (document.readyState === 'loading') {
5826            document.addEventListener('DOMContentLoaded', fill);
5827        } else {
5828            fill();
5829        }
5830    } catch (e) {}
5831})();
5832</script>
5832
5833        
5833<script type="text/javascript">
5834
5835        var counterSubmit = 0;
5836        $(document).ready(function() {
5837            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
5838               captcha holders that clears the wrong checkbox, so the widget the visitor solved
5839               keeps a token Google has already spent and every retry fails the security check.
5840               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
5841               an undefined id means no per-form id is known and the arg-less call is used,
5842               exactly as before. */
5843            function bdCaptchaWidgetId(formId) {
5844                if (typeof captchaHolders === "undefined" || !formId) {
5845                    return undefined;
5846                }
5847                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
5848                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
5849                   the holder element itself so the counter never has to be reconstructed. */
5850                var form = document.getElementById(formId);
5851                var holder = form && form.querySelector(".g-recaptcha");
5852                return holder ? captchaHolders[holder.id] : undefined;
5853            }
5854
5855            function bdCaptchaReset(formId) {
5856                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
5857                    return;
5858                }
5859                var widgetId = bdCaptchaWidgetId(formId);
5860                if (widgetId === undefined) {
5861                    grecaptcha.reset();
5862                } else {
5863                    grecaptcha.reset(widgetId);
5864                }
5865            }
5866
5867            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
5868            // rules for fields that are NOT rendered in this form (conditionally-rendered or
5869            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
5870            // isValid(), so an empty required field bypasses validation and submits natively.
5871            // Remove any rule whose field has no matching element before initializing.
5872            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
5873            // REMOVES rules (never adds validators, never overrides native submit, never
5874            // intercepts on capture phase, never re-validates on click) — so it cannot
5875            // reproduce the "Save button slides down / nav broken / no success message"
5876            // regression that caused #5902 to be rolled back on site 19413.
5877            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LefnrMqAAAAAJ7P0zC7FpwVr8HmTffHnk3k7ZBX","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"}}}}};
5878            var formElement = $(`form[name='member_login_190']`);
5879            if(validatorConfig && validatorConfig.fields) {
5880                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
5881                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
5882                        delete validatorConfig.fields[fieldName];
5883                    }
5884                });
5885            }
5886
5887            // Scroll to the first invalid field when submit fails validation,
5888            // so the user can immediately see why the form will not submit
5889            formElement.on('err.form.fv', function(e) {
5890                var $firstError = $(e.target).find('.form-group.has-error').first();
5891                if ($firstError.length) {
5892                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
5893                }
5894            });
5895
5896            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
5897
5898                if('member_login' == 'unsubscribe_email'){
5899                    return true;
5900                }
5901                // Prevent form submission
5902                e.preventDefault();
5903                $form = $(e.target),
5904                fv = $form.data('formValidation');
5905
5906                // Check HTML5 required fields that FormValidation may not know about
5907                var requiredEmpty = false;
5908                $form.find('[required]').each(function() {
5909                    var val = $(this).val();
5910                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
5911                        requiredEmpty = true;
5912                        $(this).closest('.form-group').addClass('has-error');
5913                        if ($(this).siblings('.required-error').length === 0) {
5914                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>');
5915                        }
5916                    } else {
5917                        var $reqGroup = $(this).closest('.form-group');
5918                        $(this).siblings('.required-error').remove();
5919                        // Keep has-error if another validator is still failing for this field
5920                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
5921                            $reqGroup.removeClass('has-error');
5922                        }
5923                    }
5924                });
5925                if (requiredEmpty) {
5926                    fv.disableSubmitButtons(false);
5927                    counterSubmit = 0;
5928                    // Scroll to the first field with an error (HTML5-required scan does
5929                    // not trigger err.form.fv, so handle the scroll here too)
5930                    var $firstReqError = $form.find('.form-group.has-error').first();
5931                    if ($firstReqError.length) {
5932                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
5933                    }
5934                    return false;
5935                }
5936
5937                var values = $(this).serialize();
5938
5939                
5940                var locationFieldCorrect = true;
5941
5942                if($("#member_login_190 .location_required").length > 0){
5943                    $("#member_login_190 .location_required").each(function (index) {
5944                        if($(this).data('state') == 1){
5945                            if($('#member_login_190 input[name="lead_location"]').val() == "" || $('#member_login_190 input[name="lat"]').val() == "" || $('#member_login_190 input[name="lng"]').val() == "") {
5946                                locationFieldCorrect = false;
5947                            }
5948                        }
5949                    });
5950                }
5951
5952                if(locationFieldCorrect === false){
5953                    //check that there is a latitude or longitude
5954                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
5955                    return false;
5956                }
5957                        
5958
5959                if (!$(this).attr("action")) {
5960                    var action = '';
5961
5962                } else {
5963                    var action = $(this).attr("action");
5964                }
5965                if (!$(this).attr("method")) {
5966                    var method = 'post';
5967
5968                } else {
5969                    var method = $(this).attr("method");
5970                }
5971                if (!$(this).attr("form_action_type")) {
5972                    var form_action_type = 'notification';
5973
5974                } else {
5975                    var form_action_type = $(this).attr("form_action_type");
5976                }
5977                if (!$(this).attr("form_action_div")) {
5978                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
5979                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
5980
5981                } else {
5982                    var form_action_div = $(this).attr("form_action_div");
5983                }
5984                if (!$(this).attr("return_data_type")) {
5985                    var return_data_type = 'json';
5986
5987                } else {
5988                    var return_data_type = $(this).attr("return_data_type");
5989                }
5990                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
5991                if (!submitInFlight) {
5992                    if ($("#member_login_190-notification").html() != "") {
5993                        $("#member_login_190-notification").remove();
5994                    }
5995                    if ($(this).find('input[type="submit"]').length > 0) {
5996                        $(this).find('input[type="submit"]').before('<div id="member_login_190-notification" class="alert"></div>');
5997
5998                    } else {
5999                        $(this).prepend('<div id="member_login_190-notification" class="alert"></div>');
6000                    }
6001                }
6002                var notification = $("#member_login_190-notification");
6003
6004                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
6005                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6006                    setTimeout(function(){
6007                        fv.defaultSubmit();
6008                    }, 100);
6009                } else {
6010                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6011                    if(!submitInFlight) {
6012                        counterSubmit++;
6013                        $form.data('bdLastSubmitAt', Date.now());
6014
6015                        var fields      = $(this).serializeArray();
6016                        var formField   = [];
6017                        var processData = true;
6018                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
6019                        
6020                        
6021
6022                        if($("#member_login_190 input[type=file]").length > 0){
6023                            
6024                            var formObject  = new FormData();
6025                            processData     = false;
6026                            contentType     = false;
6027
6028                            $(fields).each(function(index,field){
6029                                formField.push(field.name+"="+field.value);
6030                            });
6031
6032                            values  = formField.join("&");
6033
6034                            $(formField).each(function(index,fieldValue){
6035                                var fieldInfo = fieldValue.split('=');
6036                                formObject.append(fieldInfo[0],fieldInfo[1]);
6037                            });
6038
6039                            $("#member_login_190 input[type=file]").each(function(index,node){
6040                                var file = this.files[0];
6041                                if(typeof file != "undefined"){
6042                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
6043                                }
6044                            });
6045                        }else{
6046                            
6047                            $(fields).each(function(index,field){
6048                                formField.push(field.name+"="+encodeURIComponent(field.value));
6049                            });
6050
6051                            var formObject  = formField.join("&");
6052                        } 
6053                        
6054                        $.ajax({
6055                            url: action,
6056                            type: method,
6057                            data: formObject,
6058                            dataType: return_data_type,
6059                            processData: processData,
6060                            contentType: contentType,
6061                            success: function (data) {
6062                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
6063                                notification = $("#member_login_190-notification");
6064                                if (return_data_type == "html") {
6065                                    var result = 'success';
6066
6067                                    if (!data != "") {
6068                                        var result_widget = data['result_widget'];
6069                                    }
6070
6071                                } else {
6072
6073
6074                                    if (!data['result']) {
6075                                        var result = 'error';
6076                                    } else {
6077                                        var result = data['result'];
6078                                    }
6079                                    if (!data['result_widget']) {
6080                                        var result_widget = '';
6081
6082                                    } else {
6083                                        var result_widget = data['result_widget'];
6084                                    }
6085                                }
6086                                if (result == "success") {
6087
6088                                    if (!data['message']) {
6089                                        var message = `Your information has submitted successfully!`;
6090
6091                                    } else {
6092                                        var message = data['message'];
6093                                    }
6094                                    if (!data['redirect_url']) {
6095                                        var redirect_url = '';
6096
6097                                    } else {
6098                                        var redirect_url = data['redirect_url'];
6099                                    }
6100
6101
6102
6103                                    if (form_action_type == "notification") {
6104                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
6105                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6106                                                redirect_url = "/" + redirect_url;
6107                                            }
6108                                            if (notification.parents('.modal').length) {
6109                                                $('.modal-backdrop').hide();
6110                                                $('.modal').modal('hide');
6111                                            }
6112                                            window.location.href = redirect_url;
6113                                            fv.resetForm(true);
6114                                        } else {
6115                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
6116                                            .addClass('alert-dismissible')
6117                                            .addClass("alert-success-subtle")
6118                                            .removeClass("alert-danger-subtle")
6119                                            .removeClass("alert-warning-subtle")
6120                                        
6121                                            
6122
6123                                        if(notification.parents('.modal').length && 'member_login_190' == 'whmcs_billing_address'){
6124                                            setTimeout(function(){
6125                                                notification.parents('.modal').modal('hide');
6126                                            }, 1000);
6127                                        }
6128                                        }
6129
6130                                    } else if (form_action_type == "widget") {
6131
6132                                        if (result_widget != '') {
6133
6134                                            setTimeout(function(){
6135                                                if(form_action_div != '.newsletter_modal_form_container'){
6136                                                    $("html, body").animate({ scrollTop: 0 }, 600);
6137                                                }                                                
6138                                                $(form_action_div).html(decodeHtml(result_widget)).text();
6139
6140                                            }, 1000);
6141                                        }
6142
6143                                    } else if (form_action_type == "redirect") {
6144
6145                                        if (redirect_url == "") {
6146                                            redirect_url = decodeURIComponent("");
6147                                        }
6148
6149                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6150                                            redirect_url = "/" + redirect_url;
6151                                        }
6152                                        current_location = "/search_results";
6153                                        refresh_pages_string = "/login";
6154                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
6155                                        refresh_pages_array = refresh_pages_string.split(',');
6156                                        notification.html(message)
6157                                            .addClass("alert-success-subtle")
6158                                            .removeClass("alert-danger-subtle")
6159                                            .removeClass("alert-warning-subtle")
6160                                            .delay(2000).slideUp();
6161                                            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" )){
6162                                                                                                    window.location.href = window.location.href+'?logged';
6163                                                                                            } else {
6164                                                window.location.href = redirect_url;
6165                                            }
6166
6167                                        fv.resetForm(true);
6168                                    }
6169                                    if(form_action_div != '.newsletter_modal_form_container' && 'member_login_190' != 'whmcs_billing_address'){
6170                                        $('.modal-backdrop').hide();
6171                                    }
6172                                } else {
6173                                    bdCaptchaReset(formElement.attr('id'));
6174                                    if (!data['message']) {
6175                                        var message = `You entered invali
6175d data. Please try to save again.`;
6176
6177                                    } else {
6178                                        var message = data['message'];
6179                                    }
6180                                    $("#member_login_190-notification").html(message)
6181                                        .addClass("alert-danger-subtle")
6182                                        .removeClass("alert-success-subtle")
6183                                        .removeClass("alert-warning-subtle")
6184                                        .fadeIn();
6185                                    fv.disableSubmitButtons(false);
6186                                }
6187                                counterSubmit = 0;
6188                            },
6189                            error: function (e) {
6190                                
6191                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
6192                                        bdCaptchaReset(formElement.attr('id'));
6193                                        $("#member_login_190-notification").html(`Recaptcha Error`);
6194                                } else {
6195                                    $("#member_login_190-notification").html(`A connection error occurred while saving. Please try to save again.`);
6196                                }
6197                                $("#member_login_190-notification").addClass("alert-warning-subtle")
6198                                    .removeClass("alert-success-subtle")
6199                                    .removeClass("alert-warning-subtle")
6200                                    .fadeIn();
6201                                counterSubmit = 0;
6202                            }
6203                        });/// End Ajax
6204                    }
6205                }//END else
6206            }).bind('keydown', function(event) {
6207
6208                if (event.ctrlKey || event.metaKey) {
6209
6210                    switch (String.fromCharCode(event.which).toLowerCase()) {
6211
6212                        case 's':
6213                            var nativeForm = $(this)[0];
6214                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
6215                                event.preventDefault();
6216                                return false;
6217                            }
6218                            $(this).submit();
6219                            break;
6220                    }
6221                }
6222            });
6223
6224            /// This will turn any select2 that are required in the form builder to being required elements.
6225            $('#member_login_190 select').each(function (i, obj) {
6226                setTimeout(function(){
6227                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
6228                        $(obj).css("z-index","-999");
6229                        $(obj).css("height","0");
6230                        $(obj).css("width","0");
6231                        $(obj).css("display","block");  
6232                        $(obj).css("position","absolute");  
6233                    }
6234                }, 3000);
6235            });
6236
6237            // Clear required-error messages when user fills in a required field
6238            $('#member_login_190').on('keyup change', '[required]', function() {
6239                var val = $(this).val();
6240                if (val !== '' && val !== null && val.trim() !== '') {
6241                    var $group = $(this).closest('.form-group');
6242                    // Remove only this handler's own required message
6243                    $(this).siblings('.required-error').remove();
6244                    // Keep has-error if another FormValidation validator is still failing
6245                    // (e.g. stringLength, regexp). has-error is shared, so removing it
6246                    // wholesale would clobber other validators' red styling.
6247                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6248                        $group.removeClass('has-error');
6249                    }
6250                }
6251            });
6252
6253        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
6254    </script>
6254
6255            
6255<script>
6256        /* Switch fires at DOM-ready with libs pre-warmed — never serialize it behind
6257           window.load/timers (list-view flash); masonry re-lays out once images finish. */
6258        var bdGridImagesWarm = loadImagesloadedJs();
6259        if (typeof loadMasonryJs === "function") { loadMasonryJs(); }
6260
6261        $(document).ready(function () {
6262            if ($(window).width() > 960) {
6263                                $(".feature-search .js-click").trigger("click");
6264                                bdGridImagesWarm.then(function () {
6265                    if (typeof $.fn.imagesLoaded !== "function") { return; }
6266                    $('.grid-container').imagesLoaded(function () {
6267                        if (typeof masonry_opened !== "undefined" && masonry_opened == 1) {
6268                            $('.grid-container').masonry('layout');
6269                        }
6270                    });
6271                });
6272            }
6273            $('.grid-container').addClass('visible');
6274        });
6275
6276        async function loadImagesloadedJs() {
6277            return new Promise((resolve, reject) => {
6278                if (window["imagesLoadedJs"]) {
6279                    resolve("already loaded imagesloaded.pkgd.min.js");
6280                }
6281                let srcJs = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/imagesloaded.pkgd.min.js";
6282                let head = document.getElementsByTagName("head")[0];
6283                let script = document.createElement('script');
6284                script.type = 'text/javascript';
6285                script.src = srcJs;
6286                script.async = true;
6287                script.onload = function () {
6288                    window["imagesLoadedJs"] = true;
6289                    resolve("ok");
6290                };
6291                script.onerror = function () {
6292                    $('.grid-container').addClass('visible');
6293                    resolve("error loading imagesloaded - showing grid as fallback");
6294                };
6295                head.appendChild(script);
6296            });
6297        }
6298    </script>
6298
6299    
6299<script>
6300        window.addEventListener('load', (event) => {
6301            setTimeout(() => {
6302                    }, 501);
6303        });
6304    </script>
vendor: 2 bytes, line 6304
6304
6305<script>
6306	function decision(message, url) {
6307		if (confirm(message)) {
6308			setTimeout(function () {
6309				window.location = url;
6310			}, 0);
6311		}
6312	}
6313</script>
vendor: 2 bytes, line 6313
6313
6314<script>
6315	// Function to add alt, width, and height attributes to <img> elements without them
6316	function addAttributesToImages() {
6317		var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])');
6318		Array.prototype.forEach.call(images, function(img) {
6319			// Skip if we've already processed this image
6320			if (img.dataset.processed === 'true') {
6321				return;
6322			}
6323			
6324			// Mark this image as being processed
6325			img.dataset.processed = 'true';
6326			
6327			// Add alt attribute if missing
6328			if (!img.hasAttribute('alt')) {
6329				var src = img.getAttribute('src') || 'image';  // Default src to 'image' if missing
6330				var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, '');
6331
6332				try {
6333					altText = decodeURIComponent(altText)
6334					.replace(/[_\-+,.:;]+/g, ' ')
6335					.replace(/\s+/g, ' ')
6336					.trim();
6337				} catch (e) {
6338					altText = 'image';  // Fallback to 'image' if decoding fails
6339				}
6340
6341				// Ensure altText is not empty, otherwise use 'image'
6342				altText = altText || 'image';
6343
6344				img.setAttribute('alt', altText);
6345			}
6346
6347			// Add width and height attributes if missing
6348			if (!img.hasAttribute('width') || !img.hasAttribute('height')) {
6349				// Handle SVG differently
6350				if (img.src && img.src.endsWith('.svg')) {
6351					// For SVG, use the viewBox to set width and height, if available
6352					fetch(img.src)
6353					.then(response => {
6354						if (!response.ok) {
6355							throw new Error('Failed to fetch SVG: ' + response.status);
6356						}
6357						return response.text();
6358					})
6359					.then(svgText => {
6360						var parser = new DOMParser();
6361						var svgDoc = parser.parseFromString(svgText, "image/svg+xml");
6362						var svgElement = svgDoc.querySelector('svg');
6363						
6364						if (svgElement) {
6365							var viewBox = svgElement.getAttribute('viewBox');
6366							if (viewBox) {
6367								var viewBoxValues = viewBox.split(' ');
6368								var width = viewBoxValues[2];
6369								var height = viewBoxValues[3];
6370
6371								if (!img.hasAttribute('width')) {
6372									img.setAttribute('width', width);
6373								}
6374								if (!img.hasAttribute('height')) {
6375									img.setAttribute('height', height);
6376								}
6377							}
6378						}
6379					})
6380					.catch(error => {
6381						// Fallback to default dimensions for SVG
6382						if (!img.hasAttribute('width')) {
6383							img.setAttribute('width', '100');
6384						}
6385						if (!img.hasAttribute('height')) {
6386							img.setAttribute('height', '100');
6387						}
6388					});
6389				} else {
6390					// For non-SVG images, use natural dimensions
6391					var tempImg = new Image();
6392					tempImg.src = img.src;
6393					
6394					tempImg.onload = function() {
6395						if (!img.hasAttribute('width')) {
6396							img.setAttribute('width', tempImg.naturalWidth);
6397						}
6398						if (!img.hasAttribute('height')) {
6399							img.setAttribute('height', tempImg.naturalHeight);
6400						}
6401					};
6402					
6403					tempImg.onerror = function() {
6404						// Fallback to default dimensions
6405						if (!img.hasAttribute('width')) {
6406							img.setAttribute('width', '100');
6407						}
6408						if (!img.hasAttribute('height')) {
6409							img.setAttribute('height', '100');
6410						}
6411					};
6412				}
6413			}
6414		});
6415	}
6416
6417	document.addEventListener('DOMContentLoaded', function() {
6418		// Run the function initially to catch images already in the DOM
6419		addAttributesToImages();
6420
6421		// Create a MutationObserver to monitor the DOM for added/changed images
6422		var observer = new MutationObserver(function(mutations) {
6423			mutations.forEach(function(mutation) {
6424				if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') {
6425					// Only process if we have new images or src attribute changes
6426					var hasNewImages = false;
6427					
6428					if (mutation.addedNodes.length > 0) {
6429						mutation.addedNodes.forEach(function(node) {
6430							if (node.nodeType === 1) { // Element node
6431								if (node.tagName === 'IMG' || node.querySelectorAll) {
6432									hasNewImages = true;
6433								}
6434							}
6435						});
6436					}
6437					
6438					if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
6439						hasNewImages = true;
6440					}
6441					
6442					if (hasNewImages) {
6443						addAttributesToImages();
6444					}
6445				}
6446			});
6447		});
6448
6449		// Start observing the document body for changes
6450		observer.observe(document.body, {
6451			childList: true, // Watch for added or removed nodes
6452			subtree: true, // Watch the entire subtree
6453			attributes: true, // Watch for attribute changes
6454			attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute
6455		});
6456	});
6457</script>
6457<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] {
6458    cursor: wait
6459}
6460select.select2-preload {
6461    line-height: initial;
6462}
6463
6464select#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"] {
6465    -webkit-appearance: none;
6466    -moz-appearance: none;
6467    appearance: none;
6468    background-image: url(/images/select2ArrowDown.png) !important;
6469    background-repeat: no-repeat !important;
6470    background-size: 10px 9px !important;
6471    background-position: 99% 16px;
6472    border-radius: 6px;
6473    overflow: hidden;
6474}
6475.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"] {
6476    background-position: 98.2% 12px;
6477} </style>    <!-- DROPDOWN SELECT SCRIPT -->
6478    <!-- Select2 CSS Included in website-styles.pkgd.min.css -->
6479    <!--[if lt IE 9]>
6480    
6480<script defer src="https://www.optimizecdn.com/directory/cdn/assets/html5shiv/3.7.2/html5shiv.min.js"></script>
6480
6481    
6481<script defer src="https://www.optimizecdn.com/directory/cdn/bootstrap/select2/master/js/respond.min.js"></script>
6481
6482    <![endif]-->
6483    
6483<script>
6484
6485        var preloaded_ttid  = false;
6486        var preloaded_tid   = false;
6487        var preloaded_sid   = false;
6488        var path2            = window.location.pathname.replace(/\//g, "_");
6489
6490        if (performance.navigation.type !== 2) {
6491            if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
6492                sessionStorage.removeItem('select2-ttid'+path2);
6493            }
6494
6495            if (sessionStorage.getItem('select2-tid'+path2) !== null) {
6496                sessionStorage.removeItem('select2-tid'+path2);
6497            }
6498
6499            if (sessionStorage.getItem('select2-sid'+path2) !== null) {
6500                sessionStorage.removeItem('select2-sid'+path2);
6501            }
6502
6503        }else if(performance.navigation.type === 2){
6504            if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
6505                preloaded_ttid = sessionStorage.getItem('select2-ttid'+path2);
6506            }
6507
6508            if (sessionStorage.getItem('select2-tid'+path2) !== null) {
6509                preloaded_tid = sessionStorage.getItem('select2-tid'+path2);
6510            }
6511
6512            if (sessionStorage.getItem('select2-sid'+path2) !== null) {
6513                preloaded_sid = sessionStorage.getItem('select2-sid'+path2);
6514            }
6515        }
6516
6517        window.addEventListener('load', () => {
6518            let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]');
6519            if (typeof select2Inputs != "undefined") {
6520                for (let i = 0; i < select2Inputs.length; i++) {
6521                    let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
6522                    if (!select2Inputs[i].getAttribute('placeholder')) {
6523                        inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
6524                    }
6525                    let countryCode = select2Inputs[i].getAttribute('data-country-code');
6526                    if (select2Inputs[i].getAttribute('data-country-code') != null && countryCode > 0 && typeof isoCountries != 'undefined') {
6527                        for (let c = 0; c < isoCountries.length; c++) {
6528                            if(isoCountries[c].id == countryCode){
6529                                //   select2Inputs[i].querySelector('option:first-child').text = isoCountries[c].text;
6530                                select2Inputs[i].text = isoCountries[c].text;
6531                            }
6532                        }
6533
6534                    }
6535                    if(select2Inputs[i].hasAttribute('data-country-code')){
6536                        inputPlaceHolder = null; //reset the input
6537                    }
6538                    if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
6539                        select2Inputs[i].querySelector('option:first-child').text = inputPlaceHolder;
6540                        select2Inputs[i].style.color = "#a8a8a8";
6541                        if(!select2Inputs[i].querySelector('option:first-child').hasAttribute('value')){
6542                            select2Inputs[i].querySelector('option:first-child').value='';
6543                        }
6544                    }
6545                    select2Inputs[i].classList.add("select2-preload");
6546                    select2Inputs[i].addEventListener('mousedown', select2OnFormClick, false);
6547                }
6548            }
6549        });
6550
6551        function select2OnFormClick(event = false) {
6552            let elemtClicked = '';
6553            if (event !== false) {
6554                event.preventDefault();
6555                event.stopImmediatePropagation();
6556                elemtClicked = event.target;
6557                elemtClicked.disabled = true;
6558            }
6559
6560            let loadScriptAsync = function (uri) {
6561                return new Promise((resolve, reject) => {
6562                    let script = document.createElement('script');
6563                    script.type = 'text/javascript';
6564                    script.src = uri;
6565                    script.async = true;
6566                    script.onload = function () {
6567                        if (event !== false) {
6568                            elemtClicked.disabled = false;
6569                            select2Initialize();
6570                            $(elemtClicked).select2('open');
6571                            $(elemtClicked).on("select2-close", function () {
6572                                setTimeout(function() {
6573                                    $('.select2-container-active').removeClass('select2-container-active');
6574                                    $(':focus').blur();
6575                                }, 1);
6576                            });
6577                            if (elemtClicked.hasAttribute('data-fv-field')) {
6578                                if (window.getComputedStyle(elemtClicked).display === "none") {
6579                                    // if element is display none, the formvalition can not read
6580                                    elemtClicked.style.cssText = "display: block;position: absolute;visibility: hidden !important;height: 0;width: 0;opacity: 0 !important;"
6581                                }
6582                            }
6583                        } else {
6584                            select2Initialize();
6585                        }
6586                        resolve("ok");
6587                    };
6588                    let head = document.getElementsByTagName('head')[0];
6589                    head.appendChild(script);
6590                });
6591            }
6592
6593            let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]');
6594
6595            if (typeof select2Inputs != "undefined") {
6596                for (let i = 0; i < select2Inputs.length; i++) {
6597                    let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
6598                    if (!select2Inputs[i].getAttribute('placeholder')) {
6599                        inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
6600                    }
6601                    if(select2Inputs[i].hasAttribute('data-country-code')){
6602                        inputPlaceHolder = null; //reset the input
6603                    }
6604                    if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
6605                        select2Inputs[i].querySelector('option:first-child').text = '';
6606                    }
6607                    select2Inputs[i].removeEventListener('mousedown', select2OnFormClick, false);
6608                }
6609            }
6610            let scriptLoaded = loadScriptAsync('https://www.optimizecdn.com/directory/cdn/bootstrap/select2/3.5.2/select2.min.js?v=3.5.5');
6611            return scriptLoaded;
6612        }
6613
6614        function select2Initialize(){
6615            function getSecondLevel(div,id) {
6616                $("#" + div).select2("data", {
6617                    id: "",
6618                    text: `Loading...`
6619                });
6620                $.ajax({
6621                    url : '/ajaxsearch/get-services',
6622                    type : "GET",
6623                    data : {
6624                        'specialty_id' : id
6625                    },
6626                    dataType: "json",
6627                    success : function(data) {
6628                        var options = '';
6629
6630                        for (var i = 0; i < data.length; i++) {
6631                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
6632                        }
6633                        if (div == "tid"){
6634                            $("#ttid").select2("data", {
6635                                id: "",
6636                                text: "No options available"
6637                            });
6638
6639
6640                            $("#ttid").select2("enable", false);
6641
6642                            $("#" + div).change(function () {
6643                                sessionStorage.setItem("select2-tid"+path2,$(this).val());
6644                            });
6645                        }
6646                        if (data.length > 1) {
6647                            $("#" + div).select2("enable",true);
6648                            $("#" + div).html(options);
6649                            $("#" + div).select2("val", "");
6650                            
6651                        } else {
6652                            $("#"+div).select2("data", {
6653                                id: "",
6654                                text: "No options available"
6655                            });
6656                            $("#"+div).select2("val", "");
6657                        }
6658
6659                        if(div == 'tid' && preloaded_tid !== false){
6660                            $("#" + div).select2("val", preloaded_tid);
6661                            $("#" + div).trigger('change');
6662                        }
6663                    }
6664                });
6665            }
6666            function getSecondLevelAccount(div,id) {
6667                $("#" + div).select2("data", {
6668                    id: "",
6669                    text: `Loading...`
6670                });
6671                $.ajax({
6672                    url : '/ajaxsearch/get-services',
6673                    type : "GET",
6674                    data : {
6675                        'specialty_id' : id
6676                    },
6677                    dataType: "json",
6678                    success : function(data) {
6679                        var options = '';
6680
6681                        for (var i = 0; i < data.length; i++) {
6682                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
6683                        }
6684                        if (data.length > 1) {
6685                            $("#" + div).select2("close");
6686                            $("#" + div).select2("val", "");
6687                            $("#" + div).select2("enable",true);
6688                            $("#" + div).html(options);
6689
6690                            
6691                        } else {
6692                            $("#"+div).select2("data", {
6693                                id: "",
6694                                text: "No options available"
6695                            });
6696                            $("#"+div).select2("val", "");
6697                        }
6698                    }
6699                });
6700            }
6701            function getThirdLevel(div,id,id2) {
6702                $("#"+div).select2("data", {
6703                    id: "",
6704                    text: `Loading...`
6705                });
6706
6707                $.ajax({
6708                    url : '/ajaxsearch/get-locations',
6709                    type : "GET",
6710                    data : {
6711                        'specialty_id' : id,
6712                        'treatment_id' : id2,
6713                    },
6714                    dataType: "json",
6715                    success : function(data) {
6716                        var options = '';
6717
6718                        for (var i = 0; i < data.length; i++) {
6719                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
6720                        }
6721                        if (data.length > 1) {
6722                            $("#" + div).select2("enable",true);
6723                            $("#" + div).html(options);
6724                            $("#" + div).select2("val", "");
6725                            
6726                        } else {
6727                            $("#"+div).select2("data", {
6728                                id: "",
6729                                text: "No options available"
6730                            });
6731                            $("#"+div).select2("val", "");
6732                        }
6733                    }
6734                });
6735            }
6736            var current_country = '';
6737            function getStateList(div,id) {
6738                if (id != current_country) {
6739                    current_country = id; /* BUGFIX p949P6dS: record the country being fetched so the select2-open re-fetch handler short-circuits at this guard instead of looping forever. current_country was declared (line 274) but never assigned, so this guard was always true: success -> select2("open") re-fired the open handler -> getStateList(id) -> re-fetch -> "Loading..." re-pinned -> infinite loop (Singapore = 2 regions). */
6740
6741                    $("#"+div).select2("data", {
6742                        id: "",
6743                        text: `Loading...`
6744                    });
6745                    $.ajax({
6746                        url : '/ajaxsearch/get-states',
6747                        type : "GET",
6748                        data : {
6749                            'country' : id
6750                        },
6751                        dataType: "json",
6752                        success : function(data) {
6753                            $("#" + div).html(''); // clear options
6754
6755                            /* p949P6dS: data[0] is always the server-side "(Select from List)" placeholder,
6756                               so <=2 entries means the country has at most 1 real region (Singapore,
6757                               Martinique, zero-region). Client wants those to read "No State/Province
6758                               Available" instead of "(Select from List)"; the single real region stays
6759                               selectable. Reset/enable now runs on EVERY response (was gated behind
6760                               data.length > 1, which left zero-region countries stuck on "Loading..."
6761                               and disabled); auto-open stays multi-region only. */
6762                            var hasStates = (data.length > 2);
6763                            for (var i = 0; i < data.length; i++) {
6764                                var optionTitle = (!hasStates && data[i].value === "") ? `No State/Province Available for This Country` : data[i].title;
6765                                var newOption = new Option(optionTitle, data[i].value, false, false);
6766                                $("#" + div).append(newOption).trigger('change');
6767
6768                            }
6769                            if (data.length === 0) {
6770                                $("#" + div).append(new Option(`No State/Province Available for This Country`, "", false, false)).trigger('change');
6771                            }
6772
6773                            $("#" + div).select2("enable",true);
6774                            $("#" + div).prop("disabled", false);
6775                            $("#" + div).select2("val", "");
6776                            if (hasStates) {
6777                                                                $("#" + div).select2("open");
6778                                                            }
6779                        }
6780                    });
6781                } else {
6782                    /* p949P6dS AC#3: the select2-open handler runs select2("enable",false) BEFORE
6783                       re-calling getStateList, and for a country with <=2 options (Singapore,
6784                       Martinique) that re-call short-circuits here on the id == current_country
6785                       guard. This branch previously only reset the value, so the field was left
6786                       permanently disabled: select2-container-disabled, clicks never open it, the
6787                       single real region is unselectable. Mirror the success path's re-enable so a
6788                       short-circuited re-open leaves the field usable. Multi-region countries never
6789                       hit this (their open handler is gated behind count <= 2). */
6790                    $("#" + div).select2("enable", true);
6791                    $("#" + div).prop("disabled", false);
6792                    $("#" + div).select2("val", "");
6793                }
6794            }
6795            /* p949P6dS: keep the checkout/billing required-State validation in sync with the
6796               server-side waiver, on BOTH layers. When the selected country has selectable
6797               sub-regions (Canada, US, ...) FormValidation validates state_code (inline "Required
6798               Field" on submit); when it has none (Singapore, Martinique, zero-region) the state_code
6799               validator is disabled + un-flagged so those countries are not blocked. Delegated so it
6800               binds even though the billing form is revealed after step 1; guarded to no-op on any
6801               page/form without FormValidation + a state_code field. The server still enforces the
6802               same rule (bd-core-files form_controller), so this is UX only, not the security gate. */
6803            function bdSyncStateRequired(hasStates) {
6804                var $stField = $("#state-chained");
6805                var $stForm = $stField.closest("form");
6806                var stFv = ($stForm.length) ? ($stForm.data("formValidation") || $stForm.data("bootstrapValidator")) : null;
6807                if (!stFv || !stFv.options || !stFv.options.fields || !stFv.options.fields.state_code) {
6808                    return;
6809                }
6810                stFv.options.fields.state_code.excluded = hasStates ? false : true;
6811                try { stFv.enableFieldValidators("state_code", hasStates); } catch (e) {}
6812
6813                /* p949P6dS: keep the visible "* " required marker on the State label in sync with the
6814                   waiver. functions_up.php renders <span class="required">* </span> on the state_code
6815                   label when AVS forces the field required; for a no-state country (Singapore,
6816                   Martinique) the field is genuinely waived so the asterisk must go away, and come
6817                   back when the country has selectable states again. Scoped to the state label. */
6818                var $stReq = $("label[for='state-chained'] .required", $stForm);
6819                $stReq.css("display", hasStates ? "" : "none");
6820
6821                /* p949P6dS: the ACTUAL blocker. The billing form carries a SECOND required layer,
6822                   independent of FormValidation: the form's success.form.fv handler loops
6823                   $form.find('[required]') and, for any empty one, appends <small class="required-error">
6824                   Required Field</small> + returns false, hard-blocking the submit. AVS renders the
6825                   state_code <select> with the HTML5 `required` attribute, so a no-state country
6826                   (empty state) stayed blocked with "Required Field" even after the FormValidation
6827                   waiver above. Drop the `required` attribute (+ clear its custom error) when the
6828                   country has no selectable states, and restore it when it does. Remember the server-
6829                   rendered original so we never ADD required to a field AVS left optional. */
6830                if ($stField.attr("data-bd-orig-required") === undefined) {
6831                    $stField.attr("data-bd-orig-required",
6832                        ($stField.prop("required") || $stField.attr("required") !== undefined) ? "1" : "0");
6833                }
6834                var stOrigRequired = ($stField.attr("data-bd-orig-required") === "1");
6835
6836                var $stRow = $stField.closest(".form-group,.fv-row,.row");
6837                if (!hasStates) {
6838                    try { if (typeof stFv.resetField === "function") { stFv.resetField("state_code", true); } } catch (e) {}
6839                    $stRow.removeClass("has-error has-success");
6840                    $stRow.find(".help-block[data-fv-validator]").css("display", "none");
6841                    /* drop the HTML5 required gate + its "Required Field" message for no-state country */
6842                    $stField.removeAttr("required").prop("required", false);
6843                    $stField.siblings(".required-error").remove();
6844                    $stRow.find(".required-error").remove();
6845
6846                    /* p949P6dS: on the Member-Dashboard billing modal the Save button is disabled by
6847                       FormValidation until the whole form is valid; for a no-state country the user
6848                       has no state to pick, so nothing re-enables it and Save stays stuck disabled ->
6849                       "cannot save". Re-enable it directly. IMPORTANT: do NOT call stFv.validate()
6850                       here — in this FormValidation build validate() on an already-valid form fires
6851                       success.form.fv (a real submit), which saved the address on the country change
6852                       AND consumed the one-time CSRF token, so the actual Save click then failed with
6853                       "You entered invalid data. Please try to save again." disableSubmitButtons only
6854                       toggles the button; no submit. Scoped to the billing modal so checkout is
6855                       untouched. */
6856                    if ($stForm.closest("#billing_address_modal").length) {
6857                        try { if (typeof stFv.disableSubmitButtons === "function") { stFv.disableSubmitButtons(false); } } catch (e) {}
6858                        $stForm.find("input.submitter, button.submitter, [type=submit]")
6859                               .removeClass("disabled").prop("disabled", false).removeAttr("disabled");
6860                    }
6861                } else if (stOrigRequired) {
6862                    /* country has states again — restore the required gate AVS originally set */
6863                    $stField.attr("required", "required").prop("required", true);
6864                }
6865            }
6866            $(document).off("change.bdStateReq").on("change.bdStateReq", "#country-chained", function() {
6867                var bdCc = $(this).val();
6868                var $bdForm = $("#state-chained").closest("form");
6869                var bdFv = ($bdForm.length) ? ($bdForm.data("formValidation") || $bdForm.data("bootstrapValidator")) : null;
6870                if (!bdFv || !bdFv.options || !bdFv.options.fields || !bdFv.options.fields.state_code || bdCc === "") {
6871                    return;
6872                }
6873                $.ajax({
6874                    url: "/ajaxsearch/get-states",
6875                    type: "GET",
6876                    data: { "country": bdCc },
6877                    dataType: "text",
6878                    success: function(bdResp) {
6879                        /* count entries without regex (DB+eval mangles backslashes): split on the
6880                           literal "value" key; total entries = splits - 1; >2 means placeholder + 2+
6881                           real regions == has selectable states. Text parse also survives the
6882                           malformed-JSON zero-region response. */
6883                        var bdTotal = bdResp.split(`"value"`).length - 1;
6884                        bdSyncStateRequired(bdTotal > 2);
6885                    }
6886                });
6887            });
6888            /* p949P6dS: the Member Dashboard billing modal (widget 1861) pre-selects the member's
6889               SAVED country_code at document.ready without firing a change event, so the handler
6890               above never ran for it and an AVS-forced required State (functions_up.php forces
6891               field_required=1 on state_code when whmcs_avs_on / stripe_accept_intl_payments is on)
6892               stayed active for a saved no-state country — blocking the save with "Required Field"
6893               on a country that has no state to pick. Sync once for an already-selected country.
6894               The namespaced trigger fires only this handler (not select2/getStateList), and the
6895               handler no-ops when the country is empty or state_code is not a validated field, so
6896               checkout and every other chained-select page are unaffected. */
6897            $("#country-chained").each(function() {
6898                if ($(this).val() !== "") {
6899                    $(this).trigger("change.bdStateReq");
6900                }
6901            });
6902            function getInfinityChained(div,id) {
6903                $("#"+div).select2("data", {
6904                    id: "",
6905                    text: `Loading...`
6906                });
6907                $.ajax({
6908                    url : '/ajaxsearch/get-subcategory',
6909                    type : "GET",
6910                    data : {
6911                        'parent' : id
6912                    },
6913                    dataType: "json",
6914                    success : function(data) {
6915                        var options = '';
6916
6917                        for (var i = 0; i < data.length; i++) {
6918                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
6919                        }
6920                        if (data.length > 1) {
6921                            $("#" + div).select2("enable",true);
6922                            $("#" + div).html(options);
6923                            if(div == 'tid' && '' != ''){
6924                                $("#" + div).select2("val", "");
6925                                $("#" + div).trigger('change');
6926                            } else if(div == 'tid' && preloaded_tid !== false){
6927                                $("#" + div).select2("val", preloaded_tid);
6928                                $("#" + div).trigger('change');
6929                            }else {
6930                                $("#" + div).select2("val", "");
6931                            }
6932
6933
6934
6935                            
6936                        } else {
6937                            $("#" + div).select2("data", {
6938                                id: "",
6939                                text: "No options available"
6940                            });
6941                        }
6942                    }
6943                });
6944            }
6945            function categoryChained(div,id) {
6946                $("#" + div).select2("data", {
6947                    id: "",
6948                    text: `Loading...`
6949                });
6950                if(div == "tid") {
6951                    url_link = '/ajaxsearch/get-services'
6952                    data_passed = {'specialty_id' : id}
6953                } else {
6954                    url_link = '/ajaxsearch/category-list';
6955                    data_passed = {'parent' : id} ;
6956                }
6957
6958                var selectName = $("select[next="+div+"]").prop("name");
6959
6960
6961                if( (selectName == "ttid" || selectName == "sid" || selectName == "tid") ){
6962
6963                    sessionStorage.setItem("select2-"+selectName+path2,id);
6964                }
6965
6966                $.ajax({
6967                    url : url_link,
6968                    type : "GET",
6969                    data : data_passed,
6970                    dataType: "json",
6971                    success : function(data) {
6972                        var options = '';
6973
6974                        for (var i = 0; i < data.length; i++) {
6975                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
6976                        }
6977
6978                        if (data.length > 1) {
6979                            $("#" + div).select2("enable",true);
6980                            $("#" + div).html(options);
6981
6982                            if(div == "ttid" && preloaded_ttid !== false){
6983                                $("#" + div).select2("val", preloaded_ttid);
6984                                $("#" + div).trigger('change');
6985                            }else if(div == "tid" && preloaded_tid !== false){
6986                                $("#" + div).select2("val", preloaded_tid);
6987                                $("#" + div).trigger('change');
6988                            }else{
6989                                $("#" + div).select2("val", "");
6990                            }
6991
6992
6993                            
6994                        } else {
6995                            $("#" + div).select2("data", {
6996                                id: "",
6997                                text: "No options available"
6998                            });
6999                        }
7000                    }
7001                });
7002            }
7003            function formatCountry(country) {
7004                if (!country.id && country.text.includes("+")) {
7005                    let dataCountry = country.text;
7006                    dataCountry = dataCountry.split('+')
7007                    country.code = dataCountry[0].trim();
7008                    country.id = dataCountry[1].trim();
7009                    return country;
7010                } else if (!country.code) {
7011                    return country.text;
7012                }
7013                var $country = $(
7014                    '<span class="flag-icon flag-icon-' + country.code.toLowerCase() + ' flag-icon-squared"></span>' +
7015                    '<span class="flag-text" style="margin-left:10px;">' + country.text + '</span>'
7016                );
7017                return $country;
7018            }
7019
7020            let phoneCountryCode = document.querySelector("[name^='bd_phone_country_code']");
7021            if (typeof phoneCountryCode != 'undefined' && phoneCountryCode != null && typeof isoCountries != 'undefined') {
7022                $("[name^='bd_phone_country_code']").select2({
7023                    placeholder:`Country`,
7024                    data:isoCountries,
7025                    searchInputPlaceholder: `Enter Country Code`,
7026                    formatResult : formatCountry,
7027                    dropdownAutoWidth: true,
7028                    width: "resolve",
7029                }).on("select2-opening", function (e) {
7030                    if (typeof e.currentTarget.attributes['data-default-country-code'] !== "undefined") {
7031                        $(this).val(e.currentTarget.attributes['data-default-country-code'].value)
7032                            .removeAttr("data-default-country-code")
7033                            .trigger('change')
7034                            .trigger('open');
7035                    }
7036                }).change(function (e) {
7037                    let select2Span = $(this).attr('id');
7038                    if (e.val) {
7039                        $('#'+$(this).attr('id')+'--flag').remove();
7040                        $('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + e.added.code.toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>')
7041                    }else{
7042                        $('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + $(this).attr('data-default-country-flag').toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>')
7043                    }
7044                    $(this).removeAttr("data-default-country-flag");
7045
7046                });
7047            }
7048            $("#bd-chained").select2({
7049                title: "Select Category",
7050                placeholder: "Select Category",
7051                allowClear: true,
7052                formatNoMatches: function () {
7053                    return "No matches found";
7054                }
7055            }).change(function () {
7056                var id = $(this).val();
7057                $("#tid").select2("enable",false);
7058                getInfinityChained("tid",id);
7059                            });
7060            $("#category-chained").select2({
7061                title: "Select Category",
7062                placeholder: "Select Category",
7063                allowClear: true
7064            }).change(function () {
7065                var id = $(this).val();
7066                $("#subcategory-chained").select2("enable",false);
7067                categoryChained("subcategory-chained",id);
7068                            });
7069
7070            $(".select-category-chained").select2({
7071                title: "Select Category",
7072                placeholder: "Select Category",
7073                allowClear: true
7074            })
7075            $(".infinite-chained").select2({
7076                title: "Select option from list",
7077                placeholder: "Click to select an option",
7078                allowClear: true,
7079                formatNoMatches: function () {
7080                    return "No matches found";
7081                }
7082            }).change(function () {
7083                var id          = $(this).val();
7084                var attr        = $(this).attr('next');
7085                var selectName  = $(this).prop('name');
7086                if ( selectName=='ttid' || attr =='ttid' ) {
7087                    $("#" + attr).select2("enable",false);
7088                    categoryChained(attr,id);
7089                                        sessionStorage.setItem("select2-"+selectName+path2,id);
7090                }
7091            }).on("select2-close", function () {
7092                setTimeout(function() {
7093                    $('.select2-container-active').removeClass('select2-container-active');
7094                    $(':focus').blur();
7095                }, 1);
7096            });
7097            $("#subcategory-chained").select2();
7098            $(".combobox").select2();
7099            $(".search-chained").select2();
7100
7101            $("select#country-chained").select2({
7102                title: "",
7103                placeholder: "",
7104                val: "",
7105                allowClear: true,
7106                formatNoMatches: function () {
7107                    return "No matches found";
7108                }
7109            }).change(function () {
7110                var id = $(this).val();
7111                $("#state-chained").select2("enable",false);
7112                getStateList("state-chained",id);
7113                var state = "";
7114
7115                if (id == "CA") {
7116                    state = "Province";
7117
7118                } else if (id == "UK") {
7119                    state = "Region";
7120
7121                } else if (id == "US" || id == "AU") {
7122                    state = "State";
7123
7124                } else {
7125                    state = "Region";
7126                }
7127                $("#state-chained").prev(".control-label").text(state);
7128            });
7129            $("#state-chained").select2();
7130
7131            $("#state-chained").on("select2-open", function(event) {
7132                event.preventDefault();
7133                var id = $("#country-chained").val();
7134                var count = $('#state-chained option').length;
7135
7136                if (id != "" && count <= 2) {
7137                    $("#state-chained").select2("enable",false);
7138                    getStateList("state-chained",id);
7139                    var state = "";
7140
7141                    if (id == "CA") {
7142                        state = "Province";
7143
7144                    } else if (id == "UK") {
7145                        state = "Region";
7146
7147                    } else if (id == "US" || id == "AU") {
7148                        state = "State";
7149
7150                    } else {
7151                        state = "Region";
7152                    }
7153                    $("#state-chained").prev(".control-label").text(state);
7154                }
7155            });
7156
7157            $("#country-chained-2").select2({
7158                title: "Select Country",
7159                placeholder: "(select country)",
7160                val: "",
7161                allowClear: true,
7162                formatNoMatches: function () {
7163                    return "No matches found";
7164                }
7165            }).change(function () {
7166                var id = $(this).val();
7167                $("#state-chained-2").select2("enable",false);
7168                getStateList("state-chained-2",id);
7169                var state = "";
7170
7171                if (id == "CA") {
7172                    state = "Province";
7173
7174                } else if (id == "UK") {
7175                    state = "Region";
7176
7177                } else if (id == "US" || id == "AU") {
7178                    state = "State";
7179
7180                } else {
7181                    state = "Region";
7182                }
7183                $("#state-chained-2").prev(".control-label").text(state);
7184            });
7185
7186            $("#state-chained-2").select2();
7187            $("#profession_id").select2({
7188                placeholder: "Select From List",
7189                allowClear: true,
7190                formatNoMatches: function () {
7191                    return "No matches found";
7192                }
7193            }).change(function () {
7194                var id = $(this).val();
7195                getSecondLevelAccount("category_id",id);
7196                            });
7197                        $("#sid").select2({
7198                title: "Select Category",
7199                placeholder: "Select Category",
7200                allowClear: true,
7201                formatNoMatches: function () {
7202                    return "No matches found";
7203                }
7204            }).change(function () {
7205                var id = $(this).val();
7206                $("#tid").select2("enable",false);
7207                getSecondLevel("tid",id);
7208                $("#tid").select2("open");
7209                sessionStorage.setItem("select2-sid"+path2,id);
7210            });
7211            $("#location_value_dropdown").select2({
7212                title: "More Options",
7213                placeholder: "More Options",
7214                allowClear: true,
7215                formatNoMatches: function () {
7216                    return "No matches found";
7217                }
7218            });
7219            $("#tid").select2({
7220                title: "Select Sub-category",
7221                placeholder: "Select Sub-category",
7222                allowClear: true,
7223                formatNoMatches: function () {
7224                    return "No matches found";
7225                }
7226                            });
7227            $("#location_value_dropdown").select2({
7228                title: "More Options",
7229                placeholder: "More Options",
7230                allowClear: true
7231            });
7232        }
7233
7234        if(preloaded_ttid !== false || preloaded_tid !== false || preloaded_sid !== false){
7235            $(document).ready(function(){
7236                // Skip if homepage widget already handles preload
7237                if(window._bdCategoryPreloaded) return;
7238
7239                if(preloaded_sid !== false && $("#sid").length > 0){
7240                    select2OnFormClick();
7241                    setTimeout(() => {
7242                        $("#sid").select2('val', preloaded_sid);
7243                        $('#sid').trigger('change');
7244                    }, 500);
7245                }else if(preloaded_tid !== false && $("#sid").length <= 0){
7246                    select2OnFormClick();
7247                    setTimeout(() => {
7248                        $("#tid").select2('val', preloaded_tid);
7249                        $('#tid').trigger('change');
7250                    }, 500);
7251                }
7252            });
7253        }
7254    </script>
vendor: 2 bytes, line 7254
7254
7255<script>
7256    // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score
7257    $(document).ready(function() {
7258        var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness
7259
7260        // Iterate over each select element that does not have an aria-label
7261        $('select:not([aria-label])').each(function() {
7262            // Use the ID or placeholder as the base for the aria-label, stripping HTML tags
7263            var baseLabel = this.id || $(this).attr('placeholder') || 'select';
7264            baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim
7265
7266            // Ensure uniqueness of each aria-label
7267            ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1;
7268            var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel];
7269
7270            // Truncate aria-label to 100 characters
7271            ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel;
7272
7273            // Set the aria-label attribute to the unique label
7274            $(this).attr('aria-label', ariaLabel);
7275        });
7276    });
7277</script>
vendor: 2 bytes, line 7277
7277
7278<script type="application/ld+json">
7279{
7280    "@context": "https://schema.org",
7281    "@graph": [
7282        {
7283            "@type": "WebSite",
7284            "@id": "https://www.thetrainerdirectory.com/#website",
7285            "name": "The Trainer Directory",
7286            "url": "https://www.thetrainerdirectory.com/",
7287            "inLanguage": "en-US",
7288            "potentialAction": {
7289                "@type": "SearchAction",
7290                "target": "https://www.thetrainerdirectory.com/sitesearch?q={search_term_string}",
7291                "query-input": "required name=search_term_string",
7292                "name": "Search Directory: The Trainer Directory"
7293            },
7294            "publisher": {
7295                "@id": "https://www.thetrainerdirectory.com/#organization"
7296            }
7297        },
7298        {
7299            "@type": "Organization",
7300            "@id": "https://www.thetrainerdirectory.com/#organization",
7301            "name": "The Trainer Directory",
7302            "description": "Search the most complete trainer directory. Find trainers.",
7303            "url": "https://www.thetrainerdirectory.com/",
7304            "mainEntityOfPage": {
7305                "@type": "WebPage",
7306                "@id": "https://www.thetrainerdirectory.com/#webpage"
7307            },
7308            "contactPoint": [
7309                {
7310                    "@type": "ContactPoint",
7311                    "email": "[email protected]",
7312                    "contactType": "customer support",
7313                    "availableLanguage": [
7314                        "en"
7315                    ],
7316                    "areaServed": "GB"
7317                }
7318            ],
7319            "areaServed": {
7320                "@type": "Country",
7321                "name": "GB"
7322            },
7323            "logo": {
7324                "@type": "ImageObject",
7325                "@id": "https://www.thetrainerdirectory.com/#logo",
7326                "url": "/images/ttd_logo.png"
7327            },
7328            "image": {
7329                "@type": "ImageObject",
7330                "@id": "https://www.thetrainerdirectory.com/#image",
7331                "url": "/images/ttd_logo.png"
7332            },
7333            "keywords": [
7334                "Professional",
7335                "Trainer",
7336                "The Trainer Directory",
7337                "The Trainer Directory",
7338                "Trainer",
7339                "Professional"
7340            ]
7341        }
7342    ]
7343}</script>
7343
7344
7345<script>
7346// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete
7347(function() {
7348    if (!document.querySelector('link[href*="bootstrap-icons"]')) {
7349        var link = document.createElement('link');
7350        link.rel = 'stylesheet';
7351        link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1';
7352        document.head.appendChild(link);
7353    }
7354})();
7355</script>
7355
7356<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input {
7357			border-radius: 0 8px 8px 0 !important;
7358	}
7359.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead {
7360	display: inline-block;
7361	height: 25px;
7362	position: relative;
7363	width: 100%;
7364}
7365.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) {
7366	width: inherit;
7367}
7368.normal-autosuggest .twitter-typeahead .clear_content.medium{
7369	bottom: 0px;
7370}
7371.sm-autosuggest .twitter-typeahead .clear_content.small{
7372	bottom: -4px;
7373}
7374.md-autosuggest.input-group .twitter-typeahead .clear_content.medium  {
7375    bottom: -2px;
7376}
7377.md-autosuggest .twitter-typeahead {
7378	height: 32px;
7379}
7380.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead {
7381	height: 38px;
7382	vertical-align: top;
7383}
7384.md-autosuggest-input + .clear_content.medium {
7385    bottom: 0px;
7386}
7387.large-autosuggest .twitter-typeahead {
7388	height: 40px;
7389}
7390.normal-autosuggest .twitter-typeahead{
7391	height: 38px;
7392}
7393.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint {
7394	background: #fff !important;
7395	border: 1px solid #ccc!important;
7396	border-radius: 0 8px 8px 0;
7397	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
7398	color: transparent;
7399	left: 0;
7400	padding: 4px 11px;
7401	position: absolute;
7402	top: 0;
7403	width: 100%;
7404	font-size:12px;
7405}
7406.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px}
7407.md-autosuggest .twitter-typeahead .tt-hint {
7408	height: 100%;
7409	background: #ffffff none repeat scroll 0 0 !important;
7410	border: 1px solid #cccccc !important;
7411	border-radius: 0 8px 8px 0;
7412	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important;
7413	color: rgba(0, 0, 0, 0);
7414	left: 0;
7415	padding: 6px 11px;
7416	position: absolute;
7417	top: 0;
7418	width: 100%;
7419}
7420.large-autosuggest {background: #fff !important;border-radius:10px;}
7421.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;}
7422	.input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint {
7423		border-radius: 0 10px 10px 0!important;
7424	}
7425	.large-autosuggest .twitter-typeahead .tt-hint {
7426	background: #fff !important;
7427	border: 1px solid #ccc!important;
7428	border-radius: 10px;
7429	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
7430	color: transparent;
7431	left: 0;
7432	position: absolute;
7433	top: 0;
7434	width: 100%;
7435	font-size: 18px;
7436	height: 46px;
7437	line-height: 1.33333;
7438	padding: 10px 15px;
7439}	
7440.tt-dataset .empty-message {
7441	display: none !important;
7442}
7443.twitter-typeahead .tt-query {background-color:#fff!important}
7444.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;}
7445span.tt-dropdown-menu {
7446	border: 1px solid #FCFCFC;
7447	border-radius: 5px;
7448	box-shadow: 0 5px 10px rgba(0,0,0,.2);
7449	width: 100% !important;
7450}
7451.tt-is-under-cursor a.suggest-link {
7452	background: #55ACEE;
7453}
7454
7455.tt-is-under-cursor .media-heading,
7456.tt-is-under-cursor .suggest-origin,
7457.tt-is-under-cursor .location{
7458	color:#fff!important;
7459}
7460.tt-suggestion .media .media-body .suggest-origin {
7461		color: rgba(45, 91, 137,0.9);
7462	padding: 1px 0;
7463	border-radius: 6px;
7464	font-weight: bold;
7465	line-height: 12px;
7466}
7467.tt-suggestion {
7468	background: #fff;
7469	border-bottom: 1px solid #eee;
7470	-webkit-transition: all 0.3s ease-in-out;
7471	-moz-transition: all 0.3s ease-in-out;
7472	-o-transition: all 0.3s ease-in-out;
7473	transition: all 0.3s ease-in-out;
7474}
7475body .tt-suggestions .media.br-bottom img {
7476	max-width: 45px;
7477	height: auto;
7478}
7479body .tt-suggestions .media-body span {
7480	font-size: 10px;
7481}
7482body .tt-suggestions .media-body h4 {
7483	font-size: 12px;
7484	margin: 2px 0px;
7485	text-transform: capitalize;
7486}
7487a.suggest-link {
7488	padding: 5px;
7489	display: block;
7490}
7491a.suggest-link img {
7492	border-radius: 100px;
7493	display: block;
7494	margin: 0 auto;
7495	height: 100%!important;
7496	width: 100%;
7497	object-fit: cover;
7498}
7499.left-suggest-col {
7500	display: inline-block;
7501	vertical-align: middle;
7502	width: 44px;
7503	height: 44px;
7504}
7505.right-suggest-col {
7506	display: inline-block;
7507	padding-left: 1%;
7508	text-align: left;
7509	vertical-align: middle;
7510	width: calc(100% - 1% - 50px);
7511}
7512p.media-heading {
7513	color: #333;
7514	font-size: 12px;
7515	font-weight: 600;
7516	margin-bottom: 0;
7517}
7518p.suggest-origin {
7519	font-size: 10px;
7520	color: #333;
7521	margin:0;
7522}
7523p.location {
7524	color: #333;
7525	font-size: 10px;
7526	margin: 2px 0;
7527}
7528body .tt-is-under-cursor a.suggest-link {
7529	background: #F7F7F7;
7530}
7531body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location {
7532	color: #333!important;
7533}
7534a.suggest-link[data-heading="heading"] {
7535	 pointer-events: none;
7536  	cursor: default;
7537  	text-decoration: none;
7538}
7539body .tt-is-under-cursor a.suggest-link[data-heading="heading"] {
7540	background: rgb(0, 45, 98);
7541}
7542/* --- all the novalue css --- */
7543a.suggest-link .suggest-origin[data-state="novalue"] {
7544	display: none;
7545}
7546a.suggest-link .location[data-state="novalue"] {
7547	display: none;
7548}
7549a.suggest-link img[data-state="novalue"] {
7550	display: none;
7551}
7552a.suggest-link .suggest-origin[data-state="heading"] {
7553	display: none;
7554}
7555a.suggest-link .media-heading[data-heading="heading"] {
7556	color:rgb(255, 255, 255)!important;
7557	font-weight: bold;
7558	padding: 4px;
7559	font-size: 13px;
7560}
7561.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] {
7562	display: none;
7563}
7564.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] {
7565	width: 100%;
7566}
7567a.suggest-link[href="novalue"] {
7568	cursor: default !important;
7569	pointer-events: none;
7570}
7571a.suggest-link[data-heading="heading"] {
7572	background-color: rgb(0, 45, 98);
7573}
7574div.content-shell {
7575	overflow: inherit;
7576}
7577span.tt-dropdown-menu div {
7578	float: none;
7579}
7580.tt-menu {
7581	border-radius: 0 0 6px 6px;
7582	box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
7583	overflow: hidden;
7584	width: 100%;
7585	z-index: 150 !important;
7586}
7587.tt-menu .tt-dataset {
7588    overflow-y: auto;
7589    max-height: 200px;
7590} </style>        
7590<script type="text/javascript">
7591            
7592            if (typeof decodeHtml != "function") {
7593                function decodeHtml(html) {
7594                    var txt = document.createElement("textarea");
7595                    txt.innerHTML = html;
7596                    return txt.value;
7597                }
7598            }
7599                        function initializeTypeheadMember_search() {
7600                var member_searchEngine = new Bloodhound({
7601                    initialize: false,
7602                    datumTokenizer: function (d) {
7603                        return Bloodhound.tokenizers.whitespace(value);
7604                    },
7605                    queryTokenizer: Bloodhound.tokenizers.whitespace,
7606                    remote: {
7607                        url: `/api/suggest/json/get/1,users_data,Listings,1,1,1,1,1,3|88,list_professions,Main Categories,1,0,1,1,1,3|89,list_services,Sub Categories,1,0,1,1,1,3?tID=35&q=%QUERY`,
7608                        wildcard: '%QUERY',
7609                        filter: function (response) {
7610
7611                            if (response != null) {
7612                                //var response = response.slice(1);
7613                                $.each(
7614                                    response, function (key, value) {
7615                                        response[key]['value'] = decodeHtml(value['value']);
7616                                        response[key]['comes_f'] = decodeHtml(value['comes_f']);
7617                                        response[key]['location'] = decodeHtml(value['location']);
7618
7619                                        if (response[key]['value'].indexOf('-/-') >= 0) {
7620                                            var splitResult = response[key]['value'].split('-/-');
7621                                            response[key]['value'] = splitResult[0];
7622                                        }
7623                                    }
7624                                );
7625
7626                            } else {
7627                                response = {error: "null"};
7628                            }
7629
7630                            return response;
7631                        }
7632                    }
7633                });
7634                var member_searchDataSrc = member_searchEngine.initialize();
7635
7636                member_searchDataSrc
7637                    .done(function () { /*console.log('Autosuggestions engine initialized.'); */
7638                    })
7639                    .fail(function () { /*console.log('err, something went wrong while initializing autosuggestions engine:(');*/
7640                    })
7641
7642                $('.member_search').typeahead({
7643                        minLength:  2,
7644                        highlight: true,
7645                        hint: false                    },
7646                    {
7647                        display: 'value',
7648                        source: member_searchEngine.ttAdapter(),
7649                        limit: 10,
7650                        templates: {
7651                            empty: [
7652                                '<div class="empty-message">',
7653                                'Result not found',
7654                                '</div>'
7655                            ].join(" "),
7656                            notFound: [
7657                                '<div class="notFound-message">',
7658                                'Result not found',
7659                                '</div>'
7660                            ].join(" "),
7661                            suggestion: function (data) {
7662
7663                                if (data == "null") {
7664                                    strTemplate = '<div class="empty-message">Result not found</div>';
7665
7666                                } else {
7667                                    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> ';
7668
7669                                    if ((data.link == undefined) || (data.link == "") || (data.link == "novalue")) {
7670                                        strTemplate = strTemplate.replace(/href=".*?"/, "href='#'");
7671                                    }
7672
7673                                    if ((data.photo == undefined) || (data.photo == "") || (data.photo == "novalue")) {
7674                                        strTemplate = strTemplate.replace(/<img src=".*?>/, "");
7675                                    }
7676                                }
7677
7678                                return strTemplate;
7679                            }
7680                        },
7681                    }).on('typeahead:selected', function (obj, datum) {
7682                    /*
7683                    console.log(obj);
7684                    console.log(datum);
7685                    */
7686                });
7687
7688                $('.member_search').each(function () {
7689                    var inputWidth = $(this).outerWidth();
7690                    $(this).siblings('.tt-dropdown-menu').css('width', inputWidth + 'px');
7691                });
7692            }
7693        </script>
7693
7694            
7694<script>
7695        let typeheadElement = '.member_search';
7696        let TypeheadNameListFunction = 'initializeTypeheadMember_search';
7697        let typeheadFormElement = undefined;
7698        window.addEventListener('load', () => {
7699            if(typeheadElement.length > 1) {
7700                typeheadFormElement = document.querySelectorAll(typeheadElement);
7701            }
7702            if (typeof typeheadFormElement != "undefined") {
7703                for (let i = 0; i < typeheadFormElement.length; i++) {
7704                    let closestForm = typeheadFormElement[i].closest('form');
7705                    if (typeof closestForm != "undefined" && closestForm != null) {
7706                        closestForm.addEventListener('focus', typeheadFormClick, false);
7707                    }
7708                    typeheadFormElement[i].addEventListener('focus', typeheadFormClick, false);
7709                }
7710            }
7711        });
7712        function initializeTypehead(){
7713            let splitFunctionNames= TypeheadNameListFunction.split(',');
7714            for ( let funcName of splitFunctionNames)
7715                if (typeof funcName != 'function') {
7716                    window[funcName](); // execute the function
7717
7718                }
7719        }
7720        function typeheadFormClick(event) {
7721
7722            let head = document.getElementsByTagName('head')[0];
7723            let script = document.createElement('script');
7724            let elementClicked = event.target;
7725            script.type = 'text/javascript';
7726            script.src = "https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.bundle.min.js";
7727            script.onload = function () {
7728                initializeTypehead();
7729                elementClicked.focus();
7730            };
7731            head.appendChild(script);
7732            if (typeof typeheadFormElement != "undefined") {
7733                for (let i = 0; i < typeheadFormElement.length; i++) {
7734                    let closestForm = typeheadFormElement[i].closest('form');
7735                    if (typeof closestForm != "undefined" && closestForm != null) {
7736                        closestForm.removeEventListener('focus', typeheadFormClick, false);
7737                    }
7738                    typeheadFormElement[i].removeEventListener('focus', typeheadFormClick, false)
7739                }
7740            }
7741        }
7742
7743
7744    </script>
7744
7745
7746    
7746<script>
7747    window.addEventListener('load', () => {
7748        let embedlyClass = document.querySelector('.fr-embedly');
7749        if (typeof embedlyClass != "undefined" && embedlyClass != null) {
7750            let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js";
7751            let head = document.getElementsByTagName("head")[0];
7752            let script = document.createElement('script');
7753            script.type = 'text/javascript';
7754            script.src = embedlyURI;
7755            script.async = true;
7756            script.onload = function() {
7757                setTimeout(function() {
7758                    if (typeof embedly !== 'undefined' && embedly.card) {
7759                        document.querySelectorAll('.embedly-card').forEach(function(card) {
7760                            embedly.card(card);
7761                        });
7762                    }
7763                }, 500);
7764            };
7765            head.appendChild(script);
7766        }
7767    });
7768</script>
7768<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
7768<script>
7769                            $(function () {
7770                                $(".lazyloader").Lazy({
7771                                    afterLoad: function(element) {
7772                                        $(".gridView.activeView").click();
7773                                    }
7774                                });
7775                                
7776                            });
7777                            $("button[class*='slick'],button[id*='slick']").click(function () {
7778                              $(this).parents(".row").find(".lazyloader").lazy({
7779                                    bind: "event",
7780                                    delay: 0
7781                                });
7782                            });
7783                            $("[class*='slick'],[id*='slick']").on("swipe",function(){
7784                              $(this).parents(".row").find(".lazyloader").lazy({
7785                                    bind: "event",
7786                                    delay: 0
7787                                });
7788                            });
7789                        </script>
7789<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
7789
7790            </body>
7791        </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.