PageSourceSearch

https://www.mythreebids.com/

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