PageSourceSearch

https://www.westminsterchamber.org/search_results

html westminsterchamber.org collected 2026-09-26 14:33:31 UTC 421,723 bytes, 8,450 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/fav.png">
13    <link rel="icon" type="image/png" href="/images/fav.png">
14	
15    <!-- Site Meta Data -->
16    <title>Westminster California Businesses - Find &amp; Compare Westminster California Business Professionals</title>
17    <meta name="description" content="Search our Westminster California Business database and connect with top rated Westminster California Businesses.">
18    <meta name="keywords" content="Westminster California Business,Westminster California Businesses,Westminster California Businesses,search Westminster California Businesses,find Westminster California Businesses">
19    <meta name="robots" content="index, follow">
20
21    <!-- Canonical URL -->
22	<link rel="canonical" href="https://www.westminsterchamber.org/search_results">	
23	<link rel="alternate" type="application/rss+xml" title="Westminster Chamber of Commerce RSS Feed" href="https://www.westminsterchamber.org/rss" />
24	<link rel='next' href='https://www.westminsterchamber.org/search_results?page=2'>	
25	
26    	<!-- Social Media Meta Data -->
27    <meta property="og:type" content="website">
28    <meta property="og:url" content="https://www.westminsterchamber.org/search_results">
29    <meta property="og:site_name" content="Westminster Chamber of Commerce">
30    <meta property="og:title" content="The Best Westminster California Businesses Rated By Past Clients">
31    <meta property="og:description" content="Who is the best Westminster California Businesses? Compare and connect with the top rated Westminster California Businesses.">
32    <meta property="og:image" content="https://www.westminsterchamber.org/images/hero-slider/PHOTO-2022-09-21-16-51-02-(2).webp">
33	
33<script>
34	var siteInfoSpan=document.createElement('span');
35	siteInfoSpan.style.cssText='position:absolute;color:transparent;width:100%;z-index:-1;height:50px;top:0;';
36	siteInfoSpan.textContent='www.westminsterchamber.org - Westminster Chamber of Commerce';
37	document.documentElement.appendChild(siteInfoSpan);
38	</script>
38
39
40	<!-- Preload -->
41	<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>
42	<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap" fetchpriority="high">
43		
44    <!-- Non-Critical Stylesheet - Render Before Critical Styles -->
45	<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>
46	<noscript>
47		<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css" crossorigin>
48	</noscript>
49		
50	<!-- Critical Stylesheet -->
51	<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" crossorigin>
52    	
53    <!-- Google Fonts Stylesheet -->    
54    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap">
55    <noscript>
56        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Roboto:300,400,600,700,800,900&display=swap">
57    </noscript>
58	
59    <!-- FontAwesome Stylesheet -->
60    <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>
61    <noscript>
62        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
63    </noscript>
64	
65    <!-- Bootstrap Icons Stylesheet -->
66    <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>
67    <noscript>
68        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
69    </noscript>
70	
71    <!-- Critical JavaScript -->
72    
72<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/jquery.min.js"></script>
72
73	
73<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/bootstrap-3.3.5.min.js"></script>
73
74	
74<script>
75		/* jQuery.event.special.touchstart = {
76			setup: function( _, ns, handle ) {
77				this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
78			}
79		}; */
80		jQuery.event.special.touchmove = {
81			setup: function( _, ns, handle ) {
82				this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
83			}
84		};
85		jQuery.event.special.wheel = {
86			setup: function( _, ns, handle ){
87				this.addEventListener("wheel", handle, { passive: true });
88			}
89		};
90		jQuery.event.special.mousewheel = {
91			setup: function( _, ns, handle ){
92				this.addEventListener("mousewheel", handle, { passive: true });
93			}
94		};
95	</script>
95
96
97	<!-- Breadcrumb Position -->
98	<style>html.bc-relocate .container:has(> .breadcrumb):has(~ .hero_section_container) .breadcrumb{display:none!important;}html.bc-relocate .hero_section_container + .clearfix + .container::before{content:"";display:block;min-height:24px;}.hero_section_container + .clearfix + .container > .breadcrumb:first-child{position:relative;top:-24px;}</style>
99	
99<script>document.documentElement.classList.add('bc-relocate');document.addEventListener('DOMContentLoaded',function(){var bc=document.querySelector('ol.breadcrumb'),hero=document.querySelector('.hero_section_container');if(bc&&hero){var t=hero.nextElementSibling;while(t&&!t.classList.contains('container'))t=t.nextElementSibling;if(t)t.insertBefore(bc,t.firstChild);}document.documentElement.classList.remove('bc-relocate');});</script>
99
100		
101	
102    <!-- Prefetch -->
103    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script">
104    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0" as="script">
105
106    <!-- Custom Site-wide HEAD Content -->
106<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9069257265845180"
107     crossorigin="anonymous"></script>
vendor: 2 bytes, line 107
107
108<script>
109   var hsscript = document.createElement("script");
110   hsscript.src = "https://cdn.jsdelivr.net/npm/hockeystack@latest/hockeystack.min.js";
111   hsscript.async = 1;
112   hsscript.dataset.apikey = "880cd94d2663223a75e68d70bd2631";
113   hsscript.dataset.cookieless = 1;
114   hsscript.dataset.autoIdentify = 1;
115   document.getElementsByTagName('head')[0].append(hsscript);
116</script>
vendor: 2 bytes, line 116
116
117<script type="text/javascript">
118    (function(c,l,a,r,i,t,y){
119        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
120        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
121        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
122    })(window, document, "clarity", "script", "fr45wek0yo");
123</script>
123
124<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 124-125
124
125<script async src="https://www.googletagmanager.com/gtag/js?id=
125G-SSCD6BSGLV
vendor: 13 bytes, line 125
125"></script>
126<script>
127  
vendor: 138 bytes, lines 127-131
127window.dataLayer = window.dataLayer || [];
128  function gtag(){dataLayer.push(arguments);}
129  gtag('js', new Date());
130
131  gtag('config', '
131G-SSCD6BSGLV
vendor: 5 bytes, line 131
131');
132</script>
132        
132<script>
133        function g() {
134            window.addEventListener('load', () => {
135                if (typeof initializeG === 'function') {
136                    initializeG();
137                } else if (typeof initializeGoogleMaps === 'function') {
138                    initializeGoogleMaps();
139                }
140                            });
141        }
142    </script>
142
143    
143<script src="https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places&region=US&callback=g&language=en&key=AIzaSyDbfKV3pdAqtZWJp2D8818eBlTy7zr0DQk"></script>
143
144
145</head>
146<body>
147<style type='text/css'> 
148 </style><!--GOOGLE TAG MANAGER CODE--><!--
149IMPORTANT: 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.
150
151INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section.
152-->
153<style>
154    .upload-form-field::before {
155        content: "choose files";
156        display: inline-block;
157        border: 1px solid #999;
158        border-radius: 3px;
159        padding: 5px 8px;
160    }
161    #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 {
162        white-space: nowrap !important;
163    }
164    /* Main Website Design */
165    body,.modal-header,.modal-content,.modal-body,.modal-footer {
166        background: rgb(255, 255, 255);
167        color: rgb(44, 44, 44);
168        font-family: 'Cabin';
169        font-size: 14px;
170    }
171    .select2-container .select2-choice {
172        font-family: 'Cabin'!important;
173    }
174        html{
175        background: rgb(44, 44, 44)    }
176        .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow {
177        color: #000 !important;
178    }    
179    a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) {
180        color: rgb(0, 102, 153);
181    }
182    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 {
183        color: rgb(14, 122, 176);
184    }
185    .breadcrumb a{
186            color: rgba(118, 118, 118,0.9);
187    }
188    .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active {
189        color: rgb(118, 118, 118);
190    }
191    .help-inline, .help-block {
192            color: rgba(44, 44, 44,0.5);
193    }
194    .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
195        font-family: 'PT Sans';
196    }
197        /* Header Design */
198    .header, .mobile_website_logo img {
199        background: rgb(255, 255, 255);
200    }
201    .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span {
202        color: rgb(118, 118, 118);
203            font-size: 14px;
204        }
205    .header .mini-nav li a:not(.btn):hover {
206            color: rgba(118, 118, 118,0.95);
207    }
208    .header .btn_get_listed {
209		background-color: rgb(240, 52, 52);
210        border: 1px solid rgb(240, 52, 52);
211        color: rgb(255, 255, 255)!important;
212    }
213    .header .btn_get_listed:hover, .header .btn_get_listed:focus {
214		        background-color: rgba(240, 52, 52,0.97);        
215    }
216    .header .btn_search {
217            background-color: rgba(0, 102, 153,0.97);
218        border: 1px solid rgb(0, 102, 153);
219        color: rgb(255, 255, 255);
220    }
221    .header .btn_search:hover, .header .btn_search:focus {
222        background-color: rgb(0, 102, 153);
223        color: rgb(255, 255, 255);
224    }
225
226    /* Logo Design */
227    .logo,.logo:hover,.logo:focus {
228        color: rgb(44, 44, 44);
229        font-family: 'PT Sans';
230    }
231    .logo .slogan {
232        color: rgb(118, 118, 118);
233    }
234    .logo .fa {
235        color: rgb(0, 102, 153);
236        }
237
238    /* Main Menu Design */
239    .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
240        background: rgb(221, 221, 221);
241        position: sticky;
242        z-index: 1;
243            top: 0px;
244        }
245	/* Google Translate When Main Menu Sticky Top */
246	    @media only screen and (max-width: 1100px) {
247        .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
248                    top: 50px;
249                }
250    }
251    .header ul.nav.navbar-nav li ul {
252        background-color: rgb(71, 134, 141);
253    }
254    .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span {
255        color: rgb(255, 255, 255);
256                font-weight: 400;
257            }
258    .header .navbar-default, .pagination > .active > a {
259        background-color: rgb(71, 134, 141);
260    }
261    .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{
262        border-left-color: rgb(255, 255, 255);
263        background: rgb(255, 255, 255);
264        color: rgb(71, 134, 141);
265    }
266    .navbar-default .navbar-toggle .icon-bar {
267        background-color: rgb(255, 255, 255);
268    }
269	.user_sidebar, .main_menu, .compact-mobile-search {
270        color: rgb(255, 255, 255);
271    }
272    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span  {
273        color: rgb(255, 255, 255);
274                font-weight: 400;
275            }
276    .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 {
277        color: rgb(255, 255, 255);
278    }
279    .navbar-default .navbar-nav > li {
280        font-family: 'Cabin';
281    }
282    
283    
284
285    /* Footer Design */
286    .footer {
287        background-color: rgb(44, 44, 44);
288        display: block;
289    }
290    .footer, .footer_menu a,.footer_terms a,.footer_menu .content {
291        color: rgb(239, 239, 239);
292    }
293    .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus {
294        color: rgb(255, 255, 255);
295    }
296    .footer_menu .head {
297        color: rgb(255, 255, 255);
298    }
299    .btn_footer_get_listed {
300		background-color: rgb(240, 52, 52);
301        border: 1px solid rgb(240, 52, 52);
302        color: rgb(255, 255, 255)!important;
303    }
304    .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{
305				background-color: rgba(240, 52, 52,0.95);        
306    }
307    
308    /* Homepage Design */
309        .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 {
310        font-family: 'PT Sans';
311    }
312    .homepage_settings h1, .homepage_map h1 {
313        color: rgb(255, 255, 255);
314            font-weight: 600;
315            text-align: center;
316    }
317    .homepage_settings h2, .homepage_map h2 {
318        color: rgb(41, 41, 41);
319            font-weight: 400;
320            text-align: center;
321
322    }
323    .homepage_settings .search_box label {
324        color: rgb(49, 49, 49);
325    }
326    .btn_home_search, .search_box input[type=submit] {
327		background-color: rgb(0, 102, 153);
328        border: 1px solid rgb(0, 102, 153);
329        color: rgb(255, 255, 255);
330    }
331    .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus {
332		        background-color: rgba(0, 102, 153,0.97);        
333        color: rgb(255, 255, 255);
334    }
335	.homepage_settings .search_box {
336		
337				background-color: rgba( 255, 255, 255, 0.8);
338	}
339
340    /* Homepage Steps Module */
341    .homepage_steps {
342            background: none;
343        box-shadow: none;
344        padding: 0;
345                color: rgb(255, 255, 255);
346            }
347    .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{
348        color: rgb(255, 255, 255)!important;
349    }
350    .homepage_steps .fa {
351        color: rgb(255, 255, 255);
352            background-color: rgba(255, 255, 255,0.075);
353    }
354	.homepage_steps h2 + p {
355        opacity: .6;
356	}
357
358    /* Blog Posts Slider Settings */
359    #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 {
360            color: rgb(71, 71, 71);
361        }
362    #myCarousel .list-group-item {
363            background-color: rgba(245, 245, 245,0.9);
364        border-color: rgba(245, 245, 245,0.80);
365    }
366    #myCarousel .carousel-caption {
367            background-color: rgba(245, 245, 245,0.8);
368    }
369    #myCarousel .list-group, #myCarousel .carousel-inner {
370            background-color: rgb(245, 245, 245)        }
371    #myCarousel .list-group .active, #myCarousel .list-group-item:hover {
372            background-color: rgb(245, 245, 245)        }
373    #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{
374            color: rgb(71, 71, 71);
375        }
376
377    /* Additional Settings */
378    .well blockquote {
379        background: rgb(255, 255, 255) none repeat scroll 0 0;
380        border-color: rgb(221, 221, 221);
381        color: rgb(44, 44, 44);
382        padding: 10px 20px;
383    }
384    .account-form-box form table tr td table {
385        background-color: transparent!important;
386        border: none!important;
387    }
388
389    .account-form-box form table tr td table td {
390        background-color: transparent!important;
391        color: rgb(44, 44, 44)!important;
392        border: none!important;
393    }
394    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{
395        color: rgb(44, 44, 44)!important;
396    }
397	.table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td {
398				border-color: rgba(85, 85, 85,0.1);
399		background-color: rgb(245, 245, 245);
400		color: rgb(85, 85, 85);
401		font-weight:600;
402		border-left: none;
403		border-bottom-width: 1px;
404	}
405	.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer {
406				border-color: rgba(85, 85, 85,0.1);
407	}
408	.table > tfoot > tr > td:not(:last-child) {
409		border-right: 1px solid rgba(85, 85, 85,0.1);
410	}
411	table.dataTable.no-footer, table.dataTable {
412		border: 1px solid rgb(221, 221, 221)!important;
413	}
414	.table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div {
415		border-top:1px solid rgb(221, 221, 221);
416	}
417	.table-view .table-view-group:last-child {
418		border-bottom:1px solid rgb(221, 221, 221);
419	}
420	table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped {
421		background-color: rgb(245, 245, 245)!important;
422	}
423	.table-striped.dataTable, .table-striped, .fr-view .table-striped {
424				border: 1px solid rgba(85, 85, 85,0.15);
425		border-collapse: separate;
426		overflow: hidden;
427	}
428	table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 
429    	overflow: visible;
430	}
431	.table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) {
432				background-color: rgba(255, 255, 255,0.5)!important;
433	}
434	.nav-tabs, hr, .account-menu-title, .modal-header {
435		border-color: rgb(221, 221, 221);
436	}
437    .sidemenu_panel .list-group-item{
438        background-color: transparent!important;
439        color: rgb(41, 41, 41)!important;
440    }
441    .img-thumbnail {
442        background-color: rgb(245, 245, 245)!important;
443        border: 1px solid rgb(221, 221, 221);
444    }
445    .member_admin_sidemenu p, .member_admin_sidemenu h3 {
446        color: rgb(41, 41, 41)!important;
447    }
448    .close {
449        color: rgb(44, 44, 44);
450        opacity: 1;
451    }
452    .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 {
453        font-size:34px;
454        display: block;
455    }
456    .member_results_header h2, .feature_results_header h2 {
457        font-size:28px;
458        display: block;
459    }
460    .homepage_settings {
461        padding-top: 90px;
462        padding-bottom: 200px;
463    }
464    @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 
465    @media only screen and (max-width: 768px) {
466                        .member-profile-header .favorite {float:none}
467    }
468    
469
470    @media only screen and (max-width: 1100px) {
471        }
472    .views > i.fa.activeView, .views > i.fa:hover {
473        background-color: rgb(44, 44, 44);
474        color: rgb(255, 255, 255);
475    }
476	.views > i.fa {
477		        background-color: rgba(44, 44, 44,0.1);
478		color: rgb(44, 44, 44);
479	}
480    .ui-rangeSlider-label {
481        background-color: rgb(71, 134, 141)!important;
482        color: rgb(255, 255, 255)!important;
483    }
484    .pricing_menu li .title {
485        background: rgb(0, 102, 153);
486        color: rgb(255, 255, 255);
487    }
488    p.account-tip{
489        color: rgb(44, 44, 44);
490    }
491    .circled_number {
492        background: rgb(0, 102, 153);
493        color: rgb(255, 255, 255);
494    }
495    .pic {
496            background-color: rgba(0, 102, 153,0.8);
497        color: rgb(255, 255, 255);
498        background-repeat: no-repeat;
499        background-position: center;
500        }
501    .pic .pic-caption {
502            background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(0, 102, 153,0.85) 50%);
503        color: rgb(255, 255, 255);
504    }
505    .slick-prev-fa i, .slick-next-fa i{
506        color: rgb(0, 102, 153);
507    }
508    .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 {
509        background-color: rgb(245, 245, 245);
510        border-color: rgb(221, 221, 221);
511        color: rgb(41, 41, 41);
512    }
513    .nav-pills > li.active a, .nav-pills > li > a:hover {
514        background-color: rgb(0, 102, 153)!important;
515        border-color: rgb(0, 102, 153)!important;
516        color: rgb(255, 255, 255)!important;
517    }
518    .sidemenu_panel .panel-heading {
519        color: rgb(41, 41, 41)!important;
520        background-color: rgb(245, 245, 245)!important;
521    }
522    .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a {
523            background: rgba(245, 245, 245,0.5);
524        color:  #616161;
525    }
526    .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 {
527            background: rgba(245, 245, 245,1);
528        color:  rgb(44, 44, 44);
529    }
530    .author-snapshot .well:not(.well.bg-default) {
531        background-color: rgb(245, 245, 245)!important;
532        border-color: rgb(221, 221, 221)!important;
533        color: rgb(41, 41, 41)!important;
534    }
535    .nav-tabs>li>a, .nav-pills>li>a {
536        font-weight: 600;
537    }
538        .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{
539            color: rgba(41, 41, 41,0.5);
540    }
541    #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a {
542        color: rgb(41, 41, 41) !important;
543    }
544    .popover {
545        background-color: rgb(245, 245, 245);
546        border-color: rgb(245, 245, 245);
547        padding:0;
548        text-align:left;
549    }
550    .popover-title, .popover-content {
551        background-color: rgb(245, 245, 245);
552        color: rgb(41, 41, 41);
553        border-color: rgb(245, 245, 245);
554        text-align:left;
555    }
556    .popover-content {
557    		background-color: rgba(41, 41, 41,.05);
558		border-radius: 4px;
559		transform: translate(-1px, -1px);
560		width: calc(100% + 2px);
561		margin-bottom: -2px;
562    }
563    .popover.left > .arrow::after {
564        border-left-color: rgb(245, 245, 245)!important;
565    }
566    .popover.right > .arrow::after {
567        border-right-color: rgb(245, 245, 245)!important;
568    }
569    .popover.bottom > .arrow::after {
570        border-bottom-color: rgb(245, 245, 245)!important;
571    }
572    .popover.top > .arrow::after {
573        border-top-color: rgb(245, 245, 245)!important;
574    }
575    .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{
576        background-color: rgb(255, 255, 255);
577        color: rgb(44, 44, 44);
578    }
579    .module h1, .module h2, .module h3, .module h4, .module h5 {
580        color: rgb(62, 62, 62);
581    }
582    .module p:not(.fr-box.fr-basic .fr-element p) {
583        color: rgb(41, 41, 41);
584    }
585    .pagination>.active>a {
586            border-color: rgba(255, 255, 255,0.2);
587    }
588    .pagination>.active>a {
589        color: rgb(255, 255, 255);
590    }
591    .pagination > .active > a:hover, .pagination > .active > a:focus {
592            border-color: rgba(255, 255, 255,0.2);
593        background-color: rgb(71, 134, 141);
594        color: rgb(255, 255, 255);
595    }
596    .pagination > li > a {
597        color: rgb(71, 134, 141);
598            border-color: rgba(71, 134, 141,0.2);
599        background-color: rgb(255, 255, 255);
600    }
601    .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover {
602        background-color: rgb(71, 134, 141);
603        border-color: rgb(71, 134, 141);
604        color: rgb(255, 255, 255);
605    }
606
607    .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{
608        background-color: rgb(250, 250, 250)!important;
609        color: rgb(41, 41, 41)!important;
610    }
611    .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover {
612        background-color: rgb(240, 52, 52)!important;
613        border-color: rgb(240, 52, 52);
614        color: rgb(255, 255, 255);
615    }
616    .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a {
617        background-color: rgb(51, 122, 183)!important;
618        color: rgb(255, 255, 255)!important;
619    }
620    .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover {
621        background-color: rgb(71, 134, 141)!important;
622        border-color: rgb(71, 134, 141);
623        color: rgb(255, 255, 255);
624    }
625
626        .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow {
627        border-color: transparent transparent transparent rgb(51, 122, 183)!important;
628    }
629    .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{
630        border-color: rgb(51, 122, 183) rgb(51, 122, 183) rgb(51, 122, 183) transparent!important;
631    }
632    
633        li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge {
634        border-color: rgb(0, 166, 128) rgb(0, 166, 128) rgb(0, 166, 128) transparent!important;
635    }
636    
637        li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge {
638        border-color: rgb(250, 250, 250) rgb(250, 250, 250) rgb(250, 250, 250) transparent!important;
639    }
640    
641    .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover {
642        background-color: rgb(0, 166, 128)!important;
643        color: rgb(255, 255, 255)!important;
644    }
645
646    .member_wizard2 li {
647        color: rgb(255, 255, 255);
648        border-right: 10px solid rgb(255, 255, 255);
649    }
650
651        li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow {
652        border-color: transparent transparent transparent rgb(0, 166, 128)!important;
653    }
654    
655        li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{
656        border-color: transparent transparent transparent rgb(250, 250, 250)!important;
657    }
658    
659    /* Default Colors */
660    .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 {
661    	background-color: rgb(0, 102, 153);
662        border-color: rgb(0, 102, 153);
663        color: rgb(255, 255, 255);
664    }
665    .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 {        
666		        background-color: rgba(0, 102, 153,0.95);
667        border-color: rgb(0, 102, 153);
668        color: rgb(255, 255, 255);
669    }
670	.panel-primary {
671        background-color: #d9e8f0;
672		border-color: rgb(0, 102, 153);
673	}
674    .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .
674well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary {
675        background-color: rgb(0, 102, 153);
676        color: rgb(255, 255, 255);
677    }
678    .bg-primary .badge {
679        background-color:rgb(255, 255, 255);
680        color: rgb(0, 102, 153);
681    }
682    .btn-primary.btn-outline {
683        background: transparent;
684        color: rgb(0, 102, 153);
685        transition: all 250ms ease-in-out 0ms;
686    }
687    .btn-primary.btn-outline:hover {
688            background: rgba(0, 102, 153,0.1);
689		color: rgb(0, 102, 153);
690    }
691    .alert-primary {
692            background-color:rgba(0, 102, 153,0.7);
693        border-color:rgba(0, 102, 153,0.2);
694            color: rgba(255, 255, 255,0.9);
695    }
696	.alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle {
697		background-color: #cce0eb;
698		border-color: #cce0eb;
699		color: rgb(0, 102, 153);
700		color: color-mix(in srgb, rgb(0, 102, 153) 50%, rgb(44, 44, 44) 50%);
701	}
702    .btn.dropdown-toggle.btn-primary *, .btn-primary a {
703        color: rgb(255, 255, 255);
704    }
705    .text-primary{
706        color: rgb(0, 102, 153);
707    }
708    .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 {
709		background-color: rgb(60, 187, 222);
710        border-color: rgb(60, 187, 222);
711        color: rgb(255, 255, 255);
712    }
713    .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 {
714		        background-color: rgba(60, 187, 222,0.95);
715        border-color: rgb(60, 187, 222);
716        color: rgb(255, 255, 255);
717    }
718	.panel-info {
719        background-color: #e2f5fa;
720		border-color: rgb(60, 187, 222);
721	}
722    .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 {
723        background-color: rgb(60, 187, 222);
724        color: rgb(255, 255, 255);
725    }
726    .bg-info .badge {
727        background-color:rgb(255, 255, 255);
728        color: rgb(60, 187, 222);
729    }
730    .btn-info.btn-outline {
731        background: transparent;
732        color: rgb(60, 187, 222);
733        transition: all 250ms ease-in-out 0ms;
734    }
735    .btn-info.btn-outline:hover {
736            background: rgba(60, 187, 222,0.1);
737		color: rgb(60, 187, 222);
738    }
739    .alert-info {
740            background-color:rgba(60, 187, 222,0.7);
741        border-color:rgba(60, 187, 222,0.2);
742            color: rgba(255, 255, 255,0.9);
743    }
744	.alert-info-subtle, .label-info-subtle, .badge-info-subtle {
745		background-color: #d8f1f8;
746		border-color: #d8f1f8;
747		color: rgb(60, 187, 222);
748		color: color-mix(in srgb, rgb(60, 187, 222) 50%, rgb(44, 44, 44) 50%);
749	}
750    .btn.dropdown-toggle.btn-info *, .btn-info a {
751        color: rgb(255, 255, 255);
752    }
753    .text-info{
754        color: rgb(60, 187, 222);
755    }
756    .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 {
757		background-color: rgb(71, 134, 141);
758        border-color: rgb(71, 134, 141);
759        color: rgb(255, 255, 255);
760    }
761    .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 {        
762		        background-color: rgba(71, 134, 141,0.95);
763        border-color: rgb(71, 134, 141);
764        color: rgb(255, 255, 255);
765    }
766    .panel-success {
767        background-color: #e3edee;
768        border-color: rgb(71, 134, 141);
769    }
770    .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 {
771        background-color: rgb(71, 134, 141);
772        color: rgb(255, 255, 255);
773    }
774    .bg-success .badge {
775        background-color: rgb(255, 255, 255);
776        color: rgb(71, 134, 141);
777    }
778    .btn-success.btn-outline {
779        background: transparent;
780        color: rgb(71, 134, 141);
781        transition: all 250ms ease-in-out 0ms;
782    }
783    .btn-success.btn-outline:hover {
784            background: rgba(71, 134, 141,0.1);
785		color: rgb(71, 134, 141);
786    }
787    .alert-success {
788            background-color:rgba(71, 134, 141,0.7);
789        border-color:rgba(71, 134, 141,0.2);
790            color: rgba(255, 255, 255,0.9);
791    }
792	.alert-success-subtle, .label-success-subtle, .badge-success-subtle {
793		background-color: #dae7e8;
794		border-color: #dae7e8;
795		color: rgb(71, 134, 141);
796		color: color-mix(in srgb, rgb(71, 134, 141) 50%, rgb(44, 44, 44) 50%);
797	}
798    .btn.dropdown-toggle.btn-success *, .btn-success a {
799        color: rgb(255, 255, 255);
800    }
801    .text-success{
802        color: rgb(71, 134, 141);
803    }
804    .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 {
805		background-color: rgb(240, 52, 52);
806        border-color: rgb(240, 52, 52);
807        color: rgb(255, 255, 255);
808    }
809    .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 {        
810		        background-color: rgba(240, 52, 52,0.95);
811        border-color: rgb(240, 52, 52);
812        color: rgb(255, 255, 255);
813    }
814	.panel-warning {
815        background-color: #fde1e1;
816		border-color: rgb(240, 52, 52);
817	}
818    .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 {
819        background-color: rgb(240, 52, 52);
820        color: rgb(255, 255, 255);
821    }
822    .bg-warning .badge {
823        background-color: rgb(255, 255, 255);
824        color: rgb(240, 52, 52);
825    }
826    .btn-warning.btn-outline {
827        background: transparent;
828        color: rgb(240, 52, 52);
829        transition: all 250ms ease-in-out 0ms;
830    }
831    .btn-warning.btn-outline:hover {
832            background: rgba(240, 52, 52,0.1);
833		color: rgb(240, 52, 52);
834    }
835    .alert-warning {
836            background-color:rgba(240, 52, 52,0.7);
837        border-color:rgba(240, 52, 52,0.2);
838            color: rgba(255, 255, 255,0.9);
839    }
840	.alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle {
841		background-color: #fcd6d6;
842		border-color: #fcd6d6;
843		color: rgb(240, 52, 52);
844		color: color-mix(in srgb, rgb(240, 52, 52) 50%, rgb(44, 44, 44) 50%);
845	}
846    .btn.dropdown-toggle.btn-warning *, .btn-warning a {
847        color: rgb(255, 255, 255);
848    }
849    .text-warning {
850        color: rgb(240, 52, 52);
851    }
852    .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 {
853		background-color: rgb(240, 52, 52);
854        border-color: rgb(240, 52, 52);
855        color: rgb(255, 255, 255);
856    }
857    .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 {        
858		        background-color: rgba(240, 52, 52,0.95);
859        border-color: rgb(240, 52, 52);
860        color: rgb(255, 255, 255);
861    }
862    .has-error .form-control {
863        border-color: rgb(240, 52, 52);
864    }
865    .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 {
866        background: rgb(240, 52, 52);
867        color: rgb(255, 255, 255) !important;
868    }
869    .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 {
870        color: rgb(240, 52, 52);
871    }
872	.panel-danger {
873        background-color: #fde1e1;
874		border-color: rgb(240, 52, 52);
875	}
876    .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 {
877        background-color: rgb(240, 52, 52);
878        color: rgb(255, 255, 255);
879    }
880    .bg-danger .badge {
881        background-color: rgb(255, 255, 255);
882        color: rgb(240, 52, 52);
883    }
884    .btn-danger.btn-outline {
885        background: transparent;
886        color: rgb(240, 52, 52);
887        transition: all 250ms ease-in-out 0ms;
888    }
889    .btn-danger.btn-outline:hover {
890            background: rgba(240, 52, 52,0.1);
891		color: rgb(240, 52, 52);
892    }
893    .alert-danger {
894            background-color:rgba(240, 52, 52,0.7);
895        border-color:rgba(240, 52, 52,0.2);
896            color: rgba(255, 255, 255,0.9);
897    }
898	.alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle {
899		background-color: #fcd6d6;
900		border-color: #fcd6d6;
901		color: rgb(240, 52, 52);
902		color: color-mix(in srgb, rgb(240, 52, 52) 50%, rgb(44, 44, 44) 50%);
903	}	
904    .btn.dropdown-toggle.btn-danger *, .btn-danger a {
905        color: rgb(255, 255, 255);
906    }
907    .text-danger{
908        color: rgb(240, 52, 52);
909    }
910    .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
910s, 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 {
911		background-color: rgb(245, 245, 245);
912        border-color: rgb(245, 245, 245);
913        color: rgb(85, 85, 85);
914    }
915    .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 {        
916		        background-color: rgba(245, 245, 245,0.95);
917        border-color: rgb(245, 245, 245);
918        color: rgb(85, 85, 85);
919    }
920    .sidemenu_panel .panel-default .panel_heading {
921        background-color: rgb(245, 245, 245)!important;
922        border-color: rgb(245, 245, 245)!important;
923        color: rgb(85, 85, 85)!important;
924    }
925	.panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading {
926				
927		box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset;
928		background-color: rgb(245, 245, 245);
929	}
930    .panel-default, .member_accounts .panel-default {
931			
932        background-color: rgba(245, 245, 245,0.15);
933		border-color: #fefefe;
934		border-color: color-mix(in srgb,rgb(245, 245, 245) 100%,rgba(245, 245, 245) 10%);
935	}
936	.member_admin_sidemenu .panel-default {
937		background-color: transparent;
938	}
939    .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 {
940        background-color: rgb(245, 245, 245);
941        color: rgb(85, 85, 85);
942    }
943    .bg-default .badge {
944        background-color: rgb(85, 85, 85);
945        color: rgb(245, 245, 245);
946    }
947    .btn-default.btn-outline {
948        background: transparent;
949        color: rgb(245, 245, 245);
950        transition: all 250ms ease-in-out 0ms;
951    }
952    .btn-default.btn-outline:hover {
953            background: rgba(245, 245, 245,0.1);
954		color: rgb(245, 245, 245);
955    }
956	.alert-default {
957		background-color:rgb(245, 245, 245);
958		border-color:rgb(245, 245, 245);
959		color: rgb(85, 85, 85);
960	}
961	.alert-default-subtle, .label-default-subtle, .badge-default-subtle {
962				background-color:rgba(245, 245, 245,0.5);
963		border-color: rgba(245, 245, 245,0.5);
964		color: rgb(85, 85, 85);
965		color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(44, 44, 44) 50%);
966	}	
967    .btn.dropdown-toggle.btn-default *, .btn-default a {
968        color: rgb(85, 85, 85);
969    }
970    .text-default{
971        color: rgb(245, 245, 245);
972    }
973    .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 {
974		background-color: rgb(44, 44, 44);
975        border: 1px solid rgb(44, 44, 44);
976        color: rgb(255, 255, 255);
977    }
978    .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 {        
979		        background-color: rgba(44, 44, 44,0.95);
980        border-color: rgb(44, 44, 44);
981        color: rgb(255, 255, 255);
982    }
983    .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 {
984        background-color: rgb(44, 44, 44);
985        color: rgb(255, 255, 255);
986    }
987    .bg-secondary .badge {
988        background-color:rgb(255, 255, 255);
989        color: rgb(44, 44, 44);
990    }
991    .btn-secondary.btn-outline {
992        background: transparent;
993        color: rgb(44, 44, 44);
994        transition: all 250ms ease-in-out 0ms;
995    }
996    .btn-secondary.btn-outline:hover {
997            background: rgba(44, 44, 44,0.1);
998		color: rgb(44, 44, 44);
999    }
1000	.panel-secondary {
1001        background-color: #dfdfdf;
1002		border-color: rgb(44, 44, 44);
1003	}
1004	.alert-secondary {
1005		background-color:rgb(44, 44, 44);
1006		border-color:rgb(44, 44, 44);
1007		color: rgb(255, 255, 255);
1008	}
1009	.alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle {
1010				background-color:rgba(44, 44, 44,0.8);
1011		border-color: rgba(44, 44, 44,0.5);
1012		color: rgb(255, 255, 255);
1013	}
1014	.btn-outline {
1015		-webkit-backdrop-filter: blur(5px);
1016		backdrop-filter: blur(5px);
1017	}
1018	.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 {
1019		background-color: rgb(255, 255, 255);
1020		border: 1px solid rgb(255, 255, 255);
1021		color: rgb(44, 44, 44);
1022	}
1023	.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 {        
1024				background-color: rgba(255, 255, 255,0.95);
1025		border: 1px solid rgb(255, 255, 255);
1026		color: rgb(44, 44, 44);
1027	}	
1028	.btn.btn-body.dropdown-toggle * {
1029		color: rgb(44, 44, 44)	
1030	}
1031	.btn-body.dropdown-toggle + ul li, .daterangepicker .ranges {
1032		color: #333;
1033	}
1034    .bg-body {
1035        background: rgb(255, 255, 255);
1036        color: rgb(44, 44, 44);
1037    }
1038    .bg-content-box {
1039        background: rgb(245, 245, 245);
1040        color: rgb(41, 41, 41);
1041    }
1042    .bg-content-box-border {
1043        background: rgb(221, 221, 221);
1044    }
1045    .btn.dropdown-toggle.btn-secondary *, .btn-secondary a {
1046        color: rgb(255, 255, 255);
1047    }
1048    .text-secondary {
1049        color: rgb(44, 44, 44);
1050    }
1051	.text-body {
1052		color: rgb(255, 255, 255);
1053	}
1054    .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section  .alert-secondary {
1055		border-radius: 10px;
1056        background-color: rgba(44, 44, 44,0.2);
1057    }
1058
1059    /* Footer Newsletter Row */
1060    .newsletter_row .alert {
1061        color: rgb(255, 255, 255);
1062    }
1063    .newsletter_row {
1064        background-color: rgb(0, 102, 153);
1065        color: rgb(255, 255, 255);
1066    }
1067    .newsletter_row input[type="submit"],.newsletter_footer_button {
1068            background-color: rgba(0, 166, 128,0.97);
1069        color: rgb(255, 255, 255);
1070        border-color: rgb(0, 166, 128);
1071    }
1072    .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus {
1073        background-color: rgb(0, 166, 128);
1074        color: rgb(255, 255, 255);
1075    }
1076    .newsletter_button_left {
1077            border-right: 1px solid rgba(255, 255, 255,0.2);
1078    }
1079    .newsletter_button_right {
1080        border-left: 1px solid rgba(255, 255, 255,0.2);
1081    }
1082    .newsletter_row small.help-block {
1083        background: rgb(255, 255, 255);
1084        margin-top: -5px;
1085        float: left;
1086        padding: 8px;
1087        border-radius: 1px;
1088        color: rgb(0, 102, 153);
1089        text-transform: capitalize;
1090    }
1091    .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{
1092        color: rgb(255, 255, 255);
1093    }
1094    @media only screen and (max-width: 767px) {
1095        .newsletter_button_right,.newsletter_button_left{
1096            border: none;
1097            margin: 5px 0;
1098        }
1099    }
1100
1101    /* Font Sizes */
1102
1103    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span {
1104        font-size: 16px;
1105    }
1106    .header .logo {
1107        font-size: 36px;
1108    }
1109    .homepage_title h1, .homepage_settings h1 {
1110		letter-spacing: -1px;
1111        font-size: 80px;
1112					margin-bottom: 20px;
1113				    }
1114    @media only screen and (max-width: 768px) {
1115        .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;}
1116    }	
1117    .homepage_settings h2 {
1118        font-size: 28px;
1119    }
1120
1121    .ui-rangeSlider-bar{
1122        background: rgb(0, 102, 153)!important;
1123    }
1124
1125    
1126    
1127    @media only screen and (max-width: 1024px){
1128        .modal {margin-top: 40px;}
1129    }
1130    @media only screen and (max-width: 768px){
1131        .modal {margin-top: 60px;}
1132    }
1133
1134    /* Calendar Styles */
1135
1136    #cal-slide-content {
1137        color: rgb(85, 85, 85)!important;
1138        background-color: rgb(245, 245, 245)!important;
1139        -webkit-box-shadow: none!important;
1140        box-shadow: none!important;
1141    }
1142    #cal-slide-content a.event-item {
1143        color: rgb(85, 85, 85)!important;
1144        font-weight:bold!important;
1145    }
1146    #cal-slide-content a.event-item small {
1147        display: inline-block;
1148    }
1149    .cal-month-box, .cal-year-box, .cal-week-box {
1150        border: 1px solid rgb(221, 221, 221)!important;
1151    }
1152    .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid {
1153        border-bottom: 1px solid rgb(221, 221, 221)!important;
1154    }
1155    .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] {
1156        border-right: 1px solid rgb(221, 221, 221)!important;
1157    }
1158    .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) {
1159        background-color: rgb(255, 255, 255)!important;
1160    }
1161    .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) {
1162        color: rgb(85, 85, 85)!important;
1163    }
1164    .cal-day-today span[data-cal-date] {
1165        color: rgb(44, 44, 44)!important;
1166    }
1167    .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child {
1168        border: 0!important;
1169    }
1170    .cal-row-head {
1171        background: rgb(245, 245, 245)!important;
1172    }
1173    .day-highlight:hover, .day-highlight {
1174        background-color: rgb(221, 221, 221)!important;
1175    }
1176    .cal-event-list .event.pull-left {
1177        background-color: rgb(44, 44, 44)!important;
1178        opacity: 0.4;
1179        margin-top: 7px!important;
1180    }
1181    .cal-day-today {
1182        background-color: rgb(221, 221, 221)!important;
1183    }
1184    #cal-day-tick {
1185        border: 1px solid rgb(221, 221, 221)!important;
1186        background-color: rgb(221, 221, 221)!important;
1187    }
1188    .cal-day-weekend span[data-cal-date]{
1189        color: rgb(44, 44, 44)!important;
1190    }
1191        .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs {
1192		border-radius: 10px;
1193        background: #151515!important;
1194    }
1195	.img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary  .rsDefault .rsOverflow {
1196		border-radius:0;
1197	}
1198    
1199    #first_container .favorite, #first_container .fa.favorite {
1200        color: rgb(170, 184, 194);
1201        background: rgb(245, 245, 245);
1202        border: 1px solid rgb(245, 245, 245);
1203        white-space:nowrap!important;
1204		height:24px;
1205		padding:0 6px;
1206		border-radius:8px;
1207    }
1208    #first_container .favorite span, #first_container .fa.favorite span {
1209        font-family: 'Cabin';
1210        white-space:nowrap!important;
1211    }
1212    #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) {
1213        color: rgb(226, 38, 77);
1214    }
1215        #first_container .favorite::after, #first_container .fa.favorite::after {
1216        font-family: 'Cabin';
1217        margin-left: 3px;
1218    }
1219    #first_container .favorite span, #first_container .fa.favorite span{
1220        padding-left: 4px;
1221        font-family: 'Cabin';
1222        font-size: 11px;
1223		letter-spacing:.5px;
1224		top:-1px;
1225		position:relative;
1226		font-weight:700;		
1227    }
1228	#first_container .favorite span:empty, #first_container .fa.favorite span:empty {
1229		padding: 0;
1230	}
1231	#first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number {
1232		padding: 1px 0;
1233		border-radius: 100px;
1234		display: inline-block;
1235		font-weight: bold;
1236		min-width: 15px;
1237		font-size: .8em;
1238		vertical-align: bottom;
1239		height: 15px;
1240		line-height: 13px;
1241		margin-left: 3px;
1242		text-align: center;
1243	}
1244    #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number {
1245        background: rgb(226, 38, 77);
1246		color: #fff;
1247    }
1248    
1249    span.checkbox_value::after {
1250        content: ', ';
1251    }
1252
1253    span.checkbox_value:last-child::after {
1254        content: '';
1255    }
1256    
1257    .member_results .grid_element{
1258	position:relative;
1259	overflow:hidden;
1260	display: inline-block;
1261	width:100%;
1262}
1263.member_results .grid_element::before {
1264	position: absolute;
1265	top: 24px;
1266	text-align: center;
1267	width: 200px;
1268	left: -62px;
1269	transform: rotate(-45deg);
1270	-webkit-transform: rotate(-45deg);
1271	z-index: 1;
1272	line-height: 1.2em;
1273	padding: 6px 0;
1274	font-weight: bold;
1275	letter-spacing: 1px;
1276}
1277@media only screen and (max-width: 767px) {
1278	.member_results .grid-container > hr {
1279		border-color: transparent;
1280	}
1281	.member_results .grid_element{
1282		overflow:visible;
1283	}
1284	.member_results .grid_element::before {
1285		top: -19px!important;
1286		transform: rotate(0deg);
1287		-webkit-transform: rotate(0deg);
1288		font-size: 10px !important;
1289		letter-spacing: 0;
1290		width: auto;
1291		padding: 3px 6px;
1292	}
1293}
1294
1295
1296
1297    
1298
1299    /*  Homepage Sections Background Color Logic */
1300
1301    
1302    .homepage-section-1 {
1303        padding: 40px 0 40px;
1304    }
1305
1306    
1307    .homepage-section-1 {
1308        background: rgb(75, 183, 179);
1309    }
1310
1311    
1312    .homepage-section-2 {
1313        padding: 40px 0 40px;
1314    }
1315
1316    
1317    .homepage-section-3 {
1318        padding: 40px 0 40px;
1319    }
1320
1321    
1322    .homepage-section-4 {
1323        padding: 40px 0 40px;
1324    }
1325
1326    
1327    .homepage-section-5 {
1328        padding: 40px 0 40px;
1329    }
1330
1331    
1332    .homepage-section-6 {
1333        padding: 40px 0 40px;
1334    }
1335
1336    
1337    .homepage-section-7 {
1338        padding: 40px 0 40px;
1339    }
1340
1341    
1342    .homepage-section-8 {
1343        padding: 40px 0 40px;
1344    }
1345
1346    
1347    .homepage-section-9 {
1348        padding: 40px 0 40px;
1349    }
1350
1351    
1352    .homepage-section-10 {
1353        padding: 40px 0 40px;
1354    }
1355
1356    
1357    .homepage-section-11 {
1358        padding: 40px 0 40px;
1359    }
1360
1361    
1362    .homepage-section-12 {
1363        padding: 40px 0 40px;
1364    }
1365
1366    
1367    .homepage-section-13 {
1368        padding: 40px 0 40px;
1369    }
1370
1371    
1372    .homepage-section-14 {
1373        padding: 40px 0 40px;
1374    }
1375
1376    
1377    .homepage-section-15 {
1378        padding: 40px 0 40px;
1379    }
1380
1381    
1382    /* Additional Settings */
1383
1384    
1385    /* Streaming Widgets Title Settings */
1386
1387    .streaming-title {
1388        text-align: left;
1389        font-size: 48px;
1390		line-height:1.5em;
1391            font-weight: normal;
1392                font-family: 'Roboto';
1393            padding-bottom: 60px;
1394    }
1395	
1396	@media only screen and (max-width: 990px) {
1397		.streaming-title {
1398			line-height:1.1em;
1399		}
1400	}
1401
1402            .streaming-title + hr {
1403        display: none;
1404    }
1405    
1406    .homepage-join-module .module h2:first-of-type {
1407        color: rgb(62, 62, 62);
1408    }
1409
1410    .homepage-join-module .module{
1411        background: rgb(238, 238, 238);
1412        border-color: rgb(75, 183, 179);
1413    }
1414
1415    .homepage-about-module .module h2:first-of-type {
1416        color: rgb(62, 62, 62);
1417    }
1418
1419    .homepage-about-module .module{
1420        background: rgb(238, 238, 238);
1421        border-color: rgb(75, 183, 179);
1422
1423	}
1424
1425	.the-post-description > :is(h2, h3, h4, h5):not(:first-child) {
1426		font-weight: 600;
1427		margin-top: 20px;
1428	}
1429	
1430	/* Keep: Ensure ul/ol respect padding and margins */
1431	.the-post-description > :is(ul, ol) {
1432		display: flow-root;
1433	}
1434	.the-post-description li {
1435		margin-bottom: 8px;
1436	}
1437
1438        .btn:not(#refcode_submit):not(.input-group-btn .btn):not(.logo-preview-input):not(.cover-preview-input):not(.member_login):not(.img-circle):not(.submit_reply):not(.submit_comment):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top):not(.btn-facebook), .btn-sm:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), .btn-xs:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), button:not(.social_share_buttons button):not(.social_share_buttons a):not(#refcode_submit):not(.input-group-btn button), .btn-group-lg > .btn, .btn-lg, .btn-lg, .btn-xl, .input-group-sm > .input-group-btn > .btn, .favorite, .tags a, select#sid.input-lg, select#tid.input-lg, select#ttid.input-lg, select.combobox.input-lg, select#bd-chained.input-lg, select#category-chained.input-lg, select.infinite-chained.input-lg, select.subcategory-chained.input-lg, select.search-chained.input-lg, select#country-chained.input-lg, select#state-chained.input-lg, select#country-chained-2.input-lg, select#state-chained-2.input-lg, select#profession_id.input-lg, [name^="bd_phone_country_code"].input-lg, select.input-lg, select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-chained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] {
1439            border-radius: 0px!important;
1440        }
1441    
1442        .write_comment_container, .tab-content, .well:not(.well .well):not(.module .well):not(.tab-content .well):not(.well.make-connection):not(.slick-slide .well), .module:not(.module .module):not(.well .module):not(.tab-content .module):not(.search_box .module):not(.posted-by-snippet), .panel, .pic:not(.slick-slide .pic), .member_accounts > .account-form-box {
1443        box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a;
1444    }
1445    
1446    .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 {
1447        border-radius:1000px!important;
1448    }
1449
1450    .img-rounded img, img.fr-dib.img-rounded{
1451        border-radius: 10px!important;
1452    }
1453    
1454    /* Google Translate Module */
1455        .skiptranslate{font-size:0}
1456    .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}
1457    .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important}
1458    .goog-te-gadget .goog-te-combo{margin-bottom:-4px}
1459    .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)}
1460    @media only screen and (max-width: 1100px) {
1461        .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px}
1462        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important}
1463        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px}
1464        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important}
1465        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important}
1466        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px}
1467        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;}
1468    }
1469    @media only screen and (max-width: 767px) {
1470        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important}
1471    }
1472
1473    
1474    
1475</style>
1476
1477    <!-- ON-PAGE CSS FUNCTIONS -->
1478    <style type="text/css">
1479        .search-con {
1480  font-size: 18px;
1481  font-weight: 600px;
1482  color: rgb(255, 255, 255);
1483  
1484}
1485.TopSection {
1486   padding-top: 10px;
1487    border: 3px outset Silver;
1488    background-color: LightSlateGray;
1489    text-align: center;
1490    margin: auto;
1491    display: block !important;
1492    font-size: 20px;
1493}
1494.con-us {
1495  font-size: 18px;
1496  font-weight: 600px;
1497  color: rgb(255, 255, 255);
1498  
1499}
1500.m-t-li {
1501  margin-bottom: 5px;
1502}
1503.footer-mg{
1504    margin-top: 2rem;
1505}
1506
1507
1508/*
1509#hero-divider .btn{
1510    background: transparent;
1511    border-color: #fff;
1512}
1513body, .modal-header, .modal-content, .modal-body, .modal-footer{
1514	line-height: 1.6em;
1515    letter-spacing: 0.5px;
1516}  
1517p{
1518    margin-bottom: 20px !important;
1519}
1520.spacialimg{
1521	border: 3px solid rgb(116, 121, 125);
1522    padding: 7px;
1523    border-radius: 10px;
1524    box-shadow: 0px 1px 8px 2px #707070;
1525    margin-bottom: 10px;
1526}
1527.feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary {
1528    border: 3px solid rgb(116, 121, 125);
1529    padding: 7px;
1530    border-radius: 10px;
1531    box-shadow: 0px 0px 5px 0px #707070;
1532    margin-bottom: 10px;
1533}
1534.search_result.member-level-4 .mid_section a.h3{
1535  border-bottom: 1px solid #ddd;
1536  display: block;
1537  padding-bottom: 10px;
1538  margin-top: 5%;
1539}
1540.search_result.member-level-4 .mid_section{
1541  padding-left:4%;
1542}
1543.footer{
1544  padding:0px;
1545}
1546.footer_menu li{
1547  display:none;
1548}
1549.footer_menu li.col-md-12:last-child,.footer_menu li.col-md-12:last-child li{
1550  display:inline-block;
1551}
1552.footer_menu ul{
1553  margin-bottom: 0px;
1554}
1555.homepage_steps .fa {
1556    font-size: 35px;
1557}
1558.homepage_steps {
1559    font-size: 15px;
1560  padding: 60px 0;
1561}
1562.clearfix-lg {
1563  display:none;
1564}
1565.homepage-section-2, .homepage-section-3, .homepage-section-4{
1566  padding: 60px 0;
1567}
1568.recent-member img.img-rounded{
1569  border-radius:0!important;
1570}
1571.visit-westminster-quote{
1572    padding: 50px 0;
1573    font-size: 34px;
1574    line-height: normal;
1575}
1576.visit-westminster-section2 {
1577    background: #FCF8ED;
1578    display: inline-block;
1579    width: 100%;
1580}
1581.visit-westminster-section2 h2 {
1582    text-align: center;
1583    margin-top: 50px;
1584    color: #bc9b5d;
1585    font-size: 60px;
1586}
1587.visit-westminster-section2 h5 {
1588    text-align: center;
1589    font-size: 16px;
1590    color: #3983BD;
1591    margin-bottom: 20px;
1592}
1593.recent-member .well a.h4{
1594  color:rgb(41,41,41);
1595}
1596.shopping-section-common img{
1597  width:100%;
1598}
1599.shopping-section-common h2{
1600    margin-top: 50px;
1601    text-align: center;
1602}
1603.shopping-section-common h4 {
1604    text-align: center;
1605    font-size: 15px;
1606    text-transform: uppercase;
1607    margin-bottom: 20px;
1608}
1609.shopping-section-common {
1610    display: inline-block;
1611    width: 100%;
1612}
1613.tourist-info-section2 .col-md-4.text-right img{
1614  height:571px;
1615}
1616.stay-carousel {
1617    height: 400px;
1618    margin: 0 auto;
1619    overflow: hidden;
1620  	max-width: 700px;
1621  width:100%;
1622  margin-bottom:20px;
1623}
1624.stay-carousel .item img{
1625  width:100%;
1626}
1627.about-section-common {
1628    display: inline-block;
1629    width: 100%;
1630}
1631.about-section1, .about-section3 {
1632    background: #EAF4F6;
1633}
1634
1635
1636
1637
1638about-section1 img{
1639  width:100%;
1640}
1641.about-section3-bck {
1642    background: url(/images/about2.webp);
1643    background-repeat: repeat;
1644    background-size: auto;
1645    background-position: center center;
1646    height:900px;
1647  	margin-bottom: 50px;
1648}
1649.board-directors-section-common {
1650    display: inline-block;
1651    width: 100%;
1652    margin-top: 20px;
1653}
1654.board-directors-section-common p span {
1655    display: inline-block;
1656    width: 100%;
1657}
1658.board-directors-section-common .col-md-12 {
1659    max-width: 768px;
1660    margin: 10px auto;
1661    position: relative;
1662    float: none;
1663  width:100%;
1664}
1665.city-council-section-common {
1666    display: inline-block;
1667    width: 100%;
1668    padding: 40px 0;
1669}
1670.city-directory-section-common{
1671   display: inline-block;
1672    width: 100%;
1673    padding: 40px 0;
1674}
1675.city-directory-bottom-section{
1676  margin-top: 40px;
1677}
1678.city-directory-section-common span{
1679   display: inline-block;
1680    width: 100%;
1681}
1682.city-directory-section-common h3 {
1683    margin-top: 25px;
1684  display: inline-block;
1685width: 100%;
1686}
1687.city-council-section-common span{
1688  display: inline-block;
1689width: 100%;
1690}
1691.member-directory .col-md-3{
1692  margin-bottom: 10px;
1693}
1694
1695
1696.fr-view .fr-img-caption .fr-img-wrap .custom-img{
1697  
1698  width: 60%;
1699}
1700
1701
1702@media only screen and (max-width: 767px) {
1703  #website_logo{
1704  	margin-top:20px;
1705	}
1706
1707  .fr-view table{
1708    text-align: center;
1709  }
1710  
1711  .fr-view .froala-table .second-row{
1712    display: flex;
1713    flex-direction: column-reverse;
1714	
1715    
1716  }
1717  
1718  .header .navbar-default{
1719	
1720	background-color: #F2F2F2;
1721}
1722
1723  .footer{
1724    background-color: #3A3A3A;
1725
1726  }
1727 
1728}
1729*/
1730.container.d-flex.main-class {
1731    margin-top: -20px;
1732    margin-left: -20px;
1733}
1734/*@media only screen and (max-width: 705px) {
1735 .card {
1736    width: 30px;
1737}
1738}*/
1739/*@media only screen and (max-width: 470px) {
1740 .card {
1741   padding-top: 3px;
1742}
1743}*/
1744@media only screen and (min-width: 650px) {
1745img.card-icons {
1746    min-width: 50px;
1747}
1748}
1749@media only screen and (max-width: 649px) {
1750img.card-icons {
1751    min-width: 30px;
1752}
1753}
1754.col-md-6.col-sm-6.col-xs-6.d-flex.justify-content-end {
1755    display: flex;
1756}
1757@media only screen and (max-width: 370px) {
1758.card {
1759    margin-left: -30px;
1760}
1761}    </style>
1762    <!-- Best of Westminster 2026 voting banner - added 2026-07-15 -->
1763<style>
1764@keyframes bow2026-nudge { 0%,100% { transform: translateX(0); } 50% { transform: translateX(7px); } }
1765#bow2026-banner .bow2026-finger { display:inline-block; animation: bow2026-nudge 1s ease-in-out infinite; vertical-align:middle; font-size:20px; margin:0 4px 0 10px; }
1766@media (prefers-reduced-motion: reduce) { #bow2026-banner .bow2026-finger { animation: none; } }
1767#bow2026-banner { position: -webkit-sticky; position: sticky; top: 0; }
1768.bow2026-menu-close { display: none !important; }
1769@media only screen and (max-width: 1100px) {
1770  html { background: #ffffff; }
1771  #bow2026-banner { position: fixed; top: 0; left: 0; right: 0; z-index: 3001; }
1772  .header nav.navbar-default { top: var(--bow2026-h, 42px); background: transparent; border: none; box-shadow: none; }
1773  .header nav.navbar-default .navbar-header { position: relative; z-index: 99999; }
1774  .header nav.navbar-default .navbar-toggle { background-color: #1e5c63; border-color: rgba(255,255,255,0.55); margin-right: 10px; position: relative; z-index: 99999; }
1775  .header nav.navbar-default .navbar-toggle .icon-bar { background-color: #ffffff; }
1776  .header nav.navbar-default .navbar-collapse { background-color: #1e5c63; border: none; }
1777  .header { margin-top: calc(50px + var(--bow2026-h, 42px)); }
1778  .mobile-main-menu { top: calc(var(--bow2026-h, 42px) + 50px) !important; height: calc(100vh - var(--bow2026-h, 42px) - 50px) !important; }
1779  .bow2026-menu-close { display: block !important; background: rgba(0,0,0,0.28) !important; border-bottom: 1px solid rgba(255,255,255,0.35); position: relative; min-height: 44px; }
1780  .bow2026-menu-close::before { content: "✕  Close Menu"; color: #ffffff; font-weight: bold; display: inline-block; padding: 12px 0 12px 10px; }
1781  .bow2026-menu-close a { position: absolute !important; top: 0; left: 0; width: 100% !important; height: 100%; padding: 0 !important; float: none !important; margin: 0 !important; }
1782}
1783</style>
1784<div id="bow2026-banner" style="background:#1e5c63;color:#ffffff;text-align:center;padding:10px 14px;font-size:15px;line-height:1.6;z-index:9999;">
1785  <span style="vertical-align:middle;">🏆 <strong>Best of Westminster 2026</strong> — Help your favorite local businesses win!</span><span class="bow2026-finger">👉</span><a href="https://www.surveymonkey.com/r/BestofWestminster2026" target="_blank" rel="noopener" style="display:inline-block;background:#e8262c;color:#ffffff;font-weight:bold;text-decoration:none;padding:4px 18px;border-radius:4px;vertical-align:middle;white-space:nowrap;">Vote Now</a>
1786</div>
1787<script>
1788(function(){
1789  function bowSize(){ var b=document.getElementById("bow2026-banner"); if(!b) return;
1790    document.documentElement.style.setProperty("--bow2026-h", b.offsetHeight+"px"); }
1791  function bowClose(){
1792    var lists=document.querySelectorAll(".header .mobile-main-menu ul.sidebar-nav, .header nav.navbar-default .navbar-collapse ul.navbar-nav");
1793    for(var i=0;i<lists.length;i++){
1794      var ul=lists[i];
1795      var li=ul.querySelector(".bow2026-menu-close");
1796      if(!li){
1797        li=document.createElement("li");
1798        li.className="bow2026-menu-close";
1799        var a=document.createElement("a");
1800        a.href="#"; a.setAttribute("aria-label","Close Menu");
1801        li.appendChild(a);
1802        var cf=document.createElement("div"); cf.className="clearfix"; li.appendChild(cf);
1803      }
1804      if(ul.firstElementChild!==li){ ul.insertBefore(li, ul.firstChild); }
1805      li.style.setProperty("display","block","important");
1806      var la=li.querySelector("a");
1807      if(la){ if(la.firstChild){ la.textContent=""; } la.style.setProperty("display","block","important"); }
1808      var homeA=ul.querySelector('a[href="/home"]');
1809      if(homeA){
1810        homeA.style.setProperty("display","inline-block","important");
1811        if(homeA.parentElement && homeA.parentElement.tagName==="LI"){ homeA.parentElement.style.setProperty("display","block","important"); }
1812      }
1813      var kids=ul.children;
1814      for(var k=0;k<kids.length;k++){
1815        if(kids[k]!==li && kids[k].style && kids[k].style.display==="none"){ kids[k].style.setProperty("display","block","important"); }
1816      }
1817    }
1818  }
1819  function bowInit(){ bowSize(); bowClose(); }
1820  window.addEventListener("resize", bowSize);
1821  window.addEventListener("load", bowInit);
1822  setTimeout(bowInit, 2000);
1823  document.addEventListener("click", function(e){ if(e.target && e.target.closest && e.target.closest(".navbar-toggle")){ setTimeout(bowClose, 400); } });
1824  /* bow2026-delegated */
1825  document.addEventListener("click", function(e){ var c=(e.target && e.target.closest) ? e.target.closest(".bow2026-menu-close") : null; if(c){ e.preventDefault(); var t=document.querySelector(".header nav.navbar-default .navbar-toggle"); if(t){ t.click(); } } }, true);
1826  document.addEventListener("DOMContentLoaded", bowInit);
1827  bowInit();
1828})();
1829</script>
1829
1830<!-- End Best of Westminster 2026 banner -->
1831<div class="header">
1832            <div class="container">
1833			<div class="row header-main-row">
1834				<style type='text/css'> .logo-text:has(.logo_title:empty) {
1835	display:none
1836} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container">
1837			<a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.westminsterchamber.org" title="Westminster Chamber of Commerce">
1838			<img width="450" height="65" src="/images/Logo/change-logo.png" alt="Westminster Chamber of Commerce">
1839		</a>
1840		<div class="clearfix"></div>
1841</div>
1842									<style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query {
1843	background-color: white !important;
1844}
1845.mini-nav:not(:has(li)) {
1846	display: none!important;
1847}
1848/* Parent Container - Main List */
1849.mini-nav li:has(ul) {
1850	position: relative;
1851	border-radius: 8px 8px 0 0;
1852}
1853.mini-nav > li:has(ul) {
1854	padding-left: 0;
1855	padding-right: 0;
1856	background: rgb(255, 255, 255);
1857}
1858.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span {
1859	padding: 10px 15px;
1860	margin: 0!important;
1861}
1862.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) {
1863	box-shadow: 0 -1px 3px rgba(118, 118, 118,0.25);
1864}
1865/* Parent Links */
1866.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) {
1867	display:inline-block;
1868	border-radius: 8px 8px 0 0;
1869}
1870.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span {
1871	background: rgb(255, 255, 255);
1872	display: inline-block;
1873	position: relative;
1874	z-index: 1000;
1875}
1876/* First Level Dropdowns */
1877.mini-nav li ul {
1878	background: rgb(255, 255, 255);
1879	box-shadow: 0 0px 3px rgba(118, 118, 118,0.25), 0 5px 5px 5px rgba(118, 118, 118,0.05);
1880	text-align: left;
1881	display: none;
1882	border-radius: 0 8px 8px 8px;
1883	list-style: none;
1884	padding: 10px;
1885	position: absolute;
1886	white-space: nowrap;
1887	min-width: 130%;
1888	width: auto;
1889	top: 100%;
1890	left: 0;
1891	z-index: 999;
1892	margin-top: -1px;
1893}
1894.mini-nav li:hover > ul {
1895	display: block;
1896}
1897/* First Level Dropdown Items */
1898.mini-nav li ul li {
1899	position: relative;
1900	display: block;
1901	width: 100%;
1902}
1903.mini-nav li ul li a, .mini-nav li ul li span {
1904	font-size: 12.95px !important;
1905	display: block;
1906	font-weight: 400;
1907	padding: 8px 12px;
1908	border-radius: 8px;
1909	text-decoration: none;
1910	width: 100%;
1911}
1912.mini-nav li ul li a:hover, .mini-nav li ul li span:hover {
1913	box-shadow: 0 0 0 25px rgba(118, 118, 118,0.05) inset;
1914}
1915/* Second Level Dropdowns */
1916.mini-nav li ul li ul {
1917	display: none;
1918	position: absolute;
1919	top: 0;
1920	left: 100%;
1921	margin: 0;
1922	border-radius: 8px;
1923}
1924.mini-nav li ul li:hover > ul {
1925	display: block;
1926}
1927/* Edge Positioning - Last Child Dropdowns */
1928.mini-nav > li:last-child ul {
1929	right: 0;
1930	left: auto;
1931	border-radius: 8px 0 8px 8px;
1932}
1933.mini-nav > li:last-child ul li ul {
1934	right: 100%;
1935	left: auto;
1936}
1937/* Flex Spacing Utility */
1938.mini-nav.mini-nav-flex-spaced {
1939	display: flex;
1940	justify-content: space-between;
1941	align-items: center;
1942	flex-wrap: wrap;
1943	row-gap: 0;
1944}
1945.mini-nav.mini-nav-flex-spaced > li {
1946	flex: none;
1947	padding: 0;
1948	margin: 2px 0;
1949	order: 2;
1950}
1951.mini-nav.mini-nav-flex-spaced > li.header-member-account-links,
1952.mini-nav:has(li ul) > li.header-member-account-links {
1953	order: 1;
1954	margin-left: auto;
1955	width: 100%;
1956	margin-bottom: 10px;
1957}
1958.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li {
1959	line-height: 1em;
1960	min-height: 0;
1961}
1962@media (min-width: 992px) {
1963	.header-main-row {
1964		display: flex;
1965		align-items: center;
1966		flex-wrap: wrap;
1967	}
1968}
1969@media (max-width: 991px) {
1970	.mini-nav.mini-nav-flex-spaced {
1971		justify-content: center;
1972	}
1973	.mini-nav.mini-nav-flex-spaced > li {
1974		margin-left: 5px !important;
1975		margin-right: 5px !important;
1976	}
1977} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad">
1978            <ul class="mini-nav  nobmargin list-inline xs-nopad xs-tmargin tpad">
1979            <li class='bmargin xs-nomargin'><span id='link340'  class='bmargin'> 714-898-9648</span></li><li class='bmargin xs-nomargin'><a href='/about/contact' id='link341'  class='hpad bmargin'>Contact Us</a></li><li class='bmargin xs-nomargin'><a href='/login' id='link342'  class='rpad bmargin'>Member Login</a></li><li class='bmargin norpad xs-nopad xs-vmargin'><a href='/join' id='link343'  class='btn btn_get_listed bold'>Get your business Listed Today</a></li>        </ul>
1980            <div class="clearfix"></div>
1981                <form action="/search_results" name="frm1" class="form-inline website-search">
1982                                    <div class="input-group input-group-sm bmargin sm-autosuggest">
1983                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
1984                        <input type="text"
1985                               placeholder="Name or Keyword" value="" name="q"
1986                               class="member_search form-control input-sm" autocomplete="off">
1987                    </div>
1988                                    <input type="submit" value="Search" class="btn btn-sm btn_search bmargin xs-btn-block bold">
1989            </form>
1990            </div>
1991				            </div>
1992        </div>
1993        <style type='text/css'> .mobile-main-menu .hasChildren span a {
1994	padding: 0px;
1995}
1996
1997.user_sidebar > img {
1998	width: 32px;
1999	height: 32px;
2000	position: absolute;
2001	z-index: 10;
2002	border-radius: 100px;
2003	top: -1px;
2004	object-fit: cover;
2005	left: -10px;
2006	background: rgb(245, 245, 245);
2007}
2008#member_sidebar_toggle img+.fa {
2009	display: none;
2010}
2011.main_menu, .user_sidebar, .compact-mobile-search {
2012	padding: 5px 8px;
2013	margin-right:0;
2014	min-height: 33.0333px;
2015	min-width: 38.116px;	
2016}
2017.main_menu i, .user_sidebar i {
2018	font-size: 16px;
2019}
2020.navbar-nav li {
2021	float: none!Important;
2022}
2023.navbar-default{
2024	-webkit-transition: all .6s ease-in-out;
2025	-moz-transition: all .6s ease-in-out;
2026	-o-transition: all .6s ease-in-out;
2027	transition: all .6s ease-in-out;
2028}
2029.transparent_menu {
2030		background-color: rgba(71, 134, 141,0.95)!important;
2031}
2032@media only screen and (max-width: 991px) {
2033	#popover {display: none}
2034}
2035@media only screen and (max-width: 1100px){
2036	.mobile-main-menu{display:block!important}
2037	.navbar-toggle {display: block}
2038	#bs-main_menu .nav {display: none!important}
2039}
2040.mobile-main-menu {
2041	position: fixed;
2042	height: calc(100% - 50px)!important;
2043	width: 250px;
2044	background: rgb(71, 134, 141);
2045	z-index: 99999;
2046	right: -250px;
2047	top: 50px;
2048	display: none;
2049	-webkit-transition: all .6s ease-in-out;
2050	-moz-transition: all .6s ease-in-out;
2051	-o-transition: all .6s ease-in-out;
2052	transition: all .6s ease-in-out;
2053	overflow-y: auto!important;
2054	overflow-x: hidden!important;
2055}
2056.mobile-main-menu ul li i {
2057	color: rgb(255, 255, 255);
2058	cursor: pointer;
2059	float: right;
2060	padding: 13px;
2061}
2062.mobile-main-menu.opened{
2063	right: 0px!important;
2064}
2065.mobile-main-menu ul li a, .mobile-main-menu ul li span {
2066	display: inline-block;
2067	float: left;
2068	-webkit-touch-callout: none;
2069	-webkit-user-select: none;
2070	-khtml-user-select: none;
2071	-moz-user-select: none;
2072	-ms-user-select: none;
2073	user-select: none;
2074	padding: 10px 0px;
2075	width: 80%;
2076	width: calc(100% - 40px);
2077}
2078.mobile-main-menu .sidebar-nav li ul {
2079	height: 0px;
2080	overflow: hidden;
2081	list-style: none;
2082	color: rgb(255, 255, 255);
2083	padding-left: 10px;
2084}
2085.mobile-main-menu .sidebar-nav li.sub_open > ul{
2086	height: 100%;
2087}
2088.mobile-main-menu ul.sidebar-nav {
2089	position: absolute;
2090	width: 250px;
2091	margin: 0;
2092	padding: 0;
2093	list-style: none;
2094	font-size: 14px;
2095}
2096.mobile-main-menu .sidebar-nav > li {
2097	display: block;
2098	line-height: 20px;
2099	padding: 0 15px 0 20px;
2100}
2101.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span {
2102	text-decoration: none;
2103	color: rgb(255, 255, 255);
2104	padding-left:10px;
2105}
2106.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i {
2107	display: none;
2108}
2109
2110 </style><div class="mobile-main-menu">
2111	<ul class="sidebar-nav">
2112		<li class=''><a href='/home' id='link344'>
2112Home</a></li><li class=''><a href='/the-chamber' id='link320'>The Chamber</a><ul><li class=''><a href='/about' id='link356'>About the Chamber</a></li><li class=''><a href='/board-of-directors' id='link357'>Chamber Board Of Directors</a></li><li class=''><a href='/join' id='link358'>Join The Chamber</a></li></ul></li><li class=''><a href='/the-city' id='link345'>The City</a><ul><li class=''><a href='/visit-westminster' id='link346'>Visit Westminster</a><ul><li class=''><a href='/stay' id='link352'>Stay</a></li><li class=''><a href='/dine' id='link353'>Dine</a></li><li class=''><a href='/shopping' id='link354'>Shop</a></li><li class=''><a href='/search_results' id='link355'>Business Directory</a></li></ul></li><li class=''><a href='/' id='link347'>Live in Westminster</a></li><li class=''><a href='/jobs' id='link348'>Work in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/business' id='link349'>Start a Business in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/' id='link350'  target='_blank'>City Website</a></li><li class=''><a href='https://www.westminster-ca.gov/government/mayor-and-city-council-members' id='link351'>City Council</a></li></ul></li><li class=''><a href='/search_results' id='link339'>Business Directory</a></li><li class=''><a href='/events-news' id='link334'>Events & News</a><ul><li class=''><a href='/events' id='link335'>Chamber Events</a></li><li class=''><a href='/events-calendar' id='link336'>Calendar</a></li><li class=''><a href='/news' id='link337'>Member News</a></li></ul></li><li class=''><a href='/about/contact' id='link338'>Contact Us</a></li>	</ul>
2113</div>
2114<nav class="navbar navbar-default ">
2115	<div class="container container-fluid">
2116
2117		<div class="navbar-header">
2118						<button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu">
2119								<i class="fa fa-bars fa-fw"></i>
2120							</button>
2121
2122			
2123			
2124		</div>
2125
2126
2127		<div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu">
2128			<ul class="tablet-menu-ul nav navbar-nav nav-justified">
2129				<li class=''><a href='/home' id='link344'>Home</a></li><li class=''><a href='/the-chamber' id='link320'>The Chamber</a><ul><li class=''><a href='/about' id='link356'>About the Chamber</a></li><li class=''><a href='/board-of-directors' id='link357'>Chamber Board Of Directors</a></li><li class=''><a href='/join' id='link358'>Join The Chamber</a></li></ul></li><li class=''><a href='/the-city' id='link345'>The City</a><ul><li class=''><a href='/visit-westminster' id='link346'>Visit Westminster</a><ul><li class=''><a href='/stay' id='link352'>Stay</a></li><li class=''><a href='/dine' id='link353'>Dine</a></li><li class=''><a href='/shopping' id='link354'>Shop</a></li><li class=''><a href='/search_results' id='link355'>Business Directory</a></li></ul></li><li class=''><a href='/' id='link347'>Live in Westminster</a></li><li class=''><a href='/jobs' id='link348'>Work in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/business' id='link349'>Start a Business in Westminster</a></li><li class=''><a href='https://www.westminster-ca.gov/' id='link350'  target='_blank'>City Website</a></li><li class=''><a href='https://www.westminster-ca.gov/government/mayor-and-city-council-members' id='link351'>City Council</a></li></ul></li><li class=''><a href='/search_results' id='link339'>Business Directory</a></li><li class=''><a href='/events-news' id='link334'>Events & News</a><ul><li class=''><a href='/events' id='link335'>Chamber Events</a></li><li class=''><a href='/events-calendar' id='link336'>Calendar</a></li><li class=''><a href='/news' id='link337'>Member News</a></li></ul></li><li class=''><a href='/about/contact' id='link338'>Contact Us</a></li>			</ul>
2130		</div>
2131	</div>
2132</nav>
2133<!--CSS IF MENU IS FIXED TOP-->
2134
2135</div>
2136<div class="clearfix"></div>
2137<!-- Begin  Content -->
2138<div id="first_container" class="content-container fr-view home-sec">
2139        <div class="container">
2140                        <div class="clearfix body-content"></div>
2141        <style type='text/css'> div#map-bounds {
2142	width: 100%;
2143	height: 600px;
2144	display: block;
2145}
2146.gsc-control-cse.gsc-control-cse-en {
2147	border-radius: 4px;
2148	margin-top: 20px;
2149	padding-top: 0;
2150}
2151.mid_section .btn-sm.btn-block {
2152	width:auto;
2153	display:inline-block
2154}
2155.tab-content #results > div > hr {   
2156	display: none; 
2157} </style>            <div class="clearfix"></div>
2158                <div class="row content_w_sidebar member_results">
2159            
2160                    <div class='col-md-9 main-container'><style type='text/css'> .views {
2161    margin-top: -1px!important;
2162}
2163.member-search-result-filters + .clearfix + div > hr {   
2164	margin-top: 10px; 
2165}
2166@media only screen and (max-width: 767px) {
2167    .member_results .sort-members-select, .member_results .overall_rating_filter {
2168        float: left;
2169        width: 150px;
2170    }
2171} </style>
2172    <div class="col-xs-12 col-sm-4 fpad-sm nohpad member-search-result-count-container">
2173        Showing 1        - <span class="current__amount__js">9</span> of
2174
2175        <span class="total__js">157</span> Results
2176            </div>
2177    <div class="col-xs-12 col-sm-8 nopad text-right bmargin member-search-result-filters">
2178        <div class="form-inline">
2179                        <div class="form-group sort-members-select">
2180                <select class="form-control pull-right input-sm" name=sort
2181                        onchange="window.location='/search_results?sort='+this.value;" id="sortbox">
2182                    <option value="" selected>Sort Results
2183                    </option>
2184
2185                                            <option value="reviews" >
2186                            Sort by Most Reviews
2187                        </option>
2188                                            <option value="name ASC" >
2189                            Sort by Name A-Z
2190                        </option>
2191                                            <option value="name DESC" >
2192                            Sort by Name Z-A
2193                        </option>
2194                                            <option value="last_name_asc" >
2195                            Sort By Last Name A-Z
2196                        </option>
2197                                            <option value="last_name_desc" >
2198                            Sort By Last Name Z-A
2199                        </option>
2200                                    </select>
2201            </div>
2202            <div class="form-group">
2203                <style type='text/css'> 	.gridBreak {
2204		display:block!important;
2205		border: 0;
2206		margin: 0;
2207	}
2208	
2209.search_result.grid {
2210	display: grid;
2211}
2212.views > i {
2213	font-size: 18px;
2214	margin-left: 5px;
2215	border-radius: 4px;
2216	cursor: pointer;
2217	width: 30px;
2218	height: 30px;
2219	line-height: 30px;
2220	display: inline-flex;
2221	align-items: center;
2222	justify-content: center;
2223	text-align: center;
2224	vertical-align: top;
2225	transition: all 100ms linear 0ms;
2226}
2227a.gridA {
2228	font-size: 18px;
2229	text-align: center;
2230	margin: 10px 0;
2231	display: block;
2232}
2233.grid .favorite::after, .grid p + .clearfix.fpad-sm, .grid .clearfix.fpad-sm + .clearfix.fpad-sm, .map_container, .views .mapView, .grid .member-search-full-name::after {
2234	display:none;
2235}
2236.visible-lg {
2237	word-wrap: break-word;
2238}
2239.grid .post-location-snippet b + span {
2240	display: block;
2241}
2242@media only screen and (max-width: 767px) {
2243	.member_results .sort-members-select, .member_results .overall_rating_filter {
2244		float: left;
2245		width: 150px;
2246	}
2247} </style>    <div class='views pull-right '>
2248                    <i class='fa fa-th-list activeView listView'></i>
2249                            <i class='fa fa-th js-click gridView hidden-xs'></i>
2250                            <i class="fa fa-map-marker mapView"></i>
2251            </div>
2252            </div>
2253        </div>
2254        <div class="clearfix"></div>
2255    </div>
2256    <div class="clearfix"></div>
2257
2258    <div class="member_results_header">
2259        <h1 class="bold nomargin">Westminster California Businesses  Results</h1>
2260            </div>
2261                <div itemscope itemtype="https://schema.org/CollectionPage" itemid="https://www.westminsterchamber.org/search_results#entity">
2262                    <meta itemprop="name" content="Westminster California Businesses - Find & Compare Westminster California Business Professionals">
2263                    <meta itemprop="headline" content="Westminster California Businesses  Results">
2264                    <meta itemprop="description" content="Search our Westminster California Business database and connect with top rated Westminster California Businesses.">
2265										<link itemprop="primaryImageOfPage" href="/images/Logo/change-logo.png">
2266															<meta itemprop="keywords" content="Westminster California Businesses  Results, Westminster Chamber of Commerce, Westminster California Businesses">
2267										<meta itemprop="inLanguage" content="en-US">
2268					<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2269					<meta itemprop="mainEntityOfPage" content="https://www.westminsterchamber.org/search_results#page">
2270					<meta itemprop="dateModified" content="2026-09-01T00:00:00-07:00">
2271					<meta itemprop="lastReviewed" content="2026-09-01T00:00:00-07:00">
2272					<meta itemprop="copyrightYear" content="2026">
2273					<link itemprop="copyrightHolder" href="https://www.westminsterchamber.org/#organization">
2274					<link itemprop="reviewedBy" href="https://www.westminsterchamber.org/#organization">
2275					<link itemprop="isPartOf" href="https://www.westminsterchamber.org/#website">
2276					<link itemprop="publisher" href="https://www.westminsterchamber.org/#organization">
2277										                    <div itemprop="mainEntity" itemscope itemtype="https://schema.org/ItemList" itemid="https://www.westminsterchamber.org/search_results#itemlist">
2278                        <meta itemprop="name" content="Westminster California Businesses  Results">
2279                        <link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2280                        <meta itemprop="description" content="Search our Westminster California Business database and connect with top rated Westminster California Businesses.">
2281                        <meta itemprop="mainEntityOfPage" content="https://www.westminsterchamber.org/search_results#page">
2282                        <meta itemprop="itemListOrder" content="http://schema.org/ItemListOrderAscending">
2283                                                <meta itemprop="numberOfItems" content="9">
2284                                                <hr>
2285<div class="grid-container"><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2286	<meta itemprop="name" content="C2Thrive Local Marketing - C2Thrive LLC">
2287	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2288	<meta itemprop="position" content="1">
2289		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc#entity">
2290		<meta itemprop="name" content="C2Thrive Local Marketing - C2Thrive LLC">
2291		<link itemprop="url" href="https://www.westminsterchamber.org/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc">
2292		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-664-491-photo.jpg">
2293		<meta itemprop="priceRange" content="$$">
2294		<meta itemprop="telephone" content="714278-7827">
2295				<meta itemprop="description" content="C2Thrive Local Marketing helps local businesses grow with website design, SEO, Google listings, email &amp; SMS marketing, review management, and local advertising campaigns.">
2296				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2297			<meta itemprop="streetAddress" content="N/A">
2298			<meta itemprop="addressLocality" content="Westminster">
2299			<meta itemprop="addressRegion" content="CA">
2300			<meta itemprop="postalCode" content="92683">
2301			<meta itemprop="addressCountry" content="US">
2302		</div>
2303				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2304			<meta itemprop="latitude" content="33.75917570">
2305			<meta itemprop="longitude" content="-117.98970580">
2306		</div>
2307				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc#page">
2308	</div>
2309    <div class="grid_element">
2310        <div class="img_section col-xs-2 nopad">
2311            <a title="C2Thrive Local Marketing - C2Thrive LLC - Westminster California Businesses" href="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc">
2312								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="C2Thrive Local Marketing - C2Thrive LLC" src="https://www.westminsterchamber.org/logos/profile/limage-664-491-photo.jpg" />
2313				   
2314            </a>
2315        </div>
2316        <div class="mid_section col-xs-10 col-sm-7 norpad">
2317            <span class="postItem" data-userid="664" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="C2Thrive Local Marketing - C2Thrive LLC" href="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc">
2318                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2319                    C2Thrive Local Marketing - C2Thrive LLC                </span>
2320                            </a>
2321			<div class="clearfix fpad-sm nobpad"></div>
2322						<div class="clearfix fpad-sm nobpad"></div>
2323						
2324                        				
2325				<p class="small nomargin member-search-description">
2326					C2Thrive Local Marketing helps local businesses grow with website design, SEO, Google listings, email & SMS marketing, review management, and local advertising campaigns.				</p>
2327                            <div class="clearfix fpad-sm nobpad"></div>
2328                <span class="member-search-location rmargin">
2329                <i class="fa fa-map-marker text-danger"></i>
2330					<small>
2331						Westminster, California, <span class="inline-block">92683</span>, <span class=inline-block>United States</span></small></span>        </div>
2332        <div class="info_section hidden-xs col-sm-3 norpad">
2333            <div class="module nomargin fpad-md text-center">
2334                <a href="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc">
2335	<img alt="C2Thrive Local Marketing - C2Thrive LLC" src="/images/badges/search_badge_wcc.png" />
2336</a>
2337<div class="clearfix bpad"></div>
2338				<a 
2339				title="View Listing - C2Thrive Local Marketing - C2Thrive LLC" 
2340				aria-label="View Listing - C2Thrive Local Marketing - C2Thrive LLC" 
2341				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2342				href="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc">View Listing</a>
2343								<div class="clearfix fpad-sm nobpad"></div>
2344				<a 
2345				title="Send Message - C2Thrive Local Marketing - C2Thrive LLC" 
2346				aria-label="Send Message - C2Thrive Local Marketing - C2Thrive LLC" 
2347				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2348				href="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc/connect">Send Message</a>
2349				<div class="clearfix"></div>
2350                	<div class="clearfix fpad-sm nobpad"></div>
2351    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2352		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="664" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2353			<i class="fa fa-phone fa-fw"></i> 
2354			Show Phone Number
2355		</div>
2356        <div class="hide myphoneHide">
2357          <a href="tel:7142787827"><span class="text-secondary">Call: <u>(714) 278-7827</u></span></a>        </div>
2358    </span>
2359              </div>
2360        </div>
2361		<div class="clearfix"></div>
2362    </div>
2363</div>
2364<div class="clearfix"></div>
2365<hr>
2366<span class="google-pin-location" id="google-pin" data-token="664"data-hideMessages="0" data-lat="33.75917570" data-lng="-117.98970580" data-name="C2Thrive Local Marketing - C2Thrive LLC" data-filename="/united-states/westminster/advertising-media/c2thrive-local-marketing-c2thrive-llc" data-photo="/logos/profile/limage-664-491-photo.jpg" data-phone="(714) 278-7827" data-addon="1"></span><div class="row-fluid member_results level_8 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2367	<meta itemprop="name" content="Cirque Du Soleil">
2368	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2369	<meta itemprop="position" content="2">
2370		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/arts-culture-entertainment/cirque-du-soleil#entity">
2371		<meta itemprop="name" content="Cirque Du Soleil">
2372		<link itemprop="url" href="https://www.westminsterchamber.org/arts-culture-entertainment/cirque-du-soleil">
2373		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-531-131-photo.jpg">
2374		<meta itemprop="priceRange" content="$$">
2375		<meta itemprop="telephone" content="702-850-5211">
2376				<meta itemprop="description" content=" Cirque du Soleil Entertainment Group is a world leader in live entertainment. Since its inception in 1984, more than 378 million people around the world have been inspired">
2377				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2378			<meta itemprop="streetAddress" content="N/A">
2379			<meta itemprop="addressLocality" content="N/A">
2380			<meta itemprop="addressRegion" content="N/A">
2381			<meta itemprop="postalCode" content="N/A">
2382			<meta itemprop="addressCountry" content="US">
2383		</div>
2384				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/arts-culture-entertainment/cirque-du-soleil#page">
2385	</div>
2386    <div class="grid_element">
2387        <div class="img_section col-xs-2 nopad">
2388            <a title="Cirque Du Soleil - Westminster California Businesses" href="/arts-culture-entertainment/cirque-du-soleil">
2389								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Cirque Du Soleil" src="https://www.westminsterchamber.org/logos/profile/limage-531-131-photo.jpg" />
2390				   
2391            </a>
2392        </div>
2393        <div class="mid_section col-xs-10 col-sm-7 norpad">
2394            <span class="postItem" data-userid="531" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="Claimable Listing"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Cirque Du Soleil" href="/arts-culture-entertainment/cirque-du-soleil">
2395                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2396                    Cirque Du Soleil                </span>
2397                            </a>
2398			<div class="clearfix fpad-sm nobpad"></div>
2399						<div class="clearfix fpad-sm nobpad"></div>
2400						
2401                        				<p class="small nomargin member-search-description">
2402					 Cirque du Soleil Entertainment Group is a world leader in live entertainment. Since its inception in 1984, more than 378 million people around the world have been inspired				</p>
2403			        </div>
2404        <div class="info_section hidden-xs col-sm-3 norpad">
2405            <div class="module nomargin fpad-md text-center">
2406                				<a 
2407				title="View Listing - Cirque Du Soleil" 
2408				aria-label="View Listing - Cirque Du Soleil" 
2409				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2410				href="/arts-culture-entertainment/cirque-du-soleil">View Listing</a>
2411								<div class="clearfix fpad-sm nobpad"></div>
2412				<a 
2413				title="Send Message - Cirque Du Soleil" 
2414				aria-label="Send Message - Cirque Du Soleil" 
2415				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2416				href="/arts-culture-entertainment/cirque-du-soleil/connect">Send Message</a>
2417				<div class="clearfix"></div>
2418                	<div class="clearfix fpad-sm nobpad"></div>
2419    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2420		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="531" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2421			<i class="fa fa-phone fa-fw"></i> 
2422			Show Phone Number
2423		</div>
2424        <div class="hide myphoneHide">
2425          <a href="tel:7028505211"><span class="text-secondary">Call: <u>702-850-5211</u></span></a>        </div>
2426    </span>
2427              </div>
2428        </div>
2429		<div class="clearfix"></div>
2430    </div>
2431</div>
2432<div class="clearfix"></div>
2433<hr>
2434<div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2435	<meta itemprop="name" content="Like The Fish Media">
2436	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2437	<meta itemprop="position" content="3">
2438		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/california/westminster/advertising-media/like-the-fish-media#entity">
2439		<meta itemprop="name" content="Like The Fish Media">
2440		<link itemprop="url" href="https://www.westminsterchamber.org/california/westminster/advertising-media/like-the-fish-media">
2441		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-138-415-photo.png">
2442		<meta itemprop="priceRange" content="$$">
2443		<meta itemprop="telephone" content="562686-3957">
2444				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2445			<meta itemprop="streetAddress" content="N/A">
2446			<meta itemprop="addressLocality" content="Westminster">
2447			<meta itemprop="addressRegion" content="CA">
2448			<meta itemprop="postalCode" content="N/A">
2449			<meta itemprop="addressCountry" content="US">
2450		</div>
2451				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2452			<meta itemprop="latitude" content="33.75917570">
2453			<meta itemprop="longitude" content="-117.98970580">
2454		</div>
2455				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/california/westminster/advertising-media/like-the-fish-media#page">
2456	</div>
2457    <div class="grid_element">
2458        <div class="img_section col-xs-2 nopad">
2459            <a title="Like The Fish Media - Westminster California Businesses" href="/california/westminster/advertising-media/like-the-fish-media">
2460								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Like The Fish Media" src="https://www.westminsterchamber.org/logos/profile/limage-138-415-photo.png" />
2461				   
2462            </a>
2463        </div>
2464        <div class="mid_section col-xs-10 col-sm-7 norpad">
2465            <span class="postItem" data-userid="138" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Like The Fish Media" href="/california/westminster/advertising-media/like-the-fish-media">
2466                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2467                    Like The Fish Media                </span>
2468                            </a>
2469			<div class="clearfix fpad-sm nobpad"></div>
2470						<div class="clearfix fpad-sm nobpad"></div>
2471						
2472                                        <div class="clearfix fpad-sm nobpad"></div>
2473                <span class="member-search-location rmargin">
2474                <i class="fa fa-map-marker text-danger"></i>
2475					<small>
2476						Westminster, California, <span class=inline-block>United States</span></small></span>        </div>
2477        <div class="info_section hidden-xs col-sm-3 norpad">
2478            <div class="module nomargin fpad-md text-center">
2479                <a href="/california/westminster/advertising-media/like-the-fish-media">
2480	<img alt="Like The Fish Media" src="/images/badges/search_badge_wcc.png" />
2481</a>
2482<div class="clearfix bpad"></div>
2483				<a 
2484				title="View Listing - Like The Fish Media" 
2485				aria-label="View Listing - Like The Fish Media" 
2486				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2487				href="/california/westminster/advertising-media/like-the-fish-media">View Listing</a>
2488								<div class="clearfix fpad-sm nobpad"></div>
2489				<a 
2490				title="Send Message - Like The Fish Media" 
2491				aria-label="Send Message - Like The Fish Media" 
2492				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2493				href="/california/westminster/advertising-media/like-the-fish-media/connect">Send Message</a>
2494				<div class="clearfix"></div>
2495                	<div class="clearfix fpad-sm nobpad"></div>
2496    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2497		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="138" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2498			<i class="fa fa-phone fa-fw"></i> 
2499			Show Phone Number
2500		</div>
2501        <div class="hide myphoneHide">
2502          <a href="tel:5626863957"><span class="text-secondary">Call: <u>(562) 686-3957</u></span></a>        </div>
2503    </span>
2504              </div>
2505        </div>
2506		<div class="clearfix"></div>
2507    </div>
2508</div>
2509<div class="clearfix"></div>
2510<hr>
2511<span class="google-pin-location" id="google-pin" data-token="138"data-hideMessages="0" data-lat="33.75917570" data-lng="-117.98970580" data-name="Like The Fish Media" data-filename="/california/westminster/advertising-media/like-the-fish-media" data-photo="/logos/profile/limage-138-415-photo.png" data-phone="(562) 686-3957" data-addon="1"></span><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2512	<meta itemprop="name" content="Loi Dao">
2513	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2514	<meta itemprop="position" content="4">
2515		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/united-states/real-estate-services/loi-dao#entity">
2516		<meta itemprop="name" content="Loi Dao">
2517		<link itemprop="url" href="https://www.westminsterchamber.org/united-states/real-estate-services/loi-dao">
2518		<link itemprop="image" href="https://www.westminsterchamber.org/pictures/profile/pimage-503-170-photo.jpeg">
2519		<meta itemprop="priceRange" content="$$">
2520		<meta itemprop="telephone" content="4135616010">
2521				<meta itemprop="description" content="Husband | Father | Marine | Orange County Realtor">
2522				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2523			<meta itemprop="streetAddress" content="N/A">
2524			<meta itemprop="addressLocality" content="N/A">
2525			<meta itemprop="addressRegion" content="CA">
2526			<meta itemprop="postalCode" content="N/A">
2527			<meta itemprop="addressCountry" content="US">
2528		</div>
2529				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2530			<meta itemprop="latitude" content="33.71747080">
2531			<meta itemprop="longitude" content="-117.83114280">
2532		</div>
2533				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/united-states/real-estate-services/loi-dao#page">
2534	</div>
2535    <div class="grid_element">
2536        <div class="img_section col-xs-2 nopad">
2537            <a title="Loi Dao - Westminster California Businesses" href="/united-states/real-estate-services/loi-dao">
2538								<img class="search_result_image img-rounded center-block" loading="auto" width="400" height="400" alt="Loi Dao" src="https://www.westminsterchamber.org/pictures/profile/pimage-503-170-photo.jpeg" />
2539				   
2540            </a>
2541        </div>
2542        <div class="mid_section col-xs-10 col-sm-7 norpad">
2543            <span class="postItem" data-userid="503" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Loi Dao" href="/united-states/real-estate-services/loi-dao">
2544                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2545                    Loi Dao                </span>
2546                                    <span class="hidden-xs inline-block member-search-company notranslate">
2547                        Romeo Echo                    </span>
2548                            </a>
2549			<div class="clearfix fpad-sm nobpad"></div>
2550						<div class="clearfix fpad-sm nobpad"></div>
2551						
2552                        				
2553				<p class="small nomargin member-search-description">
2554					Husband | Father | Marine | Orange County Realtor				</p>
2555                            <div class="clearfix fpad-sm nobpad"></div>
2556                <span class="member-search-location rmargin">
2557                <i class="fa fa-map-marker text-danger"></i>
2558					<small>
2559						California, <span class=inline-block>United States</span></small></span>        </div>
2560        <div class="info_section hidden-xs col-sm-3 norpad">
2561            <div class="module nomargin fpad-md text-center">
2562                <a href="/united-states/real-estate-services/loi-dao">
2563	<img alt="Loi Dao" src="/images/badges/search_badge_wcc.png" />
2564</a>
2565<div class="clearfix bpad"></div>
2566				<a 
2567				title="View Listing - Loi Dao" 
2568				aria-label="View Listing - Loi Dao" 
2569				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2570				href="/united-states/real-estate-services/loi-dao">View Listing</a>
2571								<div class="clearfix fpad-sm nobpad"></div>
2572				<a 
2573				title="Send Message - Loi Dao" 
2574				aria-label="Send Message - Loi Dao" 
2575				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2576				href="/united-states/real-estate-services/loi-dao/connect">Send Message</a>
2577				<div class="clearfix"></div>
2578                	<div class="clearfix fpad-sm nobpad"></div>
2579    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2580		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="503" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2581			<i class="fa fa-phone fa-fw"></i> 
2582			Show Phone Number
2583		</div>
2584        <div class="hide myphoneHide">
2585          <a href="tel:4135616010"><span class="text-secondary">Call: <u>4135616010</u></span></a>        </div>
2586    </span>
2587              </div>
2588        </div>
2589		<div class="clearfix"></div>
2590    </div>
2591</div>
2592<div class="clearfix"></div>
2593<hr>
2594<span class="google-pin-location" id="google-pin" data-token="503"data-hideMessages="0" data-lat="33.71747080" data-lng="-117.83114280" data-name="Loi Dao" data-filename="/united-states/real-estate-services/loi-dao" data-photo="/pictures/profile/pimage-503-170-photo.jpeg" data-phone="4135616010" data-addon="1"></span><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2595	<meta itemprop="name" content="qasimcompany">
2596	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2597	<meta itemprop="position" content="5">
2598		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/pakistan/lahore/family-community-civic-organizations/qasimcompany#entity">
2599		<meta itemprop="name" content="qasimcompany">
2600		<link itemprop="url" href="https://www.westminsterchamber.org/pakistan/lahore/family-community-civic-organizations/qasimcompany">
2601		<link itemprop="image" href="https://www.westminsterchamber.org/images/profile-profile-holder.png">
2602		<meta itemprop="priceRange" content="$$">
2603		<meta itemprop="telephone" content="+923018888888">
2604				<meta itemprop="description" content="this is my short desc">
2605				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2606			<meta itemprop="streetAddress" content="Ahmed Ali Rd">
2607			<meta itemprop="addressLocality" content="Lahore">
2608			<meta itemprop="addressRegion" content="Punjab">
2609			<meta itemprop="postalCode" content="54000">
2610			<meta itemprop="addressCountry" content="PK">
2611		</div>
2612				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2613			<meta itemprop="latitude" content="31.59251480">
2614			<meta itemprop="longitude" content="74.30948500">
2615		</div>
2616				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/pakistan/lahore/family-community-civic-organizations/qasimcompany#page">
2617	</div>
2618    <div class="grid_element">
2619        <div class="img_section col-xs-2 nopad">
2620            <a title="qasimcompany - Westminster California Businesses" href="/pakistan/lahore/family-community-civic-organizations/qasimcompany">
2621								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="qasimcompany" data-src="https://www.westminsterchamber.org/images/profile-profile-holder.png">
2622				   
2623            </a>
2624        </div>
2625        <div class="mid_section col-xs-10 col-sm-7 norpad">
2626            <span class="postItem" data-userid="533" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="qasimcompany" href="/pakistan/lahore/family-community-civic-organizations/qasimcompany">
2627                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2628                    qasimcompany                </span>
2629                            </a>
2630			<div class="clearfix fpad-sm nobpad"></div>
2631						<div class="clearfix fpad-sm nobpad"></div>
2632						
2633                        				
2634				<p class="small nomargin member-search-description">
2635					this is my short desc				</p>
2636                            <div class="clearfix fpad-sm nobpad"></div>
2637                <span class="member-search-location rmargin">
2638                <i class="fa fa-map-marker text-danger"></i>
2639					<small>
2640						Lahore, Punjab, <span class="inline-block">54000</span>, <span class=inline-block>Pakistan</span></small></span>        </div>
2641        <div class="info_section hidden-xs col-sm-3 norpad">
2642            <div class="module nomargin fpad-md text-center">
2643                <a href="/pakistan/lahore/family-community-civic-organizations/qasimcompany">
2644	<img alt="qasimcompany" src="/images/badges/search_badge_wcc.png" />
2645</a>
2646<div class="clearfix bpad"></div>
2647				<a 
2648				title="View Listing - qasimcompany" 
2649				aria-label="View Listing - qasimcompany" 
2650				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2651				href="/pakistan/lahore/family-community-civic-organizations/qasimcompany">View Listing</a>
2652								<div class="clearfix fpad-sm nobpad"></div>
2653				<a 
2654				title="Send Message - qasimcompany" 
2655				aria-label="Send Message - qasimcompany" 
2656				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2657				href="/pakistan/lahore/family-community-civic-organizations/qasimcompany/connect">Send Message</a>
2658				<div class="clearfix"></div>
2659                	<div class="clearfix fpad-sm nobpad"></div>
2660    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2661		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="533" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2662			<i class="fa fa-phone fa-fw"></i> 
2663			Show Phone Number
2664		</div>
2665        <div class="hide myphoneHide">
2666          <a href="tel:+923018888888"><span class="text-secondary">Call: <u>+923018888888</u></span></a>        </div>
2667    </span>
2668              </div>
2669        </div>
2670		<div class="clearfix"></div>
2671    </div>
2672</div>
2673<div class="clearfix"></div>
2674<hr>
2675<span class="google-pin-location" id="google-pin" data-token="533"data-hideMessages="0" data-lat="31.59251480" data-lng="74.30948500" data-name="qasimcompany" data-filename="/pakistan/lahore/family-community-civic-organizations/qasimcompany" data-photo="/images/profile-profile-holder.png" data-phone="+923018888888" data-addon="1"></span><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2676	<meta itemprop="name" content="Squared Up Cleaning">
2677	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2678	<meta itemprop="position" content="6">
2679		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/united-states/westminster/business-professional-services/squared-up-cleaning#entity">
2680		<meta itemprop="name" content="Squared Up Cleaning">
2681		<link itemprop="url" href="https://www.westminsterchamber.org/united-states/westminster/business-professional-services/squared-up-cleaning">
2682		<link itemprop="image" href="https://www.westminsterchamber.org/images/profile-profile-holder.png">
2683		<meta itemprop="priceRange" content="$$">
2684		<meta itemprop="telephone" content="7143154675">
2685				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2686			<meta itemprop="streetAddress" content="13761 Goldenwest St">
2687			<meta itemprop="addressLocality" content="Westminster">
2688			<meta itemprop="addressRegion" content="CA">
2689			<meta itemprop="postalCode" content="92684">
2690			<meta itemprop="addressCountry" content="US">
2691		</div>
2692				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2693			<meta itemprop="latitude" content="33.76173180">
2694			<meta itemprop="longitude" content="-118.00785860">
2695		</div>
2696				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/united-states/westminster/business-professional-services/squared-up-cleaning#page">
2697	</div>
2698    <div class="grid_element">
2699        <div class="img_section col-xs-2 nopad">
2700            <a title="Squared Up Cleaning - Westminster California Businesses" href="/united-states/westminster/business-professional-services/squared-up-cleaning">
2701								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="Squared Up Cleaning" data-src="https://www.westminsterchamber.org/images/profile-profile-holder.png">
2702				   
2703            </a>
2704        </div>
2705        <div class="mid_section col-xs-10 col-sm-7 norpad">
2706            <span class="postItem" data-userid="684" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Squared Up Cleaning" href="/united-states/westminster/business-professional-services/squared-up-cleaning">
2707                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2708                    Squared Up Cleaning                </span>
2709                            </a>
2710			<div class="clearfix fpad-sm nobpad"></div>
2711						<div class="clearfix fpad-sm nobpad"></div>
2712						
2713                                        <div class="clearfix fpad-sm nobpad"></div>
2714                <span class="member-search-location rmargin">
2715                <i class="fa fa-map-marker text-danger"></i>
2716					<small>
2717						Westminster, California, <span class="inline-block">92684</span>, <span class=inline-block>United States</span></small></span>        </div>
2718        <div class="info_section hidden-xs col-sm-3 norpad">
2719            <div class="module nomargin fpad-md text-center">
2720                <a href="/united-states/westminster/business-professional-services/squared-up-cleaning">
2721	<img alt="Squared Up Cleaning" src="/images/badges/search_badge_wcc.png" />
2722</a>
2723<div class="clearfix bpad"></div>
2724				<a 
2725				title="View Listing - Squared Up Cleaning" 
2726				aria-label="View Listing - Squared Up Cleaning" 
2727				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2728				href="/united-states/westminster/business-professional-services/squared-up-cleaning">View Listing</a>
2729								<div class="clearfix fpad-sm nobpad"></div>
2730				<a 
2731				title="Send Message - Squared Up Cleaning" 
2732				aria-label="Send Message - Squared Up Cleaning" 
2733				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2734				href="/united-states/westminster/business-professional-services/squared-up-cleaning/connect">Send Message</a>
2735				<div class="clearfix"></div>
2736                	<div class="clearfix fpad-sm nobpad"></div>
2737    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2738		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="684" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2739			<i class="fa fa-phone fa-fw"></i> 
2740			Show Phone Number
2741		</div>
2742        <div class="hide myphoneHide">
2743          <a href="tel:7143154675"><span class="text-secondary">Call: <u>7143154675</u></span></a>        </div>
2744    </span>
2745              </div>
2746        </div>
2747		<div class="clearfix"></div>
2748    </div>
2749</div>
2750<div class="clearfix"></div>
2751<hr>
2752<span class="google-pin-location" id="google-pin" data-token="684"data-hideMessages="0" data-lat="33.76173180" data-lng="-118.00785860" data-name="Squared Up Cleaning" data-filename="/united-states/westminster/business-professional-services/squared-up-cleaning" data-photo="/images/profile-profile-holder.png" data-phone="7143154675" data-addon="1"></span><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2753	<meta itemprop="name" content="Universal Remodeling">
2754	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2755	<meta itemprop="position" content="7">
2756		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/united-states/westminster/home-services/universal-remodeling#entity">
2757		<meta itemprop="name" content="Universal Remodeling">
2758		<link itemprop="url" href="https://www.westminsterchamber.org/united-states/westminster/home-services/universal-remodeling">
2759		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-775-192-photo.webp">
2760		<meta itemprop="priceRange" content="$$">
2761		<meta itemprop="telephone" content="657763-4683">
2762				<meta itemprop="description" content="Marketing specialist for Home Service Businesses (SEO, Paid Advertising, Lead Generation- C2Thrive Local Marketing). Working with Universal Remodeling.">
2763				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2764			<meta itemprop="streetAddress" content="5911 Westminster Blvd.">
2765			<meta itemprop="addressLocality" content="Westminster">
2766			<meta itemprop="addressRegion" content="CA">
2767			<meta itemprop="postalCode" content="92683">
2768			<meta itemprop="addressCountry" content="US">
2769		</div>
2770				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2771			<meta itemprop="latitude" content="33.75930320">
2772			<meta itemprop="longitude" content="-118.02599630">
2773		</div>
2774				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/united-states/westminster/home-services/universal-remodeling#page">
2775	</div>
2776    <div class="grid_element">
2777        <div class="img_section col-xs-2 nopad">
2778            <a title="Universal Remodeling - Westminster California Businesses" href="/united-states/westminster/home-services/universal-remodeling">
2779								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="Universal Remodeling" data-src="https://www.westminsterchamber.org/logos/profile/limage-775-192-photo.webp">
2780				   
2781            </a>
2782        </div>
2783        <div class="mid_section col-xs-10 col-sm-7 norpad">
2784            <span class="postItem" data-userid="775" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Universal Remodeling" href="/united-states/westminster/home-services/universal-remodeling">
2785                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2786                    Universal Remodeling                </span>
2787                            </a>
2788			<div class="clearfix fpad-sm nobpad"></div>
2789						<div class="clearfix fpad-sm nobpad"></div>
2790						
2791                        				
2792				<p class="small nomargin member-search-description">
2793					Marketing specialist for Home Service Businesses (SEO, Paid Advertising, Lead Generation- C2Thrive Local Marketing). Working with Universal Remodeling.				</p>
2794                            <div class="clearfix fpad-sm nobpad"></div>
2795                <span class="member-search-location rmargin">
2796                <i class="fa fa-map-marker text-danger"></i>
2797					<small>
2798						Westminster, California, <span class="inline-block">92683</span>, <span class=inline-block>United States</span></small></span>        </div>
2799        <div class="info_section hidden-xs col-sm-3 norpad">
2800            <div class="module nomargin fpad-md text-center">
2801                <a href="/united-states/westminster/home-services/universal-remodeling">
2802	<img alt="Universal Remodeling" src="/images/badges/search_badge_wcc.png" />
2803</a>
2804<div class="clearfix bpad"></div>
2805				<a 
2806				title="View Listing - Universal Remodeling" 
2807				aria-label="View Listing - Universal Remodeling" 
2808				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2809				href="/united-states/westminster/home-services/universal-remodeling">View Listing</a>
2810								<div class="clearfix fpad-sm nobpad"></div>
2811				<a 
2812				title="Send Message - Universal Remodeling" 
2813				aria-label="Send Message - Universal Remodeling" 
2814				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2815				href="/united-states/westminster/home-services/universal-remodeling/connect">Send Message</a>
2816				<div class="clearfix"></div>
2817                	<div class="clearfix fpad-sm nobpad"></div>
2818    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2819		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="775" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2820			<i class="fa fa-phone fa-fw"></i> 
2821			Show Phone Number
2822		</div>
2823        <div class="hide myphoneHide">
2824          <a href="tel:6577634683"><span class="text-secondary">Call: <u>(657) 763-4683</u></span></a>        </div>
2825    </span>
2826              </div>
2827        </div>
2828		<div class="clearfix"></div>
2829    </div>
2830</div>
2831<div class="clearfix"></div>
2832<hr>
2833<span class="google-pin-location" id="google-pin" data-token="775"data-hideMessages="0" data-lat="33.75930320" data-lng="-118.02599630" data-name="Universal Remodeling" data-filename="/united-states/westminster/home-services/universal-remodeling" data-photo="/logos/profile/limage-775-192-photo.webp" data-phone="(657) 763-4683" data-addon="1"></span><div class="row-fluid member_results level_6 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2834	<meta itemprop="name" content="White Glove Plumbing Orange County">
2835	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2836	<meta itemprop="position" content="8">
2837		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county#entity">
2838		<meta itemprop="name" content="White Glove Plumbing Orange County">
2839		<link itemprop="url" href="https://www.westminsterchamber.org/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county">
2840		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-682-396-photo.png">
2841		<meta itemprop="priceRange" content="$$">
2842		<meta itemprop="telephone" content="949209-5206">
2843				<meta itemprop="description" content="White Glove Plumbing is Orange County’s go-to plumber for homes and businesses—fast, friendly, and 24/7.">
2844				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2845			<meta itemprop="streetAddress" content="1430 E Borchard Ave">
2846			<meta itemprop="addressLocality" content="Santa Ana">
2847			<meta itemprop="addressRegion" content="CA">
2848			<meta itemprop="postalCode" content="92705">
2849			<meta itemprop="addressCountry" content="US">
2850		</div>
2851				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2852			<meta itemprop="latitude" content="33.72783690">
2853			<meta itemprop="longitude" content="-117.85115680">
2854		</div>
2855				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county#page">
2856	</div>
2857    <div class="grid_element">
2858        <div class="img_section col-xs-2 nopad">
2859            <a title="White Glove Plumbing Orange County - Westminster California Businesses" href="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county">
2860								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="White Glove Plumbing Orange County" data-src="https://www.westminsterchamber.org/logos/profile/limage-682-396-photo.png">
2861				   
2862            </a>
2863        </div>
2864        <div class="mid_section col-xs-10 col-sm-7 norpad">
2865            <span class="postItem" data-userid="682" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="CORE MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="White Glove Plumbing Orange County" href="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county">
2866                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2867                    White Glove Plumbing Orange County                </span>
2868                            </a>
2869			<div class="clearfix fpad-sm nobpad"></div>
2870						<div class="clearfix fpad-sm nobpad"></div>
2871						
2872                        				
2873				<p class="small nomargin member-search-description">
2874					White Glove Plumbing is Orange County’s go-to plumber for homes and businesses—fast, friendly, and 24/7.				</p>
2875                            <div class="clearfix fpad-sm nobpad"></div>
2876                <span class="member-search-location rmargin">
2877                <i class="fa fa-map-marker text-danger"></i>
2878					<small>
2879						Santa Ana, California, <span class="inline-block">92705</span>, <span class=inline-block>United States</span></small></span>        </div>
2880        <div class="info_section hidden-xs col-sm-3 norpad">
2881            <div class="module nomargin fpad-md text-center">
2882                <a href="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county">
2883	<img alt="White Glove Plumbing Orange County" src="/images/badges/search_badge_wcc.png" />
2884</a>
2885<div class="clearfix bpad"></div>
2886				<a 
2887				title="View Listing - White Glove Plumbing Orange County" 
2888				aria-label="View Listing - White Glove Plumbing Orange County" 
2889				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2890				href="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county">View Listing</a>
2891								<div class="clearfix fpad-sm nobpad"></div>
2892				<a 
2893				title="Send Message - White Glove Plumbing Orange County" 
2894				aria-label="Send Message - White Glove Plumbing Orange County" 
2895				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2896				href="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county/connect">Send Message</a>
2897				<div class="clearfix"></div>
2898                	<div class="clearfix fpad-sm nobpad"></div>
2899    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2900		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="682" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2901			<i class="fa fa-phone fa-fw"></i> 
2902			Show Phone Number
2903		</div>
2904        <div class="hide myphoneHide">
2905          <a href="tel:9492095206"><span class="text-secondary">Call: <u>(949) 209-5206</u></span></a>        </div>
2906    </span>
2907              </div>
2908        </div>
2909		<div class="clearfix"></div>
2910    </div>
2911</div>
2912<div class="clearfix"></div>
2913<hr>
2914<span class="google-pin-location" id="google-pin" data-token="682"data-hideMessages="0" data-lat="33.72783690" data-lng="-117.85115680" data-name="White Glove Plumbing Orange County" data-filename="/united-states/santa-ana/business-professional-services/white-glove-plumbing-orange-county" data-photo="/logos/profile/limage-682-396-photo.png" data-phone="(949) 209-5206" data-addon="1"></span><div class="row-fluid member_results level_1 search_result  clearfix" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
2915	<meta itemprop="name" content="Abrazar">
2916	<link itemprop="url" href="https://www.westminsterchamber.org/search_results">
2917	<meta itemprop="position" content="9">
2918		<div itemprop="item" itemscope itemtype="https://schema.org/LocalBusiness" itemid="https://www.westminsterchamber.org/california/westminster/family-community-civic-organizations/abrazar#entity">
2919		<meta itemprop="name" content="Abrazar">
2920		<link itemprop="url" href="https://www.westminsterchamber.org/california/westminster/family-community-civic-organizations/abrazar">
2921		<link itemprop="image" href="https://www.westminsterchamber.org/logos/profile/limage-28-86-photo.jpg">
2922		<meta itemprop="priceRange" content="$$">
2923		<meta itemprop="telephone" content="714-893-3581">
2924				<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
2925			<meta itemprop="streetAddress" content="7101 Wyoming St">
2926			<meta itemprop="addressLocality" content="Westminster">
2927			<meta itemprop="addressRegion" content="CA">
2928			<meta itemprop="postalCode" content="92683">
2929			<meta itemprop="addressCountry" content="US">
2930		</div>
2931				<div itemprop="geo" itemscope itemtype="https://schema.org/GeoCoordinates">
2932			<meta itemprop="latitude" content="33.76116460">
2933			<meta itemprop="longitude" content="-118.00493070">
2934		</div>
2935				<link itemprop="mainEntityOfPage" href="https://www.westminsterchamber.org/california/westminster/family-community-civic-organizations/abrazar#page">
2936	</div>
2937    <div class="grid_element">
2938        <div class="img_section col-xs-2 nopad">
2939            <a title="Abrazar - Westminster California Businesses" href="/california/westminster/family-community-civic-organizations/abrazar">
2940								<img class="search_result_image img-rounded center-block lazyloader" loading="auto" width="400" height="400" alt="Abrazar" data-src="https://www.westminsterchamber.org/logos/profile/limage-28-86-photo.jpg">
2941				   
2942            </a>
2943        </div>
2944        <div class="mid_section col-xs-10 col-sm-7 norpad">
2945            <span class="postItem" data-userid="28" data-datatype="10" data-dataid="10" data-postid="0"></span><button class="item-post-list-0 favorite fa fa-heart" aria-label="LIKE" data-count="0" data-postid="0" data-state="0" data-activefeature="1" data-activefavorite="NON-PROFIT / GOVERNMENT MEMBERSHIP"  data-toggle="modal" data-target="#myModal"  ><span id='bookmark-content'>LIKE</span> <span class='' id='number-0'></span></button>            <a class="center-block" title="Abrazar" href="/california/westminster/family-community-civic-organizations/abrazar">
2946                <span class="h3 bold inline-block nomargin member-search-full-name notranslate">
2947                    Abrazar                </span>
2948                            </a>
2949			<div class="clearfix fpad-sm nobpad"></div>
2950						<div class="clearfix fpad-sm nobpad"></div>
2951						
2952                                        <div class="clearfix fpad-sm nobpad"></div>
2953                <span class="member-search-location rmargin">
2954                <i class="fa fa-map-marker text-danger"></i>
2955					<small>
2956						Westminster, California, <span class="inline-block">92683</span>, <span class=inline-block>United States</span></small></span>        </div>
2957        <div class="info_section hidden-xs col-sm-3 norpad">
2958            <div class="module nomargin fpad-md text-center">
2959                <a href="/california/westminster/family-community-civic-organizations/abrazar">
2960	<img alt="Abrazar" src="/images/badges/search_badge_wcc.png" />
2961</a>
2962<div class="clearfix bpad"></div>
2963				<a 
2964				title="View Listing - Abrazar" 
2965				aria-label="View Listing - Abrazar" 
2966				class="btn btn-sm btn-primary btn-block bold search_view_listing_button" 
2967				href="/california/westminster/family-community-civic-organizations/abrazar">View Listing</a>
2968								<div class="clearfix fpad-sm nobpad"></div>
2969				<a 
2970				title="Send Message - Abrazar" 
2971				aria-label="Send Message - Abrazar" 
2972				class="btn btn-sm btn-secondary btn-block bold search_contact_now_button" 
2973				href="/california/westminster/family-community-civic-organizations/abrazar/connect">Send Message</a>
2974				<div class="clearfix"></div>
2975                	<div class="clearfix fpad-sm nobpad"></div>
2976    <span class="btn btn-secondary btn-outline btn-sm bold click-to-call-button search_show_phone_button btn-block">
2977		<div class="myPhoneHideParent" onClick="clickToCall(this)" title="Show Phone Number" data-token="28" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
2978			<i class="fa fa-phone fa-fw"></i> 
2979			Show Phone Number
2980		</div>
2981        <div class="hide myphoneHide">
2982          <a href="tel:7148933581"><span class="text-secondary">Call: <u>714-893-3581</u></span></a>        </div>
2983    </span>
2984              </div>
2985        </div>
2986		<div class="clearfix"></div>
2987    </div>
2988</div>
2989<div class="clearfix"></div>
2990<hr>
2991<span class="google-pin-location" id="google-pin" data-token="28"data-hideMessages="0" data-lat="33.76116460" data-lng="-118.00493070" data-name="Abrazar" data-filename="/california/westminster/family-community-civic-organizations/abrazar" data-photo="/logos/profile/limage-28-86-photo.jpg" data-phone="714-893-3581" data-addon="1"></span></div>
2992<div class="col-md-12 text-center nopad clickToLoadMoreContainer">
2993       <div id="btnToLoadMorePost" class="btn btn-secondary btn-block btn-lg bold clickToLoadMoreBtn " data-page="2" data-lvl="" data-type="10" data-dc="1">Click To Load More Results</div>
2994</div><div class="clearfix clearfix-lg"></div>
2995<style>
2996    .gridBtnLazyLoadOld {
2997        clear: both;
2998        position: absolute;
2999        bottom: -30px;
3000    }
3001	.loadingMore{
3002		 pointer-events: none;
3003	}
3004	.grid-container.visible.row hr {
3005         display: none;
3006    }
3007</style>
3008    <div class="map_container" style="display:none;">
3009        <style type='text/css'> .info_window p {
3010	text-align: center;
3011	font-size: 12px;
3012	margin: 5px 0;
3013}
3014.info_window > a {
3015	display: block;
3016	text-align: center;
3017	margin: 5px 0;
3018}
3019.info_window img {
3020	display: block;
3021	max-width: 125px;
3022	margin: 0 auto;
3023	max-height:80px;
3024}
3025.info_window {
3026	width: 150px;
3027}
3028.gm-style-iw div div {
3029	overflow: visible!important;
3030}
3031#map-canvas {
3032	height: 500px;
3033	margin-bottom: 15px;
3034	width: 100%;
3035}
3036.suggestion-search-location {
3037	margin: 2px 2px;
3038	color: #333;
3039	background-color: #CEDDE9;
3040	display: inline-block;
3041	padding: 5px 11px;
3042}
3043
3044.other-locations-container {
3045	overflow: hidden;
3046	max-height: 32px;
3047	transition: all 0.5s ease 0s;
3048}
3049span.show-more-suggestions {
3050	padding: 5px;
3051	margin: 0px 13px 9px 4px;
3052	display: inline-block;
3053	cursor: pointer;
3054	color: #1a0dab;
3055	font-weight: 500;
3056}
3057span.show-more-suggestions:hover {
3058	text-decoration: underline;
3059}
3060.suggestions-heading {
3061	margin-bottom: 5px;
3062} </style><div id="map-canvas"></div>    </div>
3063<script async>
3064    function clickToCall (element, hideFlag=true) {
3065        var userToken = $(element).attr("data-token")
3066        $.ajax({
3067            url: "/api/stats/json/post/users_clicks/insert",
3068            dataType: "json",
3069            type: "POST",
3070            data: {
3071                user_id: userToken,
3072                click_name: "Phone Number",
3073                click_type: 'Phone Number',
3074                //click_url: $(element).attr("href"),
3075                click_from: window.location.href
3076            },
3077            success: function (data) {
3078
3079            }
3080        });
3081		if(hideFlag){
3082       	 	$(element).siblings().toggleClass("hide");
3083        	$(element).remove();
3084		} else {
3085			$(element).addClass("hide").siblings().removeClass("hide");
3086		}
3087    }
3088</script>
3088
3089            <div class="member-pagination-block">
3090                <style type='text/css'> .member-pagination-block:not(:has(li)) {
3091	display: none;
3092} </style><div class="clearfix tmargin"></div>
3093<ul class="pagination pagination-lg">
3094	</ul>
3095<div class="clearfix clearfix-lg"></div>                <div class="clearfix"></div>
3096            </div>
3097                            </div>
3098                </div>
3099					            </div>
3100
3101                        <div class="col-sm-12 col-md-3 sidebar-container">            <!--
3102
3103This search module will detect which of the default membership features' search results pages is being viewed and display the related search feature.
3104
3105IMPORTANT: This module will only work with the default search features that come with the software when they are using the default forms associated with those features.  If the form or the membership feature is modified, this widget may not work as expected.
3106
3107-->
3108
3109<div class="module sidebar-search-member-keyword-location">
3110	<h2>Find Westminster California Businesses</h2>
3111	<form action="/search_results" class="website-search"  accept-charset="UTF-8" method="get">
3112				
3113		<div class="form-group normal-autosuggest">	
3114						<label>What do you need:</label>
3115						<input type="text" name="q" value="" placeholder="Name or Keyword" class="form-control member_search">
3116		</div>
3117		
3118		<div class="form-group">
3119						<label>Search by location:</label>
3120						<input type=text autocomplete="off" placeholder="City or Post Code" class="googleSuggest googleLocation form-control" id="location_google_maps_homepage" name="location_value" value="">
3121		</div>
3122		
3123		<div class="form-group nomargin">
3124			<button class="btn btn-primary btn-block" type="submit">Search Now</button>    
3125		</div>    
3126	</form>
3127</div><div class="module newsletter-sign-up-form">
3128	<h2 class="bpad text-center">Join Our Newsletter</h2>
3129	<a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-primary btn-block">
3130		Click to Subscribe
3131	</a>
3132</div>
3133
3134<div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
3135	<div class="modal-dialog">
3136		<div class="modal-content">
3137			<div class="container-fluid">
3138				<div class="row">
3139					<div class="col-md-12">
3140						<br>
3141						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
3142							<span aria-hidden="true">&times;</span>
3143						</button>
3144						<h3 class="nomargin">
3145							Join Our Newsletter
3146						</h3>
3147						<hr>
3148						<div class="newsletter_modal_form_container">
3149							 <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Module%20-%20Newsletter%20Actions" id="newsletter_modal_signup_380" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div=".newsletter_modal_form_container" return_data_type="" name="newsletter_modal_signup_380" class=" "><input type="hidden" name="sized" value="0" id="newsletter_modal_signup_380-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="newsletter_modal_signup_380-element-1"/><input type="hidden" name="form" value="myform" id="newsletter_modal_signup_380-element-2"/><input type="hidden" name="formname" value="newsletter_modal_signup" id="newsletter_modal_signup_380-element-3"/><input type="hidden" name="dowiz" value="1" id="newsletter_modal_signup_380-element-4"/><input type="hidden" name="save" value="1" id="newsletter_modal_signup_380-element-5"/><input type="hidden" name="url_origin_pars" value="/search_results" id="newsletter_modal_signup_380-element-6"/><input type="hidden" name="action" autocomplete="off" value="subscribe" id="newsletter_modal_signup_380-element-7"/><div class="form-group"><input type="text" name="first_name" placeholder="Name" autocomplete="off" value class="form-control control-group  form-control " id="newsletter_modal_signup_380-element-8"/></div><div class="form-group"><input type="email" name="email" required placeholder="Enter email address" autocomplete="off" value class="form-control control-group form-control" id="newsletter_modal_signup_380-element-9"/></div><div class="form-group"><div class="form-group security_question_label">
3150            <div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
3151        <div class="g-recaptcha"  id="newsletter_modal_signup_380-google-recaptcha"></div>
3152    </div>
3153    <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>
3154    <div class="clearfix bmargin"></div>
3155    <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
3156</div>
3157    <style>
3158        .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 {
3159            transform: scale(0.77);
3160            -webkit-transform: scale(0.77);
3161            transform-origin: 0 0;
3162            -webkit-transform-origin: 0 0;
3163            margin-bottom: -15px;
3164        }
3165
3166        .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 {
3167            transform: scale(0.77);
3168            -webkit-transform: scale(0.77);
3169            transform-origin: 0 0;
3170            -webkit-transform-origin: 0 0;
3171            margin-bottom: -15px;
3172        }
3173    </style>
3174    
3174<script type="text/javascript">
3175        if(typeof formsFound == "undefined"){
3176            var formID                  = '';
3177            var currentCaptcha          = {};
3178            var captchaHolders          = {};
3179            var formsFound              = {};
3180            var captchaApiRequested     = false;
3181            /* The forms the visitor has actually interacted with - only these get a widget. */
3182            var captchaArmedForms       = [];
3183            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
3184               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
3185               and presses Enter without ever clicking, so api.js never loaded, the captcha
3186               never rendered, and the form POSTed an empty token. */
3187            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
3188
3189            window.addEventListener('load', () => {
3190                formID = document.querySelectorAll('[name="recaptcha"]');
3191                if (typeof formID != "undefined" && formID !== null) {
3192                    for (let i = 0; i < formID.length; i++) {
3193                        let formIDForm      = formID[i].closest('form');
3194                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
3195
3196                        if (typeof formsFound[formIDForm.id] != "undefined") {
3197                            formsFound[formIDForm.id]['counter']++;
3198                        }else{
3199                            formsFound[formIDForm.id] = {'counter' : 1};
3200                        }
3201
3202                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
3203                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
3204
3205                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
3206                            captchaTriggerEvents.forEach( evt =>
3207                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
3208                            );
3209                        }
3210                    }
3211                }
3212            });
3213        }
3214
3215        function reCaptchaOnFormInteraction(event) {
3216            if (event && event.currentTarget) {
3217                captchaArmForm(event.currentTarget);
3218            }
3219            if (captchaApiRequested) {
3220                renderArmedCaptchas();
3221                return;
3222            }
3223            captchaApiRequested = true;
3224
3225            var head    = document.getElementsByTagName('head')[0];
3226            var script  = document.createElement('script');
3227            script.type = 'text/javascript';
3228            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
3229            head.appendChild(script);
3230        }
3231
3232        var captchaArmForm = function (formEl) {
3233            if (!formEl) {
3234                return;
3235            }
3236            for (var a = 0; a < captchaArmedForms.length; a++) {
3237                if (captchaArmedForms[a] === formEl) {
3238                    return;
3239                }
3240            }
3241            captchaArmedForms.push(formEl);
3242        };
3243
3244        var captchaSolvedCallback = function (holder) {
3245            return function () {
3246                var formEl = holder.closest('form');
3247                if (!formEl) {
3248                    return;
3249                }
3250                $(formEl).find('.security_question_label').removeClass('has-error');
3251                $(formEl).find('#recaptcha_error').css('display', 'none');
3252                var notification = document.getElementById(formEl.id + '-notification');
3253                if (notification && notification.classList.contains('alert-danger-subtle')) {
3254                    $(notification).slideUp();
3255                }
3256            };
3257        };
3258
3259        var renderArmedCaptchas = function () {
3260            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
3261                return;
3262            }
3263            for (var f = 0; f < captchaArmedForms.length; f++) {
3264                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
3264aptcha]');
3265
3266                if (!holder || !holder.id || holder.getClientRects().length === 0) {
3267                    continue;
3268                }
3269                /* Guard a second render: grecaptcha throws on an element it already claimed. */
3270                if (typeof captchaHolders[holder.id] === "undefined") {
3271                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
3272                        'sitekey': '6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq',
3273                        'callback': captchaSolvedCallback(holder)
3274                    });
3275                }
3276            }
3277        };
3278
3279        var onloadCallback = function (event) {
3280            renderArmedCaptchas();
3281        };
3282
3283    </script>
vendor: 1 bytes, line 3283
3283
3284<script>
3285    $(document).ready(function(){
3286        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
3287           the submit button, so the click guard below never sees it and the form POSTed an
3288           empty token. Bound on document/capture so it runs before FormValidation's own
3289           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
3290           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
3291           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
3292        var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
3293        if (captchaGuardedForm) {
3294            document.addEventListener('submit', function (event) {
3295                if (event.target !== captchaGuardedForm) {
3296                    return;
3297                }
3298
3299                var formId              = captchaGuardedForm.id;
3300                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
3301                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
3302
3303                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
3304                    $("#" + formId + " .security_question_label").removeClass("has-error");
3305                    $("#" + formId + " #recaptcha_error").css("display", "none");
3306                    return;
3307                }
3308
3309                /* Unsolved, or api.js still in flight: either way there is no token to send. */
3310                event.preventDefault();
3311                event.stopImmediatePropagation();
3312                $("#" + formId + " .security_question_label").addClass("has-error");
3313                $("#" + formId + " #recaptcha_error").css("display", "block");
3314                return false;
3315            }, true);
3316        }
3317        $("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
3318        $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
3319
3320            var formId = $(this.form).attr('id');
3321            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
3322
3323            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
3324                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
3325                    event.preventDefault();
3326                    $("#" + formId).formValidation('validate');
3327                    $("#" + formId + " .security_question_label").addClass("has-error");
3328                    $("#" + formId + " #recaptcha_error").css("display", "block");
3329                    return false;
3330                }
3331
3332                /* Solved captcha: clear the error UI and let the click proceed untouched.
3333                   The browser then fires a REAL, button-initiated submit event, so
3334                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
3335                   checkout / native POST on login). Re-submitting here artificially broke
3336                   both ways: native form.submit() skips the FV chain (checkout rendered the
3337                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
3338                   refuses, leaving the form stuck after the first error (Bug 2). */
3339                $("#" + formId + " .security_question_label").removeClass("has-error");
3340                $("#" + formId + " #recaptcha_error").css("display", "none");
3341            }
3342        });
3343    });
3344</script>
3344</div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="newsletter_modal_signup_380-element-12"/></div><div class="form-actions"><input type="submit" value="Subscribe Now" name class="btn btn-primary btn-block btn-lg  bold " id="newsletter_modal_signup_380-element-13"/></div><input type='hidden' name='origin' value='/search_results'></form>
3344<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#newsletter_modal_signup_380").bind("submit", function() { 
3345		});}); </script>
3345 						</div>						
3346						<br>
3347					</div>
3348				</div>
3349			</div>
3350		</div>
3351	</div>
3352</div><div class="module member-join-offer">
3353	<h2>Join Our Community</h2>
3354	<p>
3355		<b>1.</b> Register a member account<br>
3356		<b>2.</b> Create a searchable listing<br> 
3357		<b>3.</b> Connect with more clients
3358	</p>
3359	<a title="Get Listed Today" href="/join" class="btn btn-primary btn-block">Get Listed Today</a>
3360</div>	
3361        </div>
3362        </div>
3363    
3364            <div class="clearfix"></div>
3365    </div>
3366</div>
3367<!-- End Content -->
3368<div class="clearfix footer-clear-element clearfix-lg"></div>
3369
3370<style type='text/css'> .newsletter_row input[type="email"] {
3371    float: none;
3372    margin-left: auto;
3373    margin-right: auto;    
3374    width: 62% !important;
3375} </style><div class="content-container newsletter_row">
3376	<div class="container text-center vpad">
3377		<div class="col-md-12 xs-nopad">
3378			<style type='text/css'> @media only screen and (min-width: 768px) {
3379	.newsletter_footer_button {
3380		display: flex;
3381		align-items: center;
3382		margin-left: auto;
3383		margin-right: auto;
3384	}
3385} </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">
3386            <div class="col-sm-6 nopad newsletter_button_left">
3387            Join Our Newsletter
3388        </div> 
3389        <div class="col-sm-6 nopad newsletter_button_right">
3390            Click to Subscribe
3391            <i class='fa fa-chevron-circle-right fa-fw'></i>
3392        </div>
3393        
3394	<div class="clearfix"></div>
3395</a>
3396		</div>
3397	</div>
3398</div><div class="footer">
3399    <div class="container">
3400        <div class="row">
3401            <ul class="footer_menu sm-text-center">
3402                <li class='btn TopSection'><a href='/join' id='link399'>Westminster California Businesses - Get Listed Today</a></li><li class='col-md-3 col-md-offset-1  footer-mg'><span id='link359'  class='head'> About Us</span><ul><li class=''><a href='https://www.westminsterchamber.org/categories' id='link412'>Browse Categories</a></li><li class='m-t-li'><a href='https://www.westminsterchamber.org/locations' id='link413'>Browse Locations</a></li><li class=''><a href='https://www.westminsterchamber.org/about' id='link360'  class='content'>How It Works</a></li></ul></li><li class='col-md-3 col-md-offset-1  footer-mg'><span id='link367'  class='head'>  Connect with Us</span><ul><li class=''><span id='link368'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style>
3403<div class="list-social-links">
3404	<a class="network-icon contact" href="/about/contact" title="Contact Us Westminster Chamber of Commerce">
3405		<i class="bi bi-envelope"></i>
3406	</a> 
3407		<a class="network-icon facebook" href="https://www.facebook.com/WestminsterChamberOfCommerce/" target="_blank" title="Westminster Chamber of Commerce Facebook">
3408		<i class="bi bi-facebook"></i>
3409	</a>
3410			     
3411	      
3412		 
3413		<a class="network-icon instagram" href="https://www.instagram.com/wmchamber/" target="_blank" title="Westminster Chamber of Commerce Instagram">
3414		<i class="bi bi-instagram"></i>
3415	</a>
3416						<div class="clearfix"></div>
3417</div></span></li></ul></li><li class='col-md-3 col-md-offset-1  footer-mg'><span id='link407'  class='head'> Support</span><ul><li class=''><a href='/login' id='link408'>Member Login</a></li><li class=''><a href='/about/contact' id='link409'>Contact Us</a></li><li class=''><a href='https://www.westminsterchamber.org/join' id='link415'  target='_blank'>List Your Company</a></li></ul></li><li class='col-md-12 clearfix'><span id='link370'> </span></li><li class='col-md-12 clearfix vmargin text-center remove-mb'><span id='link373'> </span><ul><li class='btn-lg font-sm  novpad  norpad inline-block'><span id='link375'> © 2026</span></li><li class='font-sm inline-block hpad'><a href='/' id='link376'  title='Westminster Chamber of Commerce'>Westminster Chamber of Commerce</a></li><li class='font-sm inline-block'><span id='link377'> All Rights Reserved</span></li><li class='font-sm inline-block hpad'><a href='/about/terms' id='link378'  title='Terms of Use'>Terms of Use</a></li><li class='font-sm inline-block'><a href='/about/privacy' id='link379'  title='Privacy Policy'>Privacy Policy</a></li></ul></li><li class=''><span id='link406'> </span></li>            </ul>
3418        </div>
3419		    </div>
3420</div><style type='text/css'> .scrollup {
3421  border-radius: 3px;
3422  width: 40px;
3423  height: 40px;
3424  opacity: 0.4;
3425  position: fixed;
3426  bottom: 30px;
3427  right: 30px;
3428  display: none;
3429  background: rgba(119, 119, 119, 0.8);
3430  z-index: 1000000;
3431}
3432.scrollup i {
3433  font-size: 36px;
3434  color: white;
3435  position: relative;
3436  top: 0px;
3437  left: 10px;
3438} </style>            <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallMod
3438alLabel"
3439                 data-backdrop="static" data-keyboard="false">
3440                <div class="modal-dialog" role="document">
3441                    <div class="modal-content">
3442                        <div class="modal-body nohpad nobpad">
3443                            <button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin"
3444                                    data-dismiss="modal">&times;
3445                            </button>
3446                                <style>
3447        .member-login-container:not(.modal .module) {
3448            width: 555px;
3449            max-width: 100%;
3450            margin-left: auto;
3451            margin-right: auto;
3452            margin-bottom:0;
3453            background-color: rgb(245, 245, 245)!important;
3454            border-color: rgb(221, 221, 221)!important;
3455            color: rgb(41, 41, 41)!important;
3456        }
3457        .login-register-tabs, .login-register-content {
3458            width: 555px!important;
3459            max-width: 100%;
3460            margin-left: auto!important;
3461            margin-right: auto!important;
3462            background-color: rgb(221, 221, 221);
3463        }
3464        .login-register-content {
3465            background: transparent;
3466            padding: 0;
3467            border: none;
3468        }
3469        .login-register-content h2, .login-register-content h2+hr, .login-register-content .account-menu-title {
3470            display: none!important;
3471        }
3472        .express_login_create_account_prefix hr {
3473            margin: 15px 0 10px;
3474        }
3475        .modal-content #containerFBLogin, .modal-content #containerGoogleLogin {
3476            margin:15px 0;
3477        }
3478
3479        /* CSS When Login Form and Express Registration Rendered in Sidebar */
3480        .col-md-3 .bd-chat-well-container,.col-md-4 .bd-chat-well-container {
3481            padding: 15px 10px;
3482        }
3483        .col-md-3 .bd-chat-center-text,.col-md-4 .bd-chat-center-text {
3484            margin: 0;
3485            font-size: 20px;
3486            padding: 0 15px;
3487        }
3488        .col-md-3 .member-login-page-container .login-register-tabs *, .col-md-4 .member-login-page-container .login-register-tabs * {
3489            font-size: 12px;
3490            line-height: 1.2em;
3491            vertical-align: bottom;
3492        }
3493        .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
3494            padding: 5px !important;
3495            height: 50px;
3496            vertical-align: middle;
3497            display: table-cell !important;
3498            width: 1%;
3499        }
3500        .col-md-3 .member-login-page-container .login-register-content, .col-md-4  .member-login-page-container .login-register-content {
3501            padding: 0;
3502        }
3503        .col-md-3 .member-login-container, .col-md-4 .member-login-container {
3504            padding: 15px !important;
3505            font-size: 13px;
3506        }
3507        .col-md-3 .member-login-page-container .input-lg, .col-md-4 .member-login-page-container .input-lg {
3508            height: 34px;
3509            padding: 6px 12px;
3510            font-size: 14px;
3511        }
3512        .col-md-3 .member-login-page-container .security_question_label, .col-md-4 .member-login-page-container .security_question_label {
3513            transform: scale(.85);
3514            margin: -1.15em -1.15em 0;
3515        }
3516        .col-md-3 #containerFBLogin, .col-md-4 #containerFBLogin, .col-md-3 #containerGoogleLogin, .col-md-4 #containerGoogleLogin, .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
3517            width: 100%;
3518            display: block;
3519            margin-top:5px;
3520        }
3521        .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
3522            padding:0
3523        }
3524        .col-md-3 .login-cta-buttons ul.nav, .col-md-4 .login-cta-buttons ul.nav {
3525            margin-top: -10px;
3526        }
3527        .col-md-3 #googleAction, .col-md-3 #facebookAction, .col-md-4 #googleAction, .col-md-4 #facebookAction {
3528            padding: 0;
3529            min-height: 0;
3530            font-size: 14px;
3531            margin: 0;
3532        }
3533        .col-md-3 #googleAction img, .col-md-3 #facebookAction img, .col-md-4 #googleAction img, .col-md-4 #facebookAction img {
3534            height: 36px !important;
3535            margin-right: 5px;
3536            position: relative!important;
3537            display: inline-block;
3538        }
3539        @media only screen and (max-width: 767px) {
3540            .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
3541                display: block !important;
3542                width: 100%;
3543                line-height: 40px;
3544            }
3545
3546            #containerGoogleLogin {
3547                text-align: center;
3548                margin-top: 10px;
3549            }
3550            #containerGoogleLogin #gBtn {
3551                display: inline-block;
3552            }
3553        }
3554    </style>
3555    <div class="row member-login-page-container">
3556        <div class="fpad-lg novpad">
3557
3558            
3559                                    <div class="module fpad-xl member-login-container">
3560                         <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" id="member_login_190" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="redirect" form_action_div return_data_type="" name="member_login_190" class=" ">
3560<input type="hidden" name="sized" value="0" id="member_login_190-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="member_login_190-element-1"/><input type="hidden" name="form" value="myform" id="member_login_190-element-2"/><input type="hidden" name="formname" value="member_login" id="member_login_190-element-3"/><input type="hidden" name="dowiz" value="1" id="member_login_190-element-4"/><input type="hidden" name="save" value="1" id="member_login_190-element-5"/><input type="hidden" name="url_origin_pars" value="/search_results" id="member_login_190-element-6"/><input type="hidden" name="action" autocomplete="off" value="login" id="member_login_190-element-7"/><h2 class="nomargin member-login-h2-form-title">Member Login</h2><hr><style type='text/css'> #containerGoogleLogin #gBtn {
3561    display: inline-block;
3562    text-align: center;
3563    width: 216px;
3564}
3565
3566.module #containerFBLogin #facebookAction img, .module #containerFBLogin #facebookAction img {
3567    position: absolute !important;
3568}
3569.module #containerFBLogin a#facebookAction {
3570    max-width: 200px;
3571    position: relative;
3572    left: -8px;
3573    
3574} </style>    <!-- Required Font-Family for Social Buttons -->
3575    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap">
3576    <noscript>
3577        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:500&display=swap">
3578    </noscript>
3579
3580    <div class="row social-login-row">
3581    </div><div class="form-group"><label class="vertical-label bd-email" for="member_login_190-element-10"><span class="required">* </span>Email Address</label><input type="email" name="email" required placeholder="[email protected]" autocomplete="off" value class="form-control input-lg" id="member_login_190-element-10"/></div><div class="form-group"><label class="vertical-label bd-password" for="member_login_190-element-11"><span class="required">* </span>Password</label>
3582                    <style>
3583                        #togglePassword {
3584                            background: none;
3585                            border: none;
3586                            cursor: pointer;
3587                            font-weight: bold;
3588                            font-size: .85em;
3589                            position: absolute;
3590                            right: 5px;
3591                            top: 0;
3592                        }
3593                    </style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button>
3594                
3594<script>
3595                    function showPassword(node){
3596                        const parent = node.closest('.form-group');
3597                        const passwordField = parent.querySelector(`input[type='password'], input[type='text']`);
3598                        const isPassword = passwordField.getAttribute('type') === 'password';
3599                        passwordField.setAttribute('type', isPassword ? 'text' : 'password');
3600                        const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`;
3601                        node.innerHTML = iconHTML;
3602                    }       
3603               </script>
3603<input type="password" name="pass" required placeholder="Enter Password" autocomplete="off" value class="form-control input-lg" id="member_login_190-element-11"/></div><span class="help-block bpad bmargin notmargin"> <a href="/login/retrieval">Forgot Password? Click to Reset Password</a></span><div class="form-group"><div class="form-group security_question_label">
3604            <div id="member_login_190-captchaContainer" class="control-group">
3605        <div class="g-recaptcha"  id="member_login_190-google-recaptcha"></div>
3606    </div>
3607    <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>
3608    <div class="clearfix bmargin"></div>
3609    <input type="hidden" name="recaptcha" id="member_login_190-rcap">
3610</div>
3611    <style>
3612        .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 {
3613            transform: scale(0.77);
3614            -webkit-transform: scale(0.77);
3615            transform-origin: 0 0;
3616            -webkit-transform-origin: 0 0;
3617            margin-bottom: -15px;
3618        }
3619
3620        .modal #member_login_190-captchaContainer, .col-md-4 #member_login_190-captchaContainer, .col-md-3 #member_login_190-captchaContainer, .col-lg-3 #member_login_190-captchaContainer, .col-lg-4 #member_login_190-captchaContainer {
3621            transform: scale(0.77);
3622            -webkit-transform: scale(0.77);
3623            transform-origin: 0 0;
3624            -webkit-transform-origin: 0 0;
3625            margin-bottom: -15px;
3626        }
3627    </style>
3628    
3628<script type="text/javascript">
3629        if(typeof formsFound == "undefined"){
3630            var formID                  = '';
3631            var currentCaptcha          = {};
3632            var captchaHolders          = {};
3633            var formsFound              = {};
3634            var captchaApiRequested     = false;
3635            /* The forms the visitor has actually interacted with - only these get a widget. */
3636            var captchaArmedForms       = [];
3637            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
3638               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
3639               and presses Enter without ever clicking, so api.js never loaded, the captcha
3640               never rendered, and the form POSTed an empty token. */
3641            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
3642
3643            window.addEventListener('load', () => {
3644                formID = document.querySelectorAll('[name="recaptcha"]');
3645                if (typeof formID != "undefined" && formID !== null) {
3646                    for (let i = 0; i < formID.length; i++) {
3647                        let formIDForm      = formID[i].closest('form');
3648                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
3649
3650                        if (typeof formsFound[formIDForm.id] != "undefined") {
3651                            formsFound[formIDForm.id]['counter']++;
3652                        }else{
3653                            formsFound[formIDForm.id] = {'counter' : 1};
3654                        }
3655
3656                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
3657                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
3658
3659                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
3660                            captchaTriggerEvents.forEach( evt =>
3661                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
3662                            );
3663                        }
3664                    }
3665                }
3666            });
3667        }
3668
3669        function reCaptchaOnFormInteraction(event) {
3670            if (event && event.currentTarget) {
3671                captchaArmForm(event.currentTarget);
3672            }
3673            if (captchaApiRequested) {
3674                renderArmedCaptchas();
3675                return;
3676            }
3677            captchaApiRequested = true;
3678
3679            var head    = document.getElementsByTagName('head')[0];
3680            var script  = document.createElement('script');
3681            script.type = 'text/javascript';
3682            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
3683            head.appendChild(script);
3684        }
3685
3686        var captchaArmForm = function (formEl) {
3687            if (!formEl) {
3688                return;
3689            }
3690            for (var a = 0; a < captchaArmedForms.length; a++) {
3691                if (captchaArmedForms[a] === formEl) {
3692                    return;
3693                }
3694            }
3695            captchaArmedForms.push(formEl);
3696        };
3697
3698        var captchaSolvedCallback = function (holder) {
3699            return function () {
3700                var formEl = holder.closest('form');
3701                if (!formEl) {
3702                    return;
3703                }
3704                $(formEl).find('.security_question_label').removeClass('has-error');
3705                $(formEl).find('#recaptcha_error').css('display', 'none');
3706                var notification = document.getElementById(formEl.id + '-notification');
3707                if (notification && notification.classList.contains('alert-danger-subtle')) {
3708                    $(notification).slideUp();
3709                }
3710            };
3711        };
3712
3713        var renderArmedCaptchas = function () {
3714            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
3715                return;
3716            }
3717            for (var f = 0; f < captchaArmedForms.length; f++) {
3718                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
3718aptcha]');
3719
3720                if (!holder || !holder.id || holder.getClientRects().length === 0) {
3721                    continue;
3722                }
3723                /* Guard a second render: grecaptcha throws on an element it already claimed. */
3724                if (typeof captchaHolders[holder.id] === "undefined") {
3725                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
3726                        'sitekey': '6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq',
3727                        'callback': captchaSolvedCallback(holder)
3728                    });
3729                }
3730            }
3731        };
3732
3733        var onloadCallback = function (event) {
3734            renderArmedCaptchas();
3735        };
3736
3737    </script>
vendor: 1 bytes, line 3737
3737
3738<script>
3739    $(document).ready(function(){
3740        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
3741           the submit button, so the click guard below never sees it and the form POSTed an
3742           empty token. Bound on document/capture so it runs before FormValidation's own
3743           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
3744           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
3745           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
3746        var captchaGuardedForm = document.getElementById('member_login_190');
3747        if (captchaGuardedForm) {
3748            document.addEventListener('submit', function (event) {
3749                if (event.target !== captchaGuardedForm) {
3750                    return;
3751                }
3752
3753                var formId              = captchaGuardedForm.id;
3754                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
3755                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
3756
3757                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
3758                    $("#" + formId + " .security_question_label").removeClass("has-error");
3759                    $("#" + formId + " #recaptcha_error").css("display", "none");
3760                    return;
3761                }
3762
3763                /* Unsolved, or api.js still in flight: either way there is no token to send. */
3764                event.preventDefault();
3765                event.stopImmediatePropagation();
3766                $("#" + formId + " .security_question_label").addClass("has-error");
3767                $("#" + formId + " #recaptcha_error").css("display", "block");
3768                return false;
3769            }, true);
3770        }
3771        $("#member_login_190 input[type=submit]").unbind('click');
3772        $("#member_login_190 input[type=submit]").click(function (event) {
3773
3774            var formId = $(this.form).attr('id');
3775            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
3776
3777            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
3778                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
3779                    event.preventDefault();
3780                    $("#" + formId).formValidation('validate');
3781                    $("#" + formId + " .security_question_label").addClass("has-error");
3782                    $("#" + formId + " #recaptcha_error").css("display", "block");
3783                    return false;
3784                }
3785
3786                /* Solved captcha: clear the error UI and let the click proceed untouched.
3787                   The browser then fires a REAL, button-initiated submit event, so
3788                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
3789                   checkout / native POST on login). Re-submitting here artificially broke
3790                   both ways: native form.submit() skips the FV chain (checkout rendered the
3791                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
3792                   refuses, leaving the form stuck after the first error (Bug 2). */
3793                $("#" + formId + " .security_question_label").removeClass("has-error");
3794                $("#" + formId + " #recaptcha_error").css("display", "none");
3795            }
3796        });
3797    });
3798</script>
3798</div><div class="form-actions"><input type="submit" value="Login Now" name class="btn btn-primary btn-lg btn-block " id="member_login_190-element-14"/></div><div class="login-cta-buttons"><hr class="cta-hr"><ul class="list-inline nomargin inline-block btn-block"><li class='col-md-12 norpad sm-nopad nav'><a href='/join' id='link418'  class='btn btn-success btn-block'>Are You a Local Business? <span class="inline-block">List Your Company Now</span></a></li></ul><div class="clearfix"></div></div></form>
3798<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#member_login_190").bind("submit", function() { 
3799		});}); </script>
3799                         <div class="clearfix"></div>
3800                    </div>
3801                
3802            
3803        </div>
3804    </div>
3805                        </div>
3806                    </div>
3807                </div>
3808            </div>
3809            
3810
3811
3812    <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
3813<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
3813
3814
3815<script>
3816    function clearContent(thisObj){
3817        var size;
3818        if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){
3819            size = "small";
3820        } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){
3821            size = "large";
3822        } else {
3823            size = "medium";
3824        }
3825        if(!thisObj.parent().hasClass('input_wrapper')){
3826            if(thisObj.parent().hasClass('input-group-sm')){
3827                thisObj.wrap('<span class="input-group-sm input_wrapper"></span>');
3828            } else if (thisObj.parent().hasClass('input-group-lg')){
3829                thisObj.wrap('<span class="input-group-lg input_wrapper"></span>');
3830            } else {
3831                thisObj.wrap('<span class="input_wrapper"></span>');
3832            }
3833        }
3834        if(thisObj.val() != ""){
3835            if(thisObj.hasClass('googleSuggest')){
3836                thisObj.parent().find('.fill_location').remove();
3837            }
3838            if (!thisObj.parent().find('.clear_content').length){
3839                thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`);
3840                if (thisObj.hasClass("tt-input")) {
3841            		thisObj.focus();
3842        		}
3843
3844            }
3845        }
3846            }
3847
3848    $(document).on('click', '.drp-buttons .applyBtn', function(){
3849        clearContent($(".dateRange input"));
3850    });
3851
3852    $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){
3853        clearContent($(this));
3854    });
3855
3856    $(document).ready(function(){
3857        $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){
3858            clearContent($(this));
3859        })
3860    })
3861
3862    $(document).on('click', '.clear_content', function(){
3863        $(this).parent().find('input').val('');
3864        //tt-input its a class for typeahead auto-suggest
3865        if ($(this).parent().find('input').hasClass("tt-input")) {
3866            $(this).parent().find('input').typeahead('val','');
3867        }
3868        clearContent($(this).parent().find('input'));
3869        $(this).remove();
3870    });
3871
3872	$(window).on('load', function () {
3873		setTimeout(function() {
3874			// add missing href attribute to multi-category options in search modules
3875			$('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#');
3876		}, 2000);
3877        	});
3878</script>
3878
3879
3880
3881
3882<a href="#" class="scrollup" title="scrollup">
3883    <i class="fa fa-caret-up" aria-hidden="true"></i>
3884</a>
3885<script>
3886        $(document).ready(function(){
3887        // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318.
3888        // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an
3889        // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button).
3890        if ($.fn.progressbar) {
3891            $('.progress .progress-bar').progressbar({
3892                display_text: 'fill'
3893            });
3894        }
3895        $(window).scroll(function(){
3896
3897            if ($(this).scrollTop() > 600) {
3898                $('.scrollup').fadeIn();
3899
3900            } else {
3901                $('.scrollup').fadeOut();
3902            }
3903        });
3904        $('.scrollup').click(function(){
3905            $("html, body").animate({
3906                scrollTop: 0
3907            }, 600);
3908            return false;
3909        });
3910        $('#cropButton').click(function(){
3911            var iframe = $("#cropiFrame");
3912            iframe.attr("src", iframe.data("src"));
3913        });
3914    });
3915</script>
vendor: 2 bytes, line 3915
3915
3916<script defer>
3917    var favoriteMode = "";
3918    var apiEngine = "";
3919    var api = 0;  // Set API to use. Default is 0
3920    var activeMembershipLevelEnable = "";
3921    var favoriteUserClickId = "";
3922    var bookmarkLabel = `LIKE`;
3923    var bookmarkCountLabel = `LIKES`;
3924    var currentButton;
3925
3926    function favoriteOn(lookForAll = false) {
3927        $('.col-md-6.col-md-offset-3').addClass("col-md-12").removeClass('col-md-6 col-md-offset-3');
3928        favoriteMode = 'search';
3929        if ($('.sidebarenabled').data('sidebar')) {
3930            favoriteMode = 'detail';
3931            if (!$('.sidebarenabled').siblings('.postItem').data('userid')) {
3932                $('.sidebarenabled').siblings('.listingData').remove();
3933            }
3934        }
3935        favoriteUserClickId = $('.favorite').data('activeuser');
3936        activeMembershipLevelEnable = $('.favorite').data('activefeatureenable');
3937
3938// Sets the API URL to use based on API value
3939        if (api == 0) {
3940            apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap%20Theme%20-%20Function%20-%20Add%20to%20Favorites%20Button';
3941        } else if (api == 1) {
3942            apiEngine = '/api/data/html/get/data_widgets/widget_name?name=Bootstrap Theme - Function - Add to Favorites Button';
3943        } else {
3944            apiEngine = '/api/widget/json/get/Bootstrap Theme - Function - Add to Favorites Button';
3945        }
3946        if (favoriteUserClickId) {
3947            var favoriteCounter = $('.favorite').siblings('.postItem');
3948            if ($('.sidebarenabled').data('sidebar') || lookForAll) {
3949
3950                if (favoriteCounter.length == 1) {
3951                    var favoriteMode = 'detail';
3952                    var favoriteDataType = $('.sidebarenabled').siblings('.postItem').data('datatype');
3953                    var favoriteDataId = $('.sidebarenabled').siblings('.postItem').data('dataid');
3954                    var favoritePostId = $('.sidebarenabled').siblings('.postItem').data('postid');
3955                    var favoriteUserId = [];
3956                    $('.sidebarenabled').siblings('.postItem').each(function () {
3957                        favoriteUserId.push($(this).data('userid'));
3958                    });
3959                } else {
3960                    var favoriteMode = 'multiSidebar';
3961                    var favoriteDataType = [];
3962                    var favoriteDataId = [];
3963                    var favoritePostId = [];
3964                    var favoriteUserId = [];
3965                    $('.postItem').each(function () {
3966                        favoriteDataType.push($(this).data('datatype'));
3967                        favoriteDataId.push($(this).data('dataid'));
3968                        favoritePostId.push($(this).data('postid'));
3969                        favoriteUserId.push($(this).data('userid'));
3970                    });
3971                }
3972            } else {
3973                var favoriteMode = 'search';
3974                var favoriteDataType = $('.favorite').siblings('.postItem').data('datatype');
3975                var favoriteDataId = $('.favorite').siblings('.postItem').data('dataid');
3976                if (lookForAll) {
3977                    favoriteDataType = (favoriteDataType == 10) ? 11 : 10;
3978                }
3979                if (favoriteDataType != 10) {
3980                    var favoritePostId = [];
3981                    $('.postItem').each(function () {
3982                        favoritePostId.push($(this).data('postid'));
3983                    });
3984                    var favoriteUserId = $('.favorite').siblings('.postItem').data('userid');
3985                } else {
3986                    var favoriteUserId = [];
3987                    $('.postItem').each(function () {
3988                        favoriteUserId.push($(this).data('userid'));
3989                    });
3990                    var favoritePostId = $('.favorite').siblings('.postItem').data('postid');
3991                }
3992            }
3993            favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'check');
3994        }
3995    }
3996
3997    $(document).on('click', '.favorite', function (e) {
3998        var favoriteUserClickId = $('.favorite').data('activeuser');
3999        if (favoriteUserClickId && activeMembershipLevelEnable) {
4000            var thisButton = $(this);
4001            currentButton = thisButton;
4002            $(thisButton).attr("disabled", true);
4003                        var favoriteUserClickId = $(this).data('activeuser');
4004            var favoriteUserId = $(this).siblings('.postItem').data('userid');
4005            var favoriteDataType = $(this).siblings('.postItem').data('datatype');
4006            var favoriteDataId = $(this).siblings('.postItem').data('dataid');
4007            var favoritePostId = $(this).siblings('.postItem').data('postid');
4008            $(this).toggleClass('favoriteActive');
4009            if ($(this).data('state') == 0) {
4010                favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'add');
4011                $(this).data('state', 1);
4012            } else {
4013                favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, 'delete');
4014                $(this).data('state', 0);
4015            }
4016            setTimeout(function () {
4017                $(thisButton).attr("disabled", false);
4018            }, 500);
4019        }
4020    });
4021
4022    function toogleBookmark(node) {
4023        var postId = $(node).data('postid');
4024        var count = $(node).data('count');
4025        var numberNode = $(node).find("#number-" + postId);
4026        var textLabelNode = $(node).find("#bookmark-content");
4027
4028        if ($(node).hasClass('favoriteActive') !== false) {
4029            count--;
4030        } else {
4031            count++;
4032        }
4033
4034        $(node).data("count", count);
4035
4036        if (count > 0) {
4037            $(textLabelNode).html(bookmarkCountLabel);
4038            $(numberNode).html(' (' + count + ')');
4039        } else {
4040            $(textLabelNode).html(bookmarkLabel);
4041            $(numberNode).html('');
4042        }
4043    }
4044
4045    // Function that Adds, Deletes and Selects Favorites from Backend
4046    function favoriteCall(favoriteUserClickId, favoriteUserId, favoriteDataType, favoriteDataId, favoritePostId, favoriteMode, favoriteAction) {
4047        $.post(apiEngine, {
4048            favoriteUserClickId: favoriteUserClickId,
4049            favoriteUserId: favoriteUserId,
4050            favoriteDataType: favoriteDataType,
4051            favoriteDataId: favoriteDataId,
4052            favoritePostId: favoritePostId,
4053            favoriteMode: favoriteMode,
4054            favoriteAction: favoriteAction
4055        }, function (data) {
4056            if (api == 0) {
4057                var splitData = data.split('<split>');
4058                data = splitData[1];
4059            }
4060
4061            if(favoriteAction == "add" && data == "save_favorite_error"){
4062                $(currentButton).trigger('click');
4063                swal({
4064                    type:"warning",
4065                    title: `Action Unavailable`,
4066                    html: `Your account is currently not ACTIVE. <br> Only ACTIVE accounts can perform this action.`,
4067                });
4068            }
4069            
4070            if (data !== null && data !== 'null') {
4071                // Checks if the action 'check' was send
4072                if (favoriteAction == 'check' && favoriteMode != 'multiSidebar') {
4073                    // Checks if we are in a Detail Page
4074                    if (!$('.sidebarenabled').data('sidebar')) {
4075                        // Checks if we are viewing a Member
4076                        if (favoriteDataType != 10) {
4077                            $.each(JSON.parse(data), function (index, value) {
4078                                $('.postItem[data-postid="' + value + '"]').siblings('.favorite').addClass('favoriteActive');
4079                                $('.postItem[data-postid="' + value + '"]').siblings('.favorite').data('state', 1);
4080                            });
4081                        } else {
4082                            $.each(JSON.parse(data), function (index, value) {
4083                                $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').addClass('favoriteActive');
4084                                $('.member_results .postItem[data-userid="' + value + '"]').siblings('.favorite').data('state', 1);
4085                            });
4086                        }
4087                    } else {
4088                        // Checks if we are viewing a Member
4089                        if (favoriteDataType != 10) {
4090                            $.each(JSON.parse(data), function (index, value) {
4091                                $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive');
4092                                $('.sidebarenabled').siblings('.favorite').data('state', 1);
4093                            });
4094                        } else {
4095                            $.each(JSON.parse(data), function (index, value) {
4096                                $('.sidebarenabled').siblings('.favorite').addClass('favoriteActive');
4097                                $('.sidebarenabled').siblings('.favorite').data('state', 1);
4098                            });
4099                        }
4100                    }
4101                } else if (favoriteAction == 'check' && favoriteMode == 'multiSidebar') {
4102                    let totalDataCount = JSON.parse(data);
4103                    if (totalDataCount) {
4104                        totalDataCount = totalDataCount.length;
4105                        for (let i = 0; i < totalDataCount; i++) {
4106                            if (JSON.parse(data)[i].dataQuery != 0) {
4107                                $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').addClass('favoriteActive');
4108                                $('.postItem[data-postid="' + JSON.parse(data)[i].postQuery + '"][data-dataid="' + JSON.parse(data)[i].dataQuery + '"]').siblings('.favorite').data('state', 1);
4109                            } else {
4110                                /* dataQuery == 0 means a MEMBER favorite (users_favorite dataType 10).
4111                                   Restrict the match to member-type spans: on profile pages the owner's
4112                                   post spans carry the same data-userid, and without this filter one
4113                                   member favorite marked every post button of that owner as saved. */
4114                                $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').addClass('favoriteActive');
4115                                $('.postItem[data-userid="' + JSON.parse(data)[i].postQuery + '"][data-datatype="10"]').siblings('.favorite').data('state', 1);
4116                            }
4117                        }
4118                    }
4119                }
4120            }
4121        });
4122    }
4123
4124    // Code that runs once to show all favored posts by a registered user
4125
4126    favoriteOn();
4127    favoriteOn(true);
4128</script>
4128<script>
4129    const listView = document.getElementsByClassName('listView')[0];
4130    const gridView = document.getElementsByClassName('gridView')[0];
4131    const queryString = {"sized":0,"mysql_real_escape_string_runned":"1","form":"myform","formname":"member_login","dowiz":1,"save":1,"url_origin_pars":"\/search_results"};
4132    const profId = ``;
4133    const servId =null;
4134    const countryId = ``;
4135    const stateId = ``;
4136    const cityId = ``;
4137    const seed = ``;
4138    const profs = {"new_filename":"search_results"};
4139    const btnPositionInside = document.querySelector('.grid-container .clickToLoadMoreContainer');
4140    const btnPositionOutside = document.querySelector('.grid-container ~ .clickToLoadMoreContainer');
4141    const amountToSum = 9;
4142    let currentAmountText = document.querySelector('.current__amount__js');
4143    let totalAmount = document.querySelector('.total__js');
4144    let btnClickMore = document.getElementsByClassName('clickToLoadMoreBtn')[0];
4145    let btnClickMoreContainer = document.getElementsByClassName('clickToLoadMoreContainer')[0];
4146    let flagFirstTime = true;
4147    let autoLoadResults = true;
4148    let lastElementPost ;
4149    if(typeof totalAmount !== "undefined" && totalAmount !== null){
4150        let removeCommasAndDots = /[.,\s]/g;
4151        totalAmount = totalAmount.innerHTML.replace(removeCommasAndDots, '');
4152    }
4153    /*event listener*/
4154    if (typeof btnClickMore !== "undefined") {
4155        btnClickMore.addEventListener('click',  function (event) {
4156            let viewIcons = document.querySelectorAll('.views i.gridView.activeView')[0];
4157            let featureDCId = this.dataset.dc;
4158            let currentPage = this.dataset.page;
4159            let dataType = this.dataset.type;
4160            let levId = this.dataset.lvl;
4161            this.dataset.page = parseInt(currentPage) + 1;
4162            let url = `/wapi/widget`;
4163            let currentBTN = this;
4164            let currentHTML = this.innerHTML;
4165            lastElementPost = document.querySelectorAll('.search_result');
4166            this.classList.add('loadingMore');
4167            this.innerHTML = `<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading...`;
4168            let formData = new FormData();
4169            autoLoadResults=false;
4170            setClassLoaded();
4171
4172            formData.append('dc_id', featureDCId);
4173            formData.append('header_type', 'html');
4174            formData.append('request_type', 'POST');
4175            formData.append('currentPage', currentPage);
4176            formData.append('dataType', dataType);
4177            formData.append('queryString', JSON.stringify(queryString));
4178            formData.append('profId', profId);
4179            formData.append('servId', JSON.stringify(servId));
4180            formData.append('countryId', countryId);
4181            formData.append('stateId', stateId);
4182            formData.append('cityId', cityId);
4183            formData.append('levId', levId);
4184            formData.append('seed', seed);
4185            formData.append('profsPost', JSON.stringify(profs));
4186            formData.append('widget_name', 'Add-On - Bootstrap Theme - Search - Lazy Loader');
4187            let myInit = {
4188                method: 'POST',
4189                body: formData
4190            };
4191            fetch(url, myInit)
4192                .then(function (response) {
4193                    return response.text();
4194                }).then(function (html) {
4195                let parser = new DOMParser();
4196
4197                // Parse the text
4198                let result = parser.parseFromString(html, "text/html");
4199                let newResultsHTML = result.getElementById('grabHTML__js').innerHTML;
4200                autoLoadResults =true;
4201                let amountOfClicks = result.getElementById('grabHTML__js').dataset.pages;
4202
4203                var countBefore = $('.grid-container .search_result').length;
4204
4205                if (typeof btnPositionOutside !== "undefined" && btnPositionOutside !== null) {
4206                    $('.grid-container').append(newResultsHTML);
4207                }
4208                if (typeof btnPositionInside !== "undefined" && btnPositionInside !== null || btnPositionOutside === null && dataType == 13) {
4209                    $('.clickToLoadMoreContainer').before(newResultsHTML);
4210                }
4211
4212                // Fade in only the actually new results
4213                var newCount = $('.grid-container .search_result').length - countBefore;
4214                var $allNew = $('.grid-container .search_result').slice(-newCount);
4215                $allNew.css({opacity: 0, transition: 'opacity 0.4s ease'});
4216
4217                currentBTN.innerHTML = currentHTML; // default html
4218                currentBTN.classList.remove('loadingMore');
4219
4220                if (typeof viewIcons !== 'undefined') {
4221                    applyGridClasses($allNew);
4222                    // Recalculate gridBreak classes and hide clearfix/hr between grid items
4223                    $('.gridBreak').removeClass('gridBreak');
4224                    /* Row-break stride must follow the column class actually on the page, same rule as applyGridClasses */
4225                    var bdGridFourPerRow = $('.grid-container .search_result.col-md-3.grid').length > 0;
4226                    $('.grid-container.visible > hr:nth-of-type(' + (bdGridFourPerRow ? '4n' : '3n') + ')').addClass('gridBreak');
4227                    $('.grid-container .col-md-4 + .clearfix:not(.search_result), .grid-container .col-md-3 + .clearfix:not(.search_result), .grid-container .clearfix + hr, .grid-container hr + .clearfix:not(.search_result)').hide();
4228                    if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
4229                        setTimeout(function(){
4230                            $('.grid-container').masonry('appended', $allNew);
4231                            setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
4232                            checkAllImagesLoaded();
4233                        }, 500);
4234                    } else {
4235                        setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
4236                        checkAllImagesLoaded();
4237                    }
4238                } else {
4239                    setTimeout(function(){ $allNew.css('opacity', 1); }, 50);
4240                }
4241                if (typeof favoriteOn == 'function') {
4242                    favoriteOn();
4243                }
4244                if (typeof runRoyalSlider == 'function') {
4245                    runRoyalSlider();
4246                }
4247
4248                setAmountPages(currentBTN, amountOfClicks);
4249                if (typeof currentAmountText !== "undefined" && currentAmountText !== null) {
4250                    let newAmount = parseInt(currentAmountText.innerHTML) + parseInt(amountToSum);
4251                    if (newAmount >= parseInt(totalAmount)) {
4252                        newAmount = document.querySelector('.total__js').innerHTML;
4253                    }
4254                    currentAmountText.innerHTML = newAmount.toString()
4255                }
4256                if (typeof google != "undefined" && google.hasOwnProperty('maps')){
4257                    if (typeof initializeMapSR == 'function') {
4258                        initializeMapSR();
4259                    }else{
4260                        $('.mapView.activeView').click();
4261                    }
4262                }
4263            }).catch((error) => {
4264                console.error('Error:', error);
4265            });
4266        });
4267        // Check if insta_load_btn_behavior is set
4268        
4269    }
4270    if (typeof gridView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
4271        gridView.addEventListener('click', function () {
4272            gridView.classList.add('activeView');
4273            if (gridView.classList.contains('activeView')) {
4274                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
4275            } else {
4276                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
4277            }
4278        });
4279    }
4280    if (typeof listView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
4281
4282        listView.addEventListener('click', function () {
4283            listView.classList.add('activeView');
4284            if (listView.classList.contains('activeView')) {
4285                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
4286            } else {
4287                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
4288            }
4289        });
4290    }
4291
4292    function setAmountPages(btn, amount) {
4293        if (!("pages" in btn.dataset)) {
4294            btn.dataset.pages = parseInt(amount) - 1; // we do -1 because the one just clicked
4295        } else {
4296            btn.dataset.pages = parseInt(btn.dataset.pages) - 1;
4297        }
4298        if (btn.dataset.pages <= 0) {
4299            removeListenToScroll();
4300            btn.remove();
4301        }
4302    }
4303
4304    function setClassLoaded() {
4305        if (flagFirstTime) {
4306            flagFirstTime = false;
4307            let images = document.querySelectorAll('.grid-container img:not(.loaded)');
4308            images.forEach(image => {
4309                image.classList.add("loaded");
4310            });
4311        }
4312    }
4313    function applyGridClasses($el) {
4314        $el.find('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
4315        $el.find('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
4316        $el.find('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
4317        $el.find('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
4318        $el.find('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
4319        $el.find('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
4320        $el.find('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
4321        $el.find('.mid_section .post-location-snippet').addClass('text-center');
4322        $el.find('.mid_section.ex-col-7 .sm-block').addClass('show');
4323        $el.find('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
4324        $el.find('.mid_section .row-fluid.bpad a').addClass('btn-block');
4325        $el.find('.mid_section .row-fluid.bpad').addClass('text-center');
4326        $el.find('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
4327        $el.find('.mid_section > div > p').addClass('text-center');
4328        $el.find('.mid_section h2').addClass('nomargin');
4329        $el.find('.mid_section a.h3').addClass('text-center h4 tmargin');
4330        $el.find('.mid_section .view-details').removeClass('rmargin');
4331        $el.find('.mid_section .contact-member').removeClass('lmargin');
4332        $el.find('.member-search-full-name').removeClass('rmargin');
4333        $el.find('.member-search-reviews').removeClass('rmargin');
4334        $el.find('.member-search-location').removeClass('rmargin rpad');
4335        $el.find('.member-search-company').addClass('btn-block');
4336        $el.find('.view_phone_number').addClass('center-block');
4337        $el.find('.phone_number').addClass('btn-block');
4338        $el.find('.search_result_image').addClass('grid_image');
4339        $el.find('.post-search-category').removeClass('inline-block').addClass('text-center');
4340        $el.find('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
4341        /* Mirror the column class the initial conversion (widget 2294) already applied - re-evaluating the conditions here can disagree and mix 3-per-row with 4-per-row; 2294 owns the decision (incl. the Web Page sidebar override) */
4342        if ($('.grid-container .search_result.col-md-3.grid').not($el).length > 0) {
4343            $el.addClass('col-xs-12 col-sm-3 col-md-3 grid').removeClass('row-fluid');
4344        } else {
4345            $el.addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
4346        }
4347        $el.find('.grid_element').addClass('well xs-center-block');
4348        $el.find('.col-md-3 + .clearfix, .col-md-4 + .clearfix, .clearfix + hr, hr + .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags, table.bmargin,.posted-by,.star_rating .the-rating-text').hide();
4349        $el.find('h2.h3.bold > a').addClass('gridA');
4350        $el.find('.info_section .module').removeClass('module fpad');
4351    }
4352
4353    function refreshUI(){
4354        if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
4355            $('.grid-container').masonry('layout');
4356        }
4357    }
4358    function checkAllImagesLoaded() {
4359        let images = document.querySelectorAll('.grid-container img:not(.loaded)');
4360        let countImg = 0;
4361
4362        if (images.length === 0) {
4363            refreshUI();
4364            return;
4365        }
4366
4367        images.forEach(image => {
4368            image.classList.add("loaded");
4369
4370            if (image.complete) {
4371                countImg++;
4372                if (countImg === images.length) {
4373                    refreshUI();
4374                }
4375                return;
4376            }
4377
4378            image.addEventListener('load', () => {
4379                countImg++;
4380                if (countImg === images.length) {
4381                    refreshUI()
4382                }
4383            });
4384            image.addEventListener('error', () => {
4385                countImg++;
4386                if (countImg === images.length) {
4387                    refreshUI()
4388                }
4389            });
4390        });
4391
4392    }
4393
4394    // Variables
4395    let userStartedScrolling = false;  // Flag to check if the user has started scrolling
4396    let wasPreviouslyInViewport = false;  // To track if the button was in the viewport previously
4397
4398
4399    // Function to remove the scroll event listener
4400    function removeListenToScroll(){
4401        window.removeEventListener('scroll', listenToScroll);
4402    }
4403
4404    // Function to check button visibility and load content
4405    function listenToScroll() {
4406        const isInViewport = isElementInViewport(btnClickMore);
4407
4408        // Check if the button has just entered the viewport
4409        const justEnteredViewport = !wasPreviouslyInViewport && isInViewport;
4410
4411        // If button just entered the viewport, user has started scrolling, and autoLoadResults is true
4412        if (userStartedScrolling && justEnteredViewport && autoLoadResults) {
4413            // Add a delay (2 seconds) before automatically clicking the button to load content
4414            setTimeout(function() {
4415                btnClickMore.click();
4416                autoLoadResults = false; // Set the flag too false to avoid subsequent auto-clicks
4417            }, 2000);
4418        }
4419
4420        // If the button is out of the viewport, reset autoLoadResults
4421        if (!isInViewport) {
4422            autoLoadResults = true;
4423        }
4424
4425        // Update the previous viewport status for the next check
4426        wasPreviouslyInViewport = isInViewport;
4427    }
4428
4429    // Function to determine if a DOM element is in the viewport
4430    function isElementInViewport(el) {
4431        const rect = el.getBoundingClientRect();
4432        return (
4433            rect.top >= 0 &&
4434            rect.left >= 0 &&
4435            rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
4436            rect.right <= (window.innerWidth || document.documentElement.clientWidth)
4437        );
4438    }
4439
4440</script>
vendor: 2 bytes, line 4440
4440
4441<script type="text/javascript">
4442
4443
4444
4445    //function to get url GET parameters
4446    function getUrlParameter(sParam) {
4447        var sPageURL = window.location.search.substring(1);
4448        var sURLVariables = sPageURL.split('&');
4449
4450        for (var i = 0; i < sURLVariables.length; i++) {
4451            var sParameterName = sURLVariables[i].split('=');
4452            if (sParameterName[0] == sParam) {
4453                return decodeURIComponent(sParameterName[1]);
4454            }
4455        }
4456    }
4457
4458    //stating variables for the first initialize of the sidebar map
4459    var mapSR;
4460    var geocoder;
4461    var mapSRLat = parseFloat(getUrlParameter('lat'));
4462    var mapSRLng = parseFloat(getUrlParameter('lng'));
4463    var theZoom = 8;
4464    var bounds;
4465    if (isNaN(mapSRLat) || isNaN(mapSRLng)) {
4466
4467        mapSRLat = parseFloat(42.877742);
4468        mapSRLng = parseFloat(-97.380979);
4469        theZoom = parseFloat('6');
4470    }
4471    //function that initializes the creation of the google map
4472    function setJsMapSR(element=null) {
4473        if (window['setJsMapSR_var'] ===true) {
4474            return;
4475        }
4476        if(element == null){
4477            element = document.getElementById('map-canvas');
4478            if (element === null) {
4479                element = document.querySelector('div[data-id]');
4480            }
4481        }
4482        window['setJsMapSR_var']=true;
4483                var styles = [{"featureType":"landscape","stylers":[{"hue":"#FFBB00"},{"saturation":43.400000000000006},{"lightness":37.599999999999994},{"gamma":1}]},{"featureType":"road.highway","stylers":[{"hue":"#FFC200"},{"saturation":-61.8},{"lightness":45.599999999999994},{"gamma":1}]},{"featureType":"road.arterial","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":51.19999999999999},{"gamma":1}]},{"featureType":"road.local","stylers":[{"hue":"#FF0300"},{"saturation":-100},{"lightness":52},{"gamma":1}]},{"featureType":"water","stylers":[{"hue":"#0078FF"},{"saturation":-13.200000000000003},{"lightness":2.4000000000000057},{"gamma":1}]},{"featureType":"poi","stylers":[{"hue":"#00FF6A"},{"saturation":-1.0989010989011234},{"lightness":11.200000000000017},{"gamma":1}]}];
4484            var styledMap = new google.maps.StyledMapType(styles, {name: "Styled Map"});
4485        
4486        let mapDivElement = element;
4487        if (typeof mapDivElement !== undefined && mapDivElement != null) {
4488            var mapSROptions = {
4489                center: {lat: mapSRLat, lng: mapSRLng},
4490                mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']},
4491                mapTypeControl: false,
4492                zoom: theZoom,
4493                controlSize: 26,
4494                mapSRTypeControl: false,
4495                streetViewControl: false,
4496                scrollwheel: false
4497            };
4498            mapSR = new google.maps.Map(mapDivElement, mapSROptions);
4499                        mapSR.mapTypes.set('map_style', styledMap);
4500            mapSR.setMapTypeId('map_style');
4501            
4502            //This piece of code will create an autosuggest for every input with the class "googleSuggest"
4503            var counter = 1;
4504            var inputsArray = [];
4505            initializeMapSR(); // add markers
4506        }
4507    }
4508
4509    function isFloat(value) {
4510        value = parseFloat(value);
4511        if (
4512            typeof value === 'number' &&
4513            !Number.isNaN(value) &&
4514            !Number.isInteger(value)
4515        ) {
4516            return true;
4517        }
4518
4519        return false;
4520    }
4521
4522    function initializeMapSR() {
4523        //the markers process will only happen if there are spans with the class "google-pin-location"
4524        if ($('.google-pin-location:not(".marker-pin")').length > 0) {
4525            //array with all the markers
4526            var markersArray = [];
4527            // variable to close the last window
4528            var closeLastWindows = null;
4529            if (window['google_bounds'] != true) {
4530                window['google_bounds'] = true;
4531                bounds = new google.maps.LatLngBounds();
4532            }
4533            //function that will set a marker on the map for each user location
4534            $('.google-pin-location:not(".marker-pin")').each(function () {
4535                $(this).addClass('marker-pin');
4536                if( !isFloat($(this).attr("data-lat"))  ||  !isFloat($(this).attr("data-lng"))){
4537                    return;
4538                }
4539
4540                // Making the icon
4541                var iconImage = '/images/marker.png';
4542                //var markerLatLng = parseFloat($(this).attr("data-lat"))+","+parseFloat($(this).attr("data-lng"));
4543                var markerLatLng = {lat:parseFloat($(this).attr("data-lat")),lng:parseFloat($(this).attr("data-lng"))};
4544                var markerName = $(this).attr("data-name");
4545                var marker = new google.maps.Marker({
4546                    position: markerLatLng,
4547                    map: mapSR,
4548                    icon: iconImage,
4549                    title: markerName
4550                });
4551                bounds.extend(markerLatLng);
4552                var hideLink = $(this).attr('data-hideMessages');
4553                                var phonehtml = '';
4554                if ($(this).attr("data-phone") != "") {
4555                    phonehtml = '<p class="btn-xs btn-default btn-block"><i class="fa fa-phone fa-fw"></i>' + $(this).attr("data-phone") + '</p>';
4556                                        if ($(this).attr("data-addon") == 1) {
4557                        phonehtml = '<div class="btn btn-xs btn-block btn-secondary btn-outline js-btn" onClick="clickToCall(this, false)" title="Show Phone Number" data-token="' + $(this).attr("data-token") +'">Show Phone Number</div><p class="hide btn-phone btn btn-xs btn-block tmargin btn-secondary btn-outline"><i class="fa fa-phone fa-fw"></i> <a href="tel:' + $(this).attr("data-phone") +'"><span class="text-secondary">' + $(this).attr("data-phone") + '</span></a></p>';
4558                    }
4559                                    }
4560
4561                if (hideLink == 1) {
4562                    marker['infowindow'] = new google.maps.InfoWindow({
4563                        content: `<div class="info_window">
4564                                        <img src="` + $(this).attr("data-photo") + `">` +
4565                            `<a class="h5 bold" href=` + $(this).attr("data-filename") + `>`
4566                            + $(this).attr("data-name") +
4567                            `</a>`
4568                            + phonehtml +
4569                            `<a class="btn btn-xs btn-success btn-block view_profile" href=` + $(this).attr("data-filename") + `>
4570                                            View Listing
4571                                        </a>` +
4572                            `</div>`
4573                    });
4574                } else {
4575                    marker['infowindow'] = new google.maps.InfoWindow({
4576                        content: `<div class="info_window">
4577                                        <img src="` + $(this).attr("data-photo") + `">` +
4578                            `<a class="h5 bold" href=` + $(this).attr("data-filename") + `>`
4579                            + $(this).attr("data-name") +
4580                            `</a>`
4581                            + phonehtml +
4582                            `<a class="btn btn-xs btn-primary btn-block view_profile" href=` + $(this).attr("data-filename") + `>
4583                                            View Listing
4584                                        </a>` +
4585                            `<a class="btn btn-xs btn-secondary btn-block contact_now" href=` + $(this).attr("data-filename") + `/connect>
4586                                            Send Message
4587                                        </a>` +
4588                            `</div>`
4589                    });
4590                }
4591                                // assuming you also want to hide the infowindow when user mouses-out
4592
4593                function closeInfoWindows() {
4594                    if (closeLastWindows != null) {
4595                        closeLastWindows.close();
4596                    }
4597                }
4598
4599                var typeOfListener = 'mouseover'; // by default for desktop
4600                                google.maps.event.addListener(marker, typeOfListener, function () {
4601                    if (window['mapCloseTimeout']) {
4602                        clearTimeout(window['mapCloseTimeout']);
4603                    }
4604                    closeInfoWindows();
4605                    closeLastWindows = this['infowindow'];
4606                    this['infowindow'].open(mapSR, this);
4607                });
4608
4609                // Close infowindow when mouse leaves the marker (desktop only)
4610                if (typeOfListener === 'mouseover') {
4611                    google.maps.event.addListener(marker, 'mouseout', function () {
4612                        var self = this;
4613                        window['mapCloseTimeout'] = setTimeout(function () {
4614                            self['infowindow'].close();
4615                            if (closeLastWindows === self['infowindow']) {
4616                                closeLastWindows = null;
4617                            }
4618                        }, 300);
4619                    });
4620                }
4621
4622            });
4623
4624            // Keep infowindow open when mouse hovers over its content (desktop only)
4625            $(document).on('mouseenter', '.gm-style-iw', function () {
4626                if (window['mapCloseTimeout']) {
4627                    clearTimeout(window['mapCloseTimeout']);
4628                }
4629            }).on('mouseleave', '.gm-style-iw', function () {
4630                if (closeLastWindows != null) {
4631                    closeLastWindows.close();
4632                    closeLastWindows = null;
4633                }
4634            });
4635
4636            mapSR.fitBounds(bounds);
4637        }
4638        if ($('#map-canvas').length > 0) {
4639            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>";
4640            $('body').append(cssHideLogo);
4641
4642        } else {
4643            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>";
4644            $('body').append(cssHideLogo);
4645        }
4646    }
4647
4648    function showPhone(elemente) {
4649  $(elemente).addClass("hide").siblings().removeClass("hide");
4650}
4651    function initGMap() {
4652		
4653			// Check if the map is loaded.
4654			const mapIconView = document.querySelector('.mapView');
4655			if (typeof mapIconView !== undefined && mapIconView != null) {
4656				mapIconView.addEventListener('click', initGMap);
4657				mapIconView.removeEventListener('click', initGMap);
4658			}
4659			const mapDivID = document.getElementById('map-canvas');
4660
4661			if (typeof google === 'object' && google.hasOwnProperty('maps')) {
4662				// Set the map source.
4663				setJsMapSR(mapDivID);
4664			} else {
4665				// If the map is not loaded, wait for it to load before setting the source.
4666				googleMapOnFormClick().then(() => {
4667					setJsMapSR(mapDivID);
4668				});
4669			}
4670
4671			    }
4672
4673    window.addEventListener('load', () => {
4674        // Get the lazy map div, either by data-id or by ID.
4675        const lazyMapDiv = document.querySelector('div[data-id]')
4676        const mapDivID = document.getElementById('map-canvas');
4677        // Add a delay to allow the map to load before initializing it.
4678        setTimeout(() => {
4679            // Check if the map div exists.
4680            if (typeof lazyMapDiv !== "undefined" && lazyMapDiv !== null) {
4681                lazyMapDiv.id = lazyMapDiv.dataset.id;
4682                let mapIconView = document.querySelector('.mapView');
4683                if (typeof mapIconView !== undefined && mapIconView != null) {
4684                    mapIconView.addEventListener('click', initGMap);
4685                    // If map view is already active, initialize immediately
4686                    if (mapIconView.classList.contains('activeView')) {
4687                        initGMap();
4688                    }
4689                }
4690            } else if (typeof mapDivID !== "undefined" || mapDivID !== null) {
4691                // Initialize the map.
4692                initGMap();
4693            }
4694        }, 500);
4695    });
4696</script>
4696<script>
4697
4698$('.view_phone_number').click(function(event){
4699  event.preventDefault();
4700  $(this).hide();
4701  $(this).next('span.phone_number').css("display","inline-block");  
4702});
4703</script>
4703
4704
4705
4706        
4706<script type="text/javascript">
4707            // Try to load coordinates from sessionStorage on page load
4708            var vlat        = 0;
4709            var vlon        = 0;
4710            try {
4711                var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4712                var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4713                if (savedLat && savedLon) {
4714                    vlat = parseFloat(savedLat);
4715                    vlon = parseFloat(savedLon);
4716                }
4717            } catch(e) {}
4718            var isSubmit    = false;
4719            var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests
4720            
4721            // Function to save coordinates to sessionStorage
4722            function saveCoordinatesToSession(lat, lon) {
4723                try {
4724                    sessionStorage.setItem('bd_geolocation_lat', lat.toString());
4725                    sessionStorage.setItem('bd_geolocation_lon', lon.toString());
4726                } catch(e) {}
4727            }
4728            
4729            // Function to get coordinates from sessionStorage if current ones are 0
4730            function getCoordinatesFromSession() {
4731                if (vlat === 0 && vlon === 0) {
4732                    try {
4733                        var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4734                        var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4735                        if (savedLat && savedLon) {
4736                            vlat = parseFloat(savedLat);
4737                            vlon = parseFloat(savedLon);
4738                            return true;
4739                        }
4740                    } catch(e) {}
4741                }
4742                return false;
4743            }
4744            var cityTypes       = [
4745                'colloquial_area',
4746                'locality',
4747                'sublocality',
4748                'sublocality_level_1',
4749                'sublocality_level_2',
4750                'sublocality_level_3',
4751                'sublocality_level_4',
4752                'sublocality_level_5',
4753                'neighborhood',
4754                'ward',
4755                'postal_town'
4756            ];
4757
4758            var postalTypes = [
4759                'postal_code',
4760                'postal_code_prefix',
4761                'postal_code_suffix',
4762                'street_number',
4763                'premise',
4764                'subpremise',
4765                'route',
4766                'intersection',
4767                'street_address',
4768                'floor',
4769                'room',
4770                'post_box',
4771                'delivery_address'
4772            ];
4773
4774            var isSubmitting = false;
4775            window.cachedSelectedOption = [{ 'typed_location': '' }];
4776            window.isSubmittingMainSearch = false;
4777
4778            document.addEventListener('DOMContentLoaded', () => {
4779                let isSubmitting = false; // Add flag at the top level
4780
4781                setTimeout(()=>{
4782                    let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location');
4783                    if (typeof googleSuggestForm != "undefined") {
4784                        for (let i = 0; i < googleSuggestForm.length; i++) {
4785                            let closestForm = googleSuggestForm[i].closest('form');
4786                            if(typeof closestForm != "undefined" && closestForm != null){
4787                                closestForm.addEventListener('focusin', googleMapOnFormClick, false);
4788
4789                            }else{
4790                                googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false);
4791                            }
4792                                googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false);
4793                            }
4794                        }
4795                },200);
4796
4797                $('.website-search button[type=submit]').click(async function (e) {
4798                    e.preventDefault(); // Prevent the default submit action
4799                    var nativeForm = $(this).closest('form')[0];
4800                    if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
4801                        return false;
4802                    }
4803                    await googleMapOnFormClick();
4804                    $(this).closest('form').submit();
4805                });
4806            });
4807             window['gmapClick'] = false;
4808            function googleMapOnFormClick() {
4809                if(window.gmapClick){
4810                    return;
4811                }
4812                window.gmapClick = true;
4813                
4814                return new Promise((resolve, reject) => {
4815                    window.isSubmittingMainSearch = false;
4816                    let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location');
4817                    let mapUri = "https://maps.googleapis.com/ma
4817ps/api/js?v=quarterly&libraries=places&region=US&callback=initializeG&language=en&key=AIzaSyDbfKV3pdAqtZWJp2D8818eBlTy7zr0DQk";
4818                    
4819                    if (typeof google !== "undefined" && google.hasOwnProperty('maps')) {
4820                        resolve('already loaded');
4821                        return;
4822                    }
4823
4824                    let loadMapScriptAsync = function (uri) {
4825                        return new Promise((resolve, reject) => {
4826                            let script = document.createElement('script');
4827                            script.type = 'text/javascript';
4828                            script.src = uri;
4829                            script.async = true;
4830                            script.onload = function () {
4831                                resolve("ok");
4832                            };
4833                            script.onerror = function () {
4834                                reject("Failed to load Google Maps script.");
4835                            };
4836                            document.head.appendChild(script);
4837                        });
4838                    };
4839
4840                        loadMapScriptAsync(mapUri)
4841                            .then(() => {
4842                                resolve();
4843                            })
4844                            .catch((error) => {
4845                                console.error(error);
4846                                reject();
4847                            });
4848                  
4849                });
4850            }
4851
4852            function initializeG() {
4853                var geocoder;
4854                //This piece of code will create an autosuggest for every input with the class "googleSuggest"
4855                var counter = 1;
4856                var inputsArray = [];
4857                window.cachedSelectedOption = [{ 'typed_location': '' }];
4858                let mapExists = document.querySelectorAll('[id^="map"]').length > 0;
4859                const functionsToInvoke = {
4860                    setJsMap: true,
4861                    setJsMapOverview: mapExists,
4862                    setJsMapSR: mapExists,
4863                    setJsMapSidebar: mapExists
4864                };
4865                if (window['maps_loaded'] !== true) {
4866                    for (let func in functionsToInvoke) {
4867                        if (typeof window[func] === 'function' && functionsToInvoke[func]) {
4868                            window['maps_loaded'] = true;
4869                            window[func]();
4870                        }
4871                    }
4872                }
4873                $(".googleSuggest").each(function () {
4874                    //get the id from the input to be the unique identifier for each autocomplete
4875                    var inputId = $(this).attr("id");
4876                    var inputElement = $(this);
4877                    inputsArray[counter] = /** @type {HTMLInputElement} */(
4878                        document.getElementById('' + inputId));
4879                    const mainCountry = '';
4880                    const inputOptions = {
4881                        fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
4882                        types: ['geocode']
4883                    }
4884                    const language = "en";
4885
4886                    if (language) {
4887                        inputOptions.language = language;
4888                    }
4889                    if (mainCountry) {
4890                        inputOptions.componentRestrictions = {country: mainCountry};
4891                        inputOptions.region = mainCountry;
4892                    }
4893
4894                    var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions);
4895                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
4896                        const place = autocomplete.getPlace();
4897
4898                        cachedSelectedOption = [];
4899                        cachedSelectedOption.push(place);
4900
4901                        cachedSelectedOption[0]['typed_location'] = inputElement.val();
4902                       /* if(cachedSelectedOption[0]['adr_address']){
4903                            let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, '');
4904                            cachedSelectedOption[0]['typed_location'] = cleanLocation;
4905                            inputElement.val(cleanLocation);
4906                        }*/
4907                        if (cachedSelectedOption[0]['address_components'] == undefined) {
4908                            cachedSelectedOption = [];
4909                            var emptyObj = {
4910                                'typed_location': ''
4911                            };
4912                            cachedSelectedOption.push(emptyObj);
4913                        }
4914                    });
4915                    //the code that prevents the submition when hit enter on a google location autocomplete item
4916                    inputElement.keydown( function (e) {
4917                        if (e.keyCode == 13) {
4918                            var pacCounter = 0;
4919                            //need to run a loop to check each pac container
4920                            $('.pac-container').each(function () {
4921
4922                                if ($(this).css("display") != "none") {
4923                                    pacCounter++;
4924                                }
4925                            });
4926                            if (pacCounter > 0) {
4927                                e.preventDefault();
4928                            }
4929                        }
4930                    });
4931                    counter++;
4932                });
4933
4934                //triggers every time a form with the id website-search is trigered
4935                $('.website-search').submit(function (e) {
4936
4937                    var currentForm = $(this);
4938                    var locationInput = $(this).find(".googleLocation");
4939                    var $submitButton = currentForm.find('input[type=submit], button[type=submit]');
4940
4941
4942                    if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') {
4943
4944                        // Set submitting flag
4945                        window.isSubmittingMainSearch = true;
4946                        $submitButton.prop('disabled', true);
4947
4948                        e.preventDefault();
4949                        //this variable has the main country of the site
4950                        var form = currentForm;
4951                        var urlGET = form.serialize();
4952                        var formActionUrl = form.attr("action");
4953                        var locationValue = locationInput.val();
4954
4955
4956
4957                        const mainCountry = '';
4958                        const inputOptions = {
4959                            address:locationValue
4960                        }
4961                        const language = "en";
4962
4963                        if (language) {
4964                            inputOptions.language = language;
4965                        }
4966                        if (mainCountry) {
4967                            inputOptions.componentRestrictions = {country: mainCountry};
4968                            inputOptions.region = mainCountry;
4969                        }
4970
4971                        if (typeof cachedSelectedOption == 'undefined') {
4972                            var emptyForm = {
4973                                'typed_location': ''
4974                            };
4975                            cachedSelectedOption.push(emptyForm);
4976                        }
4977
4978                        if (locationValue != cachedSelectedOption[0]['typed_location']) {
4979                            geocoder = new google.maps.Geocoder();
4980                            geocoder.geocode(inputOptions, function (results, status) {
4981
4982                                //if the google response of the geocoding was successful it will use that info to build the url for the new search
4983                                if (status == google.maps.GeocoderStatus.OK) {
4984                                    parseInfoToSearch(results, urlGET, formActionUrl);
4985
4986                                } else {
4987                                    var urlPath = formActionUrl;
4988                                    var redirect = urlPath + "?" + urlGET;
4989                                    //will redirect the page using the new url that has been constructed
4990                                    window.location.href = redirect;
4991                                }
4992                            });
4993
4994                        } else {
4995                            parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl);
4996                        }
4997                    }
4998                });
4999
5000
5001                //check if a map has been loaded
5002                if ($('#map-canvas').length > 0) {
5003                    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>";
5004                    $('body').append(cssHideLogo);
5005                } else {
5006                    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>";
5007                    $('body').append(cssHideLogo);
5008                }
5009
5010                if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") {
5011                    populateSearchFields();
5012                }
5013
5014                if($('.googleSuggest').val() == ""){
5015                    populateSearchFields();
5016                }
5017                
5018                var geocodeVisitorsSetting = '0';
5019                var geocodingMethod = 'HTML5';
5020
5021                //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
5022
5023                var vlon = '';
5024                var vlat = '';
5025            }
5026
5027            function switchPlaceID(placeId,urlGET, formActionUrl) {
5028                let request = {
5029                    placeId: placeId,
5030                    fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'],
5031                };
5032
5033                let service = new google.maps.places.PlacesService(document.createElement('div'));
5034                service.getDetails(request, function(place, status) {
5035                    if (status === google.maps.places.PlacesServiceStatus.OK) {
5036                        let dataArray = [];
5037                        dataArray.push(place);
5038                        parseInfoToSearch(dataArray, urlGET, formActionUrl);
5039                    } else {
5040                        console.error('Place details request failed with status:', status);
5041                    }
5042                });
5043            }
5044
5045            function parseInfoToSearch(results, urlGET, formActionUrl) {
5046                var urlSearchParams = new URLSearchParams(urlGET);
5047                var parameters = {};
5048                var addressComponentsArray = [];
5049                if (results.length > 1) {
5050                    if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){
5051                        let tempResult = results[0];
5052                        results[0] = results[1];
5053                        results[1] = tempResult;
5054                    }
5055                    for (let i = 0; i < results.length; i++) {
5056                        if (results[i].types[0] === 'natural_feature' ||
5057                            results[i].types[0] === 'airport' ||
5058                            results[i].types[0] === 'point_of_interest' ||
5059                            results[i].types[0] === 'establishment' ||
5060                            results[i].types[0] === 'political' ||
5061                            results[i].types[0] === 'park') {
5062                            results.splice(i, 1);
5063                        }
5064                    }
5065                }
5066                var adComLength = results[0].address_components.length;
5067
5068                if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){
5069                    switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl);
5070                    return;
5071                }
5072                sessionStorage.setItem("google_result",JSON.stringify(results));
5073
5074                
5075                var foundPostalType     = results[0].types.find(type => postalTypes.includes(type));
5076                var foundCityType       = results[0].types.find(type => cityTypes.includes(type));
5077
5078                //loop that will build the array with the address components and will get the short name of country and administrative area level 1
5079                for (var i = 0; i < adComLength; i++) {
5080
5081                    if (results[0].address_components[i]['types'][0] == "country") {
5082                        parameters.country_sn = results[0].address_components[i]['short_name'];
5083                    }
5084                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
5085                        parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name'];
5086                    }
5087                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
5088                        parameters.stateSearchLN = results[0].address_components[i]['long_name'];
5089                    }
5090                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") {
5091                        parameters.county_sn = results[0].address_components[i]['short_name'];
5092                    }
5093                    if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) {
5094                        parameters.city = results[0].address_components[i]['long_name'];
5095                    }
5096                    if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") {
5097                        parameters.postal_code = results[0].address_components[i]['long_name'];
5098                    }
5099                }
5100
5101
5102                // Filter out 'political' from result types - use more specific type when available
5103                // Same pattern as BD-directory-maps-typePolitical (PR #5642)
5104                if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') {
5105                    results[0].types.splice(0, 1);
5106                }
5107
5108                // Pick the most specific type from results, skip "political" (too generic)
5109                parameters.location_type = results[0].types[0];
5110                for (var t = 0; t < results[0].types.length; t++) {
5111                    if (results[0].types[t] != 'political') {
5112                        parameters.location_type = results[0].types[t];
5113                        break;
5114                    }
5115                }
5116
5117                // When searching by city/locality, omit postal_code — Google returns
5118                // a partial zip prefix that doesn't match all members in the city
5119                if (parameters.location_type == 'locality' && parameters.postal_code) {
5120                    delete parameters.postal_code;
5121                }
5122
5123                if (parameters.adm_lvl_1_sn != '') {
5124                    parameters.stateSearch = parameters.adm_lvl_1_sn;
5125                }
5126                if (parameters.country_sn == "GB") {
5127                    delete parameters.adm_lvl_1_sn;
5128                }
5129
5130                //will check if the response had the bounds parameters
5131                //if it had it will add the south west and north east parameters to the new url
5132                if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) {
5133
5134                    if (results[0].geometry.hasOwnProperty('bounds')) {
5135                        var boundsResponse = results[0].geometry.bounds;
5136
5137                    } else {
5138                        var boundsResponse = results[0].geometry.viewport;
5139                    }
5140                    parameters.swlat = boundsResponse.getSouthWest
5140().lat();
5141                    parameters.nelat = boundsResponse.getNorthEast().lat();
5142                    parameters.swlng = boundsResponse.getSouthWest().lng();
5143                    parameters.nelng = boundsResponse.getNorthEast().lng();
5144
5145                    //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
5146                } else {
5147                    parameters.fsearch = "radius";
5148                }
5149                var locationCenterResponse = results[0].geometry.location;
5150                parameters.lat = locationCenterResponse.lat();
5151                parameters.lng = locationCenterResponse.lng();
5152                parameters.faddress = results[0].formatted_address;
5153                parameters.place_id = results[0].place_id;
5154                var formatParameters = $.param(parameters);
5155                urlGET = urlGET + "&" + formatParameters;
5156                var urlPath = formActionUrl;
5157                var redirect = urlPath + "?" + urlGET;
5158                //will redirect the page using the new url that has been constructed
5159                window.location.href = redirect;
5160            }
5161            function populateSearchFields() {
5162                var prePopulateLocationSetting = '0';
5163                var geolocationMethod = 'HTML5';
5164
5165                // If geolocation is in progress and we don't have coordinates yet, wait a bit
5166                if (isGettingLocation && (vlat === 0 || vlon === 0)) {
5167                    var waitStartTime = performance.now();
5168                    var waitInterval = setInterval(function() {
5169                        if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) {
5170                            clearInterval(waitInterval);
5171                            // Retry after a short delay to ensure coordinates are set
5172                            setTimeout(function() {
5173                                populateSearchFields();
5174                            }, 100);
5175                        } else if ((performance.now() - waitStartTime) > 10000) {
5176                            // Timeout after 10 seconds - try sessionStorage
5177                            clearInterval(waitInterval);
5178                            if (getCoordinatesFromSession()) {
5179                                setTimeout(function() {
5180                                    populateSearchFields();
5181                                }, 100);
5182                            }
5183                        }
5184                    }, 200);
5185                    return;
5186                }
5187
5188                // If coordinates are 0, try to get from sessionStorage
5189                if (vlat === 0 || vlon === 0) {
5190                    getCoordinatesFromSession();
5191                }
5192
5193                // Validate coordinates first
5194                var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180);
5195                
5196                if (!hasValidCoordinates) {
5197                    return;
5198                }
5199
5200                //if set to one will get the lat and lng to do reverse geocoding
5201                if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) {
5202                    var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon));
5203                    var visitorGeocoder = new google.maps.Geocoder();
5204                    var formattedAddress = [];
5205                    var preFormattedStructure = {
5206                        "locality": "long_name",
5207                        "administrative_area_level_2": "long_name",
5208                        "administrative_area_level_1": "long_name",
5209                        "country": "long_name"
5210                    };
5211                    visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) {
5212                        //if the google response of the geocoding was successful it will use that info to build the url for the new search
5213                        if (status == google.maps.GeocoderStatus.OK) {
5214                            window.cachedSelectedOption = results;
5215                            $.each(preFormattedStructure, function (findex, fvalue) {
5216                                $.each(results[0].address_components, function (rindex, rvalue) {
5217                                    if (rvalue.types[0] == findex) {
5218                                        formattedAddress.push(rvalue.long_name);
5219                                    }
5220                                });
5221                            });
5222                            $('.googleSuggest').each(function () {
5223                                if ($(this).val() == '') {
5224                                    if (formattedAddress.length > 0) {
5225                                        $(this).val(formattedAddress.join(', '));
5226                                        clearContent($(this));
5227                                    }
5228                                }
5229                            });
5230                        } else {
5231                            $('.googleSuggest').each(function () {
5232                                $(this).val('');
5233                            });
5234                        }
5235                    });
5236                }
5237            }
5238            function showError(error) {
5239                switch (error.code) {
5240                    case error.PERMISSION_DENIED:
5241                    case 1: // PERMISSION_DENIED
5242                        $('.fill_location.clicked').popover({
5243                            content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`,
5244                            container: 'body'
5245                        });
5246                        $('.fill_location.clicked').popover('toggle');
5247                        setTimeout(function () {
5248                            $('.fill_location.clicked').popover('hide');
5249                            $('.fill_location.clicked').removeClass('clicked');
5250                        }, 4000);
5251                        break;
5252                    case error.POSITION_UNAVAILABLE:
5253                    case 2: // POSITION_UNAVAILABLE
5254                        $('.fill_location.clicked').popover({
5255                            content: `Location information is unavailable. Please check your device location settings.`,
5256                            container: 'body'
5257                        });
5258                        $('.fill_location.clicked').popover('toggle');
5259                        setTimeout(function () {
5260                            $('.fill_location.clicked').popover('hide');
5261                            $('.fill_location.clicked').removeClass('clicked');
5262                        }, 4000);
5263                        break;
5264                    case error.TIMEOUT:
5265                    case 3: // TIMEOUT
5266                        $('.fill_location.clicked').popover({
5267                            content: `Location request timed out. Please ensure location services are enabled and try again.`,
5268                            container: 'body'
5269                        });
5270                        $('.fill_location.clicked').popover('toggle');
5271                        setTimeout(function () {
5272                            $('.fill_location.clicked').popover('hide');
5273                            $('.fill_location.clicked').removeClass('clicked');
5274                        }, 4000);
5275                        break;
5276                    case error.UNKNOWN_ERROR:
5277                    default:
5278                        $('.fill_location.clicked').popover({
5279                            content: `An error occurred while getting your location. Please try again.`,
5280                            container: 'body'
5281                        });
5282                        $('.fill_location.clicked').popover('toggle');
5283                        setTimeout(function () {
5284                            $('.fill_location.clicked').popover('hide');
5285                            $('.fill_location.clicked').removeClass('clicked');
5286                        }, 4000);
5287                        break;
5288                }
5289            }
5290            if (navigator.geolocation) {
5291                if ($(".googleSuggest")[0]) {
5292                    $(document).on('click', '.fill_location', function getCXPosition() {
5293                        // Prevent multiple simultaneous geolocation requests
5294                        if (isGettingLocation) {
5295                            return;
5296                        }
5297                        
5298                        var $button = $(this);
5299                        $button.addClass('clicked');
5300                        var startPos;
5301                        
5302                        // Set flag to prevent concurrent requests
5303                        isGettingLocation = true;
5304                        
5305                        // Function to actually get the position
5306                        var attemptGetPosition = function() {
5307                            // Try with shorter timeout first for faster response
5308                            var geoOptions = {
5309                                enableHighAccuracy: false, // Use false for faster response
5310                                timeout: 8000, // 8 second timeout (reduced for faster failure)
5311                                maximumAge: 300000 // Accept cached position up to 5 minutes old
5312                            };
5313                            
5314                            navigator.geolocation.getCurrentPosition(function (position) {
5315                                startPos = position;
5316                                vlat = startPos.coords.latitude;
5317                                vlon = startPos.coords.longitude;
5318                                
5319                                // Validate coordinates before proceeding
5320                                if (!vlat || !vlon || vlat === 0 || vlon === 0) {
5321                                    isGettingLocation = false;
5322                                    $button.removeClass('clicked');
5323                                    return;
5324                                }
5325                                
5326                                // Save coordinates to sessionStorage
5327                                saveCoordinatesToSession(vlat, vlon);
5328                                
5329                                $.get("/api/data/html/get/data_widgets/widget_name", {
5330                                    "vlat": vlat,
5331                                    "vlon": vlon,
5332                                    "name": "Website - Save Coordinates Session"
5333                                });
5334                                
5335                                populateSearchFields();
5336                                
5337                                // Clear flag
5338                                isGettingLocation = false;
5339                                $button.removeClass('clicked');
5340                            }, function(error) {
5341                                // Clear flag on error
5342                                isGettingLocation = false;
5343                                $button.removeClass('clicked');
5344                                
5345                                // For timeout errors, try sessionStorage as fallback
5346                                if (error.code === 3) {
5347                                    if (getCoordinatesFromSession()) {
5348                                        // Use cached coordinates
5349                                        $.get("/api/data/html/get/data_widgets/widget_name", {
5350                                            "vlat": vlat,
5351                                            "vlon": vlon,
5352                                            "name": "Website - Save Coordinates Session"
5353                                        });
5354                                        
5355                                        populateSearchFields();
5356                                        
5357                                        // Clear flag
5358                                        isGettingLocation = false;
5359                                        $button.removeClass('clicked');
5360                                    } else {
5361                                        $button.popover({
5362                                            content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`,
5363                                            container: 'body'
5364                                        });
5365                                        $button.popover('show');
5366                                        setTimeout(function() {
5367                                            $button.popover('hide');
5368                                        }, 5000);
5369                                    }
5370                                } else {
5371                                    showError(error);
5372                                }
5373                            }, geoOptions);
5374                        };
5375                        
5376                        // Check if geolocation permission is already denied (but don't block if it's prompt)
5377                        if (navigator.permissions && navigator.permissions.query) {
5378                            navigator.permissions.query({name: 'geolocation'}).then(function(result) {
5379                                if (result.state === 'denied') {
5380                                    isGettingLocation = false;
5381                                    $button.removeClass('clicked');
5382                                    showError({code: 1, message: 'Permission denied'});
5383                                    return;
5384                                } else {
5385                                    // Permission is granted or prompt - proceed with geolocation
5386                                    attemptGetPosition();
5387                                }
5388                            }).catch(function(err) {
5389                                // If permission API not supported, proceed anyway
5390                                attemptGetPosition();
5391                            });
5392                        } else {
5393                            // Permission API not available, proceed with geolocation
5394                            attemptGetPosition();
5395                        }
5396                    })
5397                }
5398            } else {
5399                console.log('Geolocation is not supported for this Browser/OS version yet.');
5400            }
5401            function getUrlParameter(sParam) {
5402                var sPageURL = window.location.search.substring(1);
5403                var sURLVariables = sPageURL.split('&');
5404
5405                for (var i = 0; i < sURLVariables.length; i++) {
5406                    var sParameterName = sURLVariables[i].split('=');
5407
5408                    if (sParameterName[0] == sParam) {
5409                        return decodeURIComponent(sParameterName[1]);
5410                    }
5411                }
5412            }
5413        </script>
5413
5414        
5414<script>
5415	// switchClass() is jQuery UI (Effects), which is no longer loaded on every page.
5416	// removeClass().addClass() is the same class swap, applied immediately instead of
5417	// after animateClass()'s queued 400ms default.
5418	$(document).ready(function(){
5419		$('.navbar-header .navbar-toggle.main_menu').click(function(){
5420			$('.mobile-main-menu').toggleClass('opened');
5421		});
5422		$('.mobile-main-menu .sidebar-nav').find('li').each(function(){
5423			$(this).addClass('hasChildren');
5424			if ($(this).children('ul').length > 0){
5425				$(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>');
5426				$(this).find('a').after('<div class="clearfix"></div>');
5427				$(this).find('span').after('<div class="clearfix"></div>');
5428			}
5429			$(this).append('<div class="clearfix"></div>');
5430		});
5431
5432		$('.mobile-main-menu .sidebar-nav li i').click(function(){
5433			if ($(this).parent().children('ul').length > 0){
5434				$(this).parent().toggleClass('sub_open');
5435			}
5436			if ($(this).hasClass('fa-plus')){
5437				$(this).removeClass('fa-plus').addClass('fa-minus');
5438			} else {
5439				$(this).removeClass('fa-minus').addClass('fa-plus');
5440			}
5441		});
5442	})
5443
5444	if ($(window).width() > 740 && $(window).width() < 1100) {
5445
5446		$(document).ready(function(){
5447			$('.tablet-menu .tablet-menu-ul').find('li').each(function(){
5448
5449				if ($(this).children('ul').length > 0){
5450					$(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>');
5451					$(this).find('a').after('<div class="clearfix"></div>');
5452					var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");;
5453					$(this).children('a').html(this_link);
5454					$(this).find('span').after('<div class="clearfix"></div>');
5455				}
5456				$(this).append('<div class="clearfix"></div>');
5457			});
5458
5459			$('.tablet-menu .tablet-menu-ul li i').click(function(){
5460
5461				if ($(this).parent().children('ul').length > 0){
5462					$(this).parent().toggleClass('sub_open');
5463
5464					if ($(this).siblings( "ul" ).hasClass('tablet-block')){
5465						$(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none');
5466					} else {
5467						$(this).siblings( "ul" ).addClass( "tablet-block" );
5468
5469						if ($(this).siblings( "ul" ).hasClass('tablet-none')){
5470							$(this).siblings( "ul" ).removeClass('tablet-none')
5471						}
5472
5473						if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) {
5474							$(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none');
5475							$(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus');
5476						}
5477
5478						if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) {
5479							$(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5480							$(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5481						}
5482
5483						if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) {
5484							$(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5485							$(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5486						}
5487
5488					}
5489
5490				}
5491
5492				if ($(this).hasClass('fa-plus')){
5493					$(this).removeClass('fa-plus').addClass('fa-minus');
5494				} else {
5495					$(this).removeClass('fa-minus').addClass('fa-plus');
5496				}
5497			});
5498		})
5499	}
5500	// Append unique ID attribute for mobile main menu links
5501	$('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" });
5502</script>
5502
5503
5504<script>
5505/* Keeps the announcement bar flush with the navbar: this widget's CSS emits static 50px
5506   offsets that are blind to the hide-menu settings, so a hidden or fixed compact-logo
5507   navbar leaves a gap or an overlap. Measure the real navbar state and own the offset. */
5508(function () {
5509    function alignAnnouncementToNavbar() {
5510        var ann = document.querySelector('.announcement-bar');
5511        if (!ann) { return; }
5512        /* above the widget's own offset breakpoints: restore stylesheet values */
5513        if (window.innerWidth > 1100) {
5514            ann.style.removeProperty('margin-top');
5515            ann.style.removeProperty('top');
5516            return;
5517        }
5518        var navbar = document.querySelector('.header nav.navbar.navbar-default');
5519        var navStyle = navbar ? window.getComputedStyle(navbar) : null;
5520        /* navbar hidden: the 50px offsets have nothing to clear, sit flush */
5521        if (!navbar || navStyle.display === 'none') {
5522            ann.style.setProperty('margin-top', '0px', 'important');
5523            ann.style.setProperty('top', '0px', 'important');
5524            return;
5525        }
5526        if (window.innerWidth >= 768) { return; }
5527        /* only act while the navbar is pinned and showing the compact logo */
5528        if (navStyle.position !== 'fixed') { return; }
5529        var logo = navbar.querySelector('.mobile_website_logo');
5530        if (!logo || window.getComputedStyle(logo).display === 'none') { return; }
5531        var navRect = navbar.getBoundingClientRect();
5532        var annRect = ann.getBoundingClientRect();
5533        var delta = Math.round(navRect.bottom - annRect.top); /* >0 overlap, <0 gap */
5534        if (delta === 0) { return; }
5535        var currentMt = parseFloat(window.getComputedStyle(ann).marginTop) || 0;
5536        var nextMt = currentMt + delta;
5537        /* a transient element above the bar during load can inflate the measure; a
5538           negative margin would pull the bar behind the navbar, so clamp at 0 */
5539        if (nextMt < 0) { nextMt = 0; }
5540        /* !important to beat the widget's "margin-top: 50px !important" rule */
5541        ann.style.setProperty('margin-top', nextMt + 'px', 'important');
5542    }
5543
5544    function run() {
5545        alignAnnouncementToNavbar();
5546        /* re-run after late layout shifts (fonts, async embeds) */
5547        window.setTimeout(alignAnnouncementToNavbar, 250);
5548        window.setTimeout(alignAnnouncementToNavbar, 1200);
5549    }
5550
5551    if (document.readyState === 'loading') {
5552        document.addEventListener('DOMContentLoaded', run);
5553    } else {
5554        run();
5555    }
5556    window.addEventListener('load', alignAnnouncementToNavbar);
5557    var resizeTimer;
5558    window.addEventListener('resize', function () {
5559        window.clearTimeout(resizeTimer);
5560        resizeTimer = window.setTimeout(alignAnnouncementToNavbar, 150);
5561    });
5562})();
5563</script>
vendor: 2 bytes, line 5563
5563
5564<script attribute='text/javascript'>
5565	var map;
5566	var members = {};
5567	function initializeMap() {
5568		map = new google.maps.Map(document.getElementById('map-bounds'), {
5569		center: {lat: 0, lng: 0},
5570		zoom: 8,
5571		disableDefaultUI: true,
5572		});
5573	}
5574	function toogleShapeBox(user_id,node){
5575		if($(node).is(':checked') == true){
5576			members['user_id_'+user_id].boundsShape.setMap(map);
5577		}else{
5578			members['user_id_'+user_id].boundsShape.setMap(null);
5579		}
5580	}
5581
5582	function loadMarker(lat,lng,showInfoWindow,title){
5583		var contentString = '';
5584		var marker = new google.maps.Marker({
5585          position: {lat:lat,lng:lng},
5586          map: map,
5587          title: 'Bounds Box Objects'
5588        });
5589        
5590		if(showInfoWindow === true){
5591			
5592			contentString = '<table>';
5593			
5594			$.each(members,function(index,value){
5595				contentString += '<tr>';
5596				contentString += '<td><input type="checkbox" checked="true" onchange="toogleShapeBox('+value.user_id+',this)"><td>';
5597                contentString += '<td>'+value.name+'<td>';
5598                contentString += '</tr>';
5599            });
5600			contentString += '</table>';
5601
5602			var infowindow = new google.maps.InfoWindow({
5603			  content: contentString
5604			});
5605
5606			marker.addListener('click', function() {
5607			  infowindow.open(map, marker);
5608			});
5609			
5610		}else{
5611			marker.setIcon('https://maps.google.com/mapfiles/ms/icons/green-dot.png');
5612			var infowindow = new google.maps.InfoWindow({
5613			  content: title
5614			});
5615
5616			marker.addListener('click', function() {
5617			  infowindow.open(map, marker);
5618			});
5619			
5620		}
5621	}
5622
5623	function drawBounds(lat,lng,swlat,swlng,nelat,nelng,color,address,user_id,name){
5624
5625		latlngs = [];
5626
5627		latlngs.push({ lat: swlat, 	lng: swlng });//bottom left
5628		latlngs.push({ lat: swlat, 	lng: lng });//bottom center
5629		latlngs.push({ lat: swlat, 	lng: nelng });//bottom right
5630		latlngs.push({ lat: lat, 	lng: nelng });// center right
5631		latlngs.push({ lat: nelat, 	lng: nelng });//top right
5632		latlngs.push({ lat: nelat, 	lng: lng });//top center
5633		latlngs.push({ lat: nelat, 	lng: swlng });//top left
5634		latlngs.push({ lat: lat, 	lng: swlng });//center left
5635
5636
5637		members['user_id_'+user_id] = {
5638			boundsShape:new google.maps.Polygon({
5639				paths: latlngs,
5640				strokeColor: color,
5641				strokeOpacity: 0.8,
5642				strokeWeight: 3,
5643				fillColor: 'color',
5644				fillOpacity: 0.35
5645			}),
5646			name:name,
5647			user_id:user_id,
5648			color:color
5649		}
5650
5651		members['user_id_'+user_id].boundsShape.setMap(map);
5652	}
5653
5654    
5655</script>
5655<script>
5656    function loadMasonryJs() {
5657        return new Promise((resolve, reject) => {
5658            if (window["masonryJs"]) {
5659                resolve("already load masonry");
5660            } else {
5661                let script = document.createElement('script');
5662                script.type = 'text/javascript';
5663                script.src = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/masonry_gridview.pkgd.min.js";
5664                script.async = true;
5665                script.onload = function () {
5666                    window['masonryJs'] = true;
5667                    resolve("ok");
5668                };
5669                let head = document.getElementsByTagName('head')[0];
5670                head.appendChild(script);
5671
5672            }
5673        });
5674    }
5675
5676    var map_opened = 0;
5677    var masonry_opened = 0;
5678
5679    $(".views > i").click(function () {
5680        $(".views > i").removeClass('activeView');
5681        $(this).addClass('activeView');
5682    });
5683        $(".views > i.gridView").click(async function () {
5684       await loadMasonryJs();
5685        $('.grid-container .clickToLoadMoreContainer').addClass('gridBtnLazyLoad')
5686        if (map_opened == 1) {
5687            $('.grid-container').removeClass('hidden');
5688            $('.map_container').hide();
5689            map_opened = 0;
5690        }
5691        $('.grid-container').addClass('visible');
5692        $('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
5693        $('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
5694        $('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
5695        $('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
5696        $('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
5697        $('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
5698        $('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
5699        $('.mid_section .post-location-snippet').addClass('text-center');
5700        $('.mid_section.ex-col-7 .sm-block').addClass('show');
5701        $('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
5702        $('.mid_section .row-fluid.bpad a').addClass('btn-block');
5703        $('.mid_section .row-fluid.bpad').addClass('text-center');
5704        $('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
5705        $('.mid_section > div > p').addClass('text-center');
5706        $('.mid_section h2').addClass('nomargin');
5707        $('.mid_section a.h3').addClass('text-center h4 tmargin');
5708        $('.mid_section .view-details').removeClass('rmargin');
5709        $('.mid_section .contact-member').removeClass('lmargin');
5710        $('.member-search-full-name').removeClass('rmargin');
5711        $('.member-search-reviews').removeClass('rmargin');
5712        $('.member-search-location').removeClass('rmargin rpad');
5713        $('.member-search-company').addClass('btn-block');
5714        $('.view_phone_number').addClass('center-block');
5715        $('.phone_number').addClass('btn-block');
5716        $('.search_result_image').addClass('grid_image');
5717        $('.post-search-category').removeClass('inline-block').addClass('text-center');
5718        $('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
5719
5720                $('.grid-container.visible > hr:nth-of-type(3n)').addClass('gridBreak');
5721        $('.search_result').addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
5722                $('.grid_element').addClass('well xs-center-block');
5723
5724        $('.col-md-3 + .clearfix, .col-md-4 + .clearfix, .clearfix + hr, .search_result hr + .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags, table.bmargin,.posted-by,.star_rating .the-rating-text').hide();
5725        $('h2.h3.bold > a').addClass('gridA');
5726        $('.info_section .module').removeClass('module fpad');
5727        $('.grid-container').addClass('row');
5728        document.body.classList.add('bdGridDone');
5729        
5730    });
5731        $(".views > i.listView").click(function () {
5732        $('.grid-container .clickToLoadMoreContainer').removeClass('gridBtnLazyLoad')
5733
5734        $('.clearfix.spacing').remove();
5735                $('.grid-container').addClass('visible');
5736        $('.img_section.ex-col-2').removeClass('col-xs-12 ex-col-2 bmargin').addClass('col-xs-2');
5737        $('.img_section.ex-col-3').removeClass('col-sm-12 ex-col-3 bmargin').addClass('col-sm-3');
5738        $('.img_section.ex-col-4').removeClass('col-sm-12 ex-col-4 bmargin').addClass('col-sm-4');
5739        $('.mid_section.col-sm-12.ex-col-9').removeClass('col-sm-12').addClass('col-sm-9');
5740        $('.mid_section.col-sm-12.ex-col-6').removeClass('col-sm-12').addClass('col-sm-6');
5741        $('.mid_section.col-sm-12.ex-col-7').removeClass('col-sm-12 nohpad bpad ex-col-7 text-center').addClass('col-sm-7');
5742        $('.mid_section.col-sm-12.ex-col-8').removeClass('col-sm-12 nohpad bpad').addClass('col-sm-8');
5743        $('.mid_section .post-location-snippet.text-center').removeClass('text-center');
5744        $('.mid_section.col-sm-7 .sm-block').removeClass('show');
5745        $('.mid_section.col-sm-12.ex-col-12').removeClass('col-sm-12').addClass('col-sm-12');
5746        $('.mid_section .row-fluid.bpad .col-sm-12').removeClass('col-sm-12 bmargin').addClass('col-md-8');
5747        $('.mid_section .row-fluid.bpad a').removeClass('btn-block');
5748        $('.mid_section .row-fluid.bpad').removeClass('text-center');
5749        $('.info_section').removeClass('col-sm-12 nopad').addClass('col-sm-3 norpad');
5750        $('.info_section > div.nomargin').addClass('module fpad');
5751        $('.mid_section > div > p').removeClass('text-center');
5752        $('.mid_section h2').removeClass('nomargin');
5753        $('.mid_section a.h3').removeClass('text-center h4 tmargin');
5754        $('.mid_section .view-details').addClass('rmargin');
5755        $('.mid_section .contact-member').addClass('lmargin');
5756        $('.member-search-full-name').addClass('rmargin');
5757        $('.member-search-reviews').addClass('rmargin');
5758        $('.member-search-location').addClass('rmargin rpad');
5759        $('.member-search-company').removeClass('btn-block');
5760        $('.view_phone_number').removeClass('center-block');
5761        $('.search_result_image').removeClass('grid_image');
5762        $('.ex-col-8 h2.h3.bold a.gridA').removeClass('bmargin');
5763        $('.gridBreak').removeClass('gridBreak');
5764        $('.post-search-category').removeClass('text-center').addClass('inline-block');
5765        $('.post-results-star').removeClass('text-center tmargin').addClass(' pull-right');
5766                $('.search_result').removeClass('col-md-4 col-sm-4 col-xs-12 grid').addClass('row-fluid');
5767                $('.grid_element').removeClass('well');
5768        $('.search_result .grid_element + .clearfix, .clearfix + hr, hr + .clearfix, .clearfix, .mid_section > p, .mid_section .row-fluid.bpad p.nomargin, .tags,.posted-by, table.bmargin, .star_rating span').show();
5769        $('h2.h3.bold > a').removeClass('gridA');
5770        $('.grid-container').removeClass('row');
5771        if (map_opened == 1) {
5772            $('.grid-container').removeClass('hidden');
5773            $('.map_container').hide();
5774            map_opened = 0;
5775        }
5776    });
5777
5778    $('.views > i.mapView').click(function () {
5779        $('.clearfix.spacing').remove();
5780        $('.grid-container').addClass('hidden');
5781        $('.map_container').show();
5782        map_opened = 1;
5783        if(typeof initializeGoogleMaps === "function"){
5784            initializeGoogleMaps();
5785        }
5786    });
5787    if (document.getElementById("google-pin") !== null) {
5788        $('.mapView').css('display', 'inline-block');
5789    }
5790    $(document).ready(function () {
5791        if ($('.views .fa:visible').length == 1) {
5792            $('.views').hide();
5793        } else {
5794            $('.views').show();
5795        }
5796    })
5797</script>
5797<script>
5798    $('#captchaContainer').removeClass('form-control ');
5799    $(".website_url_field").keyup(function(){
5800        var fieldName = $(this).attr('name');
5801        $(this).val($(this).val().replace(/\s+/g, ''));
5802        $('#myform').formValidation('revalidateField', fieldName);
5803    });
5804</script>
vendor: 2 bytes, line 5804
5804
5805<script>
5806     $('#newsletter input[name="email"]').on('keypress', function() {
5807        $("#newsletter > .gdpr_consent_email").show();
5808    });
5809	$('#newsletter_signup_footer input[name="email"]').on('keypress', function() {
5810        $("#newsletter_signup_footer > .gdpr_consent_email").show();
5811    });
5812</script>
5812                
5812<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
5812
5813                
5813<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
5813
5814                
5814<script type="text/javascript">
5815                    function decodeHtml(html) {
5816                        var txt = document.createElement("textarea");
5817                        txt.innerHTML = html;
5818                        return txt.value;
5819                    }
5820                    
5821                    // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
5822                    $(function() {
5823                        function applyFix() {
5824                            // Check if FormValidation library and URI validator are loaded
5825                            if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
5826                                FormValidation.Validator.uri.validate = function(validator, $field, options) {
5827                                    var value = validator.getFieldValue($field, 'uri').trim();
5828                                    return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
5829                                };
5830                                return true;
5831                            }
5832                            return false;
5833                        }
5834                        
5835                        if (!applyFix()) {
5836                            setTimeout(applyFix, 50);
5837                        }
5838                    });
5839                </script>
5839
5840                        
5840<script type="text/javascript">
5841
5842        var counterSubmit = 0;
5843        $(document).ready(function() {
5844            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
5845               captcha holders that clears the wrong checkbox, so the widget the visitor solved
5846               keeps a token Google has already spent and every retry fails the security check.
5847               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
5848               an undefined id means no per-form id is known and the arg-less call is used,
5849               exactly as before. */
5850            function bdCaptchaWidgetId(formId) {
5851                if (typeof captchaHolders === "undefined" || !formId) {
5852                    return undefined;
5853                }
5854                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
5855                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
5856                   the holder element itself so the counter never has to be reconstructed. */
5857                var form = document.getElementById(formId);
5858                var holder = form && form.querySelector(".g-recaptcha");
5859                return holder ? captchaHolders[holder.id] : undefined;
5860            }
5861
5862            function bdCaptchaReset(formId) {
5863                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
5864                    return;
5865                }
5866                var widgetId = bdCaptchaWidgetId(formId);
5867                if (widgetId === undefined) {
5868                    grecaptcha.reset();
5869                } else {
5870                    grecaptcha.reset(widgetId);
5871                }
5872            }
5873
5874            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
5875            // rules for fields that are NOT rendered in this form (conditionally-rendered or
5876            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
5877            // isValid(), so an empty required field bypasses validation and submits natively.
5878            // Remove any rule whose field has no matching element before initializing.
5879            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
5880            // REMOVES rules (never adds validators, never overrides native submit, never
5881            // intercepts on capture phase, never re-validates on click) — so it cannot
5882            // reproduce the "Save button slides down / nav broken / no success message"
5883            // regression that caused #5902 to be rolled back on site 19413.
5884            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Please enter a value"},"emailAddress":{"message":"Please enter a valid email address"}}}}};
5885            var formElement = $(`form[name='newsletter_modal_signup_380']`);
5886            if(validatorConfig && validatorConfig.fields) {
5887                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
5888                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
5889                        delete validatorConfig.fields[fieldName];
5890                    }
5891                });
5892            }
5893
5894            // Scroll to the first invalid field when submit fails validation,
5895            // so the user can immediately see why the form will not submit
5896            formElement.on('err.form.fv', function(e) {
5897                var $firstError = $(e.target).find('.form-group.has-error').first();
5898                if ($firstError.length) {
5899                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
5900                }
5901            });
5902
5903            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
5904
5905                if('newsletter_modal_signup' == 'unsubscribe_email'){
5906                    return true;
5907                }
5908                // Prevent form submission
5909                e.preventDefault();
5910                $form = $(e.target),
5911                fv = $form.data('formValidation');
5912
5913                // Check HTML5 required fields that FormValidation may not know about
5914                var requiredEmpty = false;
5915                $form.find('[required]').each(function() {
5916                    var val = $(this).val();
5917                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
5918                        requiredEmpty = true;
5919                        $(this).closest('.form-group').addClass('has-error');
5920                        if ($(this).siblings('.required-error').length === 0) {
5921                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Please enter a value</small>');
5922                        }
5923                    } else {
5924                        var $reqGroup = $(this).closest('.form-group');
5925                        $(this).siblings('.required-error').remove();
5926                        // Keep has-error if another validator is still failing for this field
5927                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
5928                            $reqGroup.removeClass('has-error');
5929                        }
5930                    }
5931                });
5932                if (requiredEmpty) {
5933                    fv.disableSubmitButtons(false);
5934                    counterSubmit = 0;
5935                    // Scroll to the first field with an error (HTML5-required scan does
5936                    // not trigger err.form.fv, so handle the scroll here too)
5937                    var $firstReqError = $form.find('.form-group.has-error').first();
5938                    if ($firstReqError.length) {
5939                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
5940                    }
5941                    return false;
5942                }
5943
5944                var values = $(this).serialize();
5945
5946                
5947                var locationFieldCorrect = true;
5948
5949                if($("#newsletter_modal_signup_380 .location_required").length > 0){
5950                    $("#newsletter_modal_signup_380 .location_required").each(function (index) {
5951                        if($(this).data('state') == 1){
5952                            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() == "") {
5953                                locationFieldCorrect = false;
5954                            }
5955                        }
5956                    });
5957                }
5958
5959                if(locationFieldCorrect === false){
5960                    //check that there is a latitude or longitude
5961                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
5962                    return false;
5963                }
5964                        
5965
5966                if (!$(this).attr("action")) {
5967                    var action = '';
5968
5969                } else {
5970                    var action = $(this).attr("action");
5971                }
5972                if (!$(this).attr("method")) {
5973                    var method = 'post';
5974
5975                } else {
5976                    var method = $(this).attr("method");
5977                }
5978                if (!$(this).attr("form_action_type")) {
5979                    var form_action_type = 'notification';
5980
5981                } else {
5982                    var form_action_type = $(this).attr("form_action_type");
5983                }
5984                if (!$(this).attr("form_action_div")) {
5985                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
5986                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
5987
5988                } else {
5989                    var form_action_div = $(this).attr("form_action_div");
5990                }
5991                if (!$(this).attr("return_data_type")) {
5992                    var return_data_type = 'json';
5993
5994                } else {
5995                    var return_data_type = $(this).attr("return_data_type");
5996                }
5997                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
5998                if (!submitInFlight) {
5999                    if ($("#newsletter_modal_signup_380-notification").html() != "") {
6000                        $("#newsletter_modal_signup_380-notification").remove();
6001                    }
6002                    if ($(this).find('input[type="submit"]').length > 0) {
6003                        $(this).find('input[type="submit"]').before('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
6004
6005                    } else {
6006                        $(this).prepend('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
6007                    }
6008                }
6009                var notification = $("#newsletter_modal_signup_380-notification");
6010
6011                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
6012                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6013                    setTimeout(function(){
6014                        fv.defaultSubmit();
6015                    }, 100);
6016                } else {
6017                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6018                    if(!submitInFlight) {
6019                        counterSubmit++;
6020                        $form.data('bdLastSubmitAt', Date.now());
6021
6022                        var fields      = $(this).serializeArray();
6023                        var formField   = [];
6024                        var processData = true;
6025                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
6026                        
6027                        
6028
6029                        if($("#newsletter_modal_signup_380 input[type=file]").length > 0){
6030                            
6031                            var formObject  = new FormData();
6032                            processData     = false;
6033                            contentType     = false;
6034
6035                            $(fields).each(function(index,field){
6036                                formField.push(field.name+"="+field.value);
6037                            });
6038
6039                            values  = formField.join("&");
6040
6041                            $(formField).each(function(index,fieldValue){
6042                                var fieldInfo = fieldValue.split('=');
6043                                formObject.append(fieldInfo[0],fieldInfo[1]);
6044                            });
6045
6046                            $("#newsletter_modal_signup_380 input[type=file]").each(function(index,node){
6047                                var file = this.files[0];
6048                                if(typeof file != "undefined"){
6049                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
6050                                }
6051                            });
6052                        }else{
6053                            
6054                            $(fields).each(function(index,field){
6055                                formField.push(field.name+"="+encodeURIComponent(field.value));
6056                            });
6057
6058                            var formObject  = formField.join("&");
6059                        } 
6060                        
6061                        $.ajax({
6062                            url: action,
6063                            type: method,
6064                            data: formObject,
6065                            dataType: return_data_type,
6066                            processData: processData,
6067                            contentType: contentType,
6068                            success: function (data) {
6069                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
6070                                notification = $("#newsletter_modal_signup_380-notification");
6071                                if (return_data_type == "html") {
6072                                    var result = 'success';
6073
6074                                    if (!data != "") {
6075                                        var result_widget = data['result_widget'];
6076                                    }
6077
6078                                } else {
6079
6080
6081                                    if (!data['result']) {
6082                                        var result = 'error';
6083                                    } else {
6084                                        var result = data['result'];
6085                                    }
6086                                    if (!data['result_widget']) {
6087                                        var result_widget = '';
6088
6089                                    } else {
6090                                        var result_widget = data['result_widget'];
6091                                    }
6092                                }
6093                                if (result == "success") {
6094
6095                                    if (!data['message']) {
6096                                        var message = `Your information has submitted successfully!`;
6097
6098                                    } else {
6099                                        var message = data['message'];
6100                                    }
6101                                    if (!data['redirect_url']) {
6102                                        var redirect_url = '';
6103
6104                                    } else {
6105                                        var redirect_url = data['redirect_url'];
6106                                    }
6107
6108
6109
6110                                    if (form_action_type == "notification") {
6111                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
6112                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6113                                                redirect_url = "/" + redirect_url;
6114                                            }
6115                                            if (notification.parents('.modal').length) {
6116                                                $('.modal-backdrop').hide();
6117                                                $('.modal').modal('hide');
6118                                            }
6119                                            window.location.href = redirect_url;
6120                                            fv.resetForm(true);
6121                                        } else {
6122                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
6123                                            .addClass('alert-dismissible')
6124                                            .addClass("alert-success-subtle")
6125                                            .removeClass("alert-danger-subtle")
6126                                            .removeClass("alert-warning-subtle")
6127                                        
6128                                            
6129
6130                                        if(notification.parents('.modal').length && 'newsletter_modal_signup_380' == 'whmcs_billing_address'){
6131                                            setTimeout(function(){
6132                                                notification.parents('.modal').modal('hide');
6133                                            }, 1000);
6134                                        }
6135                                        }
6136
6137                                    } else if (form_action_type == "widget") {
6138
6139                                        if (result_widget != '') {
6140
6141                                            setTimeout(function(){
6142                                                if(form_action_div != '.newsletter_modal_form_container'){
6143                                                    $("html, body").animate({ scrollTop: 0 }, 600);
6144                                                }                                                
6145                                                $(form_action_div).html(decodeHtml(result_widget)).text();
6146
6147                                            }, 1000);
6148                                        }
6149
6150                                    } else if (form_action_type == "redirect") {
6151
6152                                        if (redirect_url == "") {
6153                                            redirect_url = decodeURIComponent("");
6154                                        }
6155
6156                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6157                                            redirect_url = "/" + redirect_url;
6158                                        }
6159                                        current_location = "/search_results";
6160                                        refresh_pages_string = "/login";
6161                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
6162                                        refresh_pages_array = refresh_pages_string.split(',');
6163                                        notification.html(message)
6164                                            .addClass("alert-success-subtle")
6165                                            .removeClass("alert-danger-subtle")
6166                                            .removeClass("alert-warning-subtle")
6167                                            .delay(2000).slideUp();
6168                                            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" )){
6169                                                                                                    window.location.href = window.location.href+'?logged';
6170                                                                                            } else {
6171                                                window.location.href = redirect_url;
6172                                            }
6173
6174                                        fv.resetForm(true);
6175                                    }
6176                                    if(form_action_div != '.newsletter_modal_form_container' && 'newsletter_modal_signup_380' != 'whmcs_billing_address'){
6177                                        $('.modal-backdrop').hide();
6178                                    }
6179                                } else {
6180                                    bdCaptchaReset(formElement.attr('id'));
6181                                    if (!data['message']) {
6182                                        var message = `You entered invali
6182d data. Please try to save again.`;
6183
6184                                    } else {
6185                                        var message = data['message'];
6186                                    }
6187                                    $("#newsletter_modal_signup_380-notification").html(message)
6188                                        .addClass("alert-danger-subtle")
6189                                        .removeClass("alert-success-subtle")
6190                                        .removeClass("alert-warning-subtle")
6191                                        .fadeIn();
6192                                    fv.disableSubmitButtons(false);
6193                                }
6194                                counterSubmit = 0;
6195                            },
6196                            error: function (e) {
6197                                
6198                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
6199                                        bdCaptchaReset(formElement.attr('id'));
6200                                        $("#newsletter_modal_signup_380-notification").html(`Recaptcha Error`);
6201                                } else {
6202                                    $("#newsletter_modal_signup_380-notification").html(`A connection error occurred while saving. Please try to save again.`);
6203                                }
6204                                $("#newsletter_modal_signup_380-notification").addClass("alert-warning-subtle")
6205                                    .removeClass("alert-success-subtle")
6206                                    .removeClass("alert-warning-subtle")
6207                                    .fadeIn();
6208                                counterSubmit = 0;
6209                            }
6210                        });/// End Ajax
6211                    }
6212                }//END else
6213            }).bind('keydown', function(event) {
6214
6215                if (event.ctrlKey || event.metaKey) {
6216
6217                    switch (String.fromCharCode(event.which).toLowerCase()) {
6218
6219                        case 's':
6220                            var nativeForm = $(this)[0];
6221                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
6222                                event.preventDefault();
6223                                return false;
6224                            }
6225                            $(this).submit();
6226                            break;
6227                    }
6228                }
6229            });
6230
6231            /// This will turn any select2 that are required in the form builder to being required elements.
6232            $('#newsletter_modal_signup_380 select').each(function (i, obj) {
6233                setTimeout(function(){
6234                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
6235                        $(obj).css("z-index","-999");
6236                        $(obj).css("height","0");
6237                        $(obj).css("width","0");
6238                        $(obj).css("display","block");  
6239                        $(obj).css("position","absolute");  
6240                    }
6241                }, 3000);
6242            });
6243
6244            // Clear required-error messages when user fills in a required field
6245            $('#newsletter_modal_signup_380').on('keyup change', '[required]', function() {
6246                var val = $(this).val();
6247                if (val !== '' && val !== null && val.trim() !== '') {
6248                    var $group = $(this).closest('.form-group');
6249                    // Remove only this handler's own required message
6250                    $(this).siblings('.required-error').remove();
6251                    // Keep has-error if another FormValidation validator is still failing
6252                    // (e.g. stringLength, regexp). has-error is shared, so removing it
6253                    // wholesale would clobber other validators' red styling.
6254                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6255                        $group.removeClass('has-error');
6256                    }
6257                }
6258            });
6259
6260        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
6261    </script>
6261
6262        <div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
6263	<div class="modal-dialog">
6264		<div class="modal-content">
6265			<div class="container-fluid">
6266				<div class="row">
6267					<div class="col-md-12">
6268						<br>
6269						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
6270							<span aria-hidden="true">&times;</span>
6271						</button>
6272						<h3 class="nomargin">
6273							Join Our Newsletter
6274						</h3>
6275						<hr>
6276						<div class="newsletter_modal_form_container">
6277							 <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Module%20-%20Newsletter%20Actions" id="newsletter_modal_signup_380" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div=".newsletter_modal_form_container" return_data_type="" name="newsletter_modal_signup_380" class=" "><input type="hidden" name="sized" value="0" id="newsletter_modal_signup_380-element-0"/><input type="hidden" name="mysql_real_escape_string_runned" value="1" id="newsletter_modal_signup_380-element-1"/><input type="hidden" name="form" value="myform" id="newsletter_modal_signup_380-element-2"/><input type="hidden" name="formname" value="newsletter_modal_signup" id="newsletter_modal_signup_380-element-3"/><input type="hidden" name="dowiz" value="1" id="newsletter_modal_signup_380-element-4"/><input type="hidden" name="save" value="1" id="newsletter_modal_signup_380-element-5"/><input type="hidden" name="url_origin_pars" value="/search_results" id="newsletter_modal_signup_380-element-6"/><input type="hidden" name="action" autocomplete="off" value="subscribe" id="newsletter_modal_signup_380-element-7"/><div class="form-group"><input type="text" name="first_name" placeholder="Name" autocomplete="off" value class="form-control control-group  form-control " id="newsletter_modal_signup_380-element-8"/></div><div class="form-group"><input type="email" name="email" required placeholder="Enter email address" autocomplete="off" value class="form-control control-group form-control" id="newsletter_modal_signup_380-element-9"/></div><div class="form-group"><div class="form-group security_question_label">
6278            <div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
6279        <div class="g-recaptcha"  id="newsletter_modal_signup_380-google-recaptcha"></div>
6280    </div>
6281    <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>
6282    <div class="clearfix bmargin"></div>
6283    <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
6284</div>
6285    <style>
6286        .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 {
6287            transform: scale(0.77);
6288            -webkit-transform: scale(0.77);
6289            transform-origin: 0 0;
6290            -webkit-transform-origin: 0 0;
6291            margin-bottom: -15px;
6292        }
6293
6294        .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 {
6295            transform: scale(0.77);
6296            -webkit-transform: scale(0.77);
6297            transform-origin: 0 0;
6298            -webkit-transform-origin: 0 0;
6299            margin-bottom: -15px;
6300        }
6301    </style>
6302    
6302<script type="text/javascript">
6303        if(typeof formsFound == "undefined"){
6304            var formID                  = '';
6305            var currentCaptcha          = {};
6306            var captchaHolders          = {};
6307            var formsFound              = {};
6308            var captchaApiRequested     = false;
6309            /* The forms the visitor has actually interacted with - only these get a widget. */
6310            var captchaArmedForms       = [];
6311            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
6312               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
6313               and presses Enter without ever clicking, so api.js never loaded, the captcha
6314               never rendered, and the form POSTed an empty token. */
6315            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
6316
6317            window.addEventListener('load', () => {
6318                formID = document.querySelectorAll('[name="recaptcha"]');
6319                if (typeof formID != "undefined" && formID !== null) {
6320                    for (let i = 0; i < formID.length; i++) {
6321                        let formIDForm      = formID[i].closest('form');
6322                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
6323
6324                        if (typeof formsFound[formIDForm.id] != "undefined") {
6325                            formsFound[formIDForm.id]['counter']++;
6326                        }else{
6327                            formsFound[formIDForm.id] = {'counter' : 1};
6328                        }
6329
6330                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
6331                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
6332
6333                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
6334                            captchaTriggerEvents.forEach( evt =>
6335                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
6336                            );
6337                        }
6338                    }
6339                }
6340            });
6341        }
6342
6343        function reCaptchaOnFormInteraction(event) {
6344            if (event && event.currentTarget) {
6345                captchaArmForm(event.currentTarget);
6346            }
6347            if (captchaApiRequested) {
6348                renderArmedCaptchas();
6349                return;
6350            }
6351            captchaApiRequested = true;
6352
6353            var head    = document.getElementsByTagName('head')[0];
6354            var script  = document.createElement('script');
6355            script.type = 'text/javascript';
6356            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
6357            head.appendChild(script);
6358        }
6359
6360        var captchaArmForm = function (formEl) {
6361            if (!formEl) {
6362                return;
6363            }
6364            for (var a = 0; a < captchaArmedForms.length; a++) {
6365                if (captchaArmedForms[a] === formEl) {
6366                    return;
6367                }
6368            }
6369            captchaArmedForms.push(formEl);
6370        };
6371
6372        var captchaSolvedCallback = function (holder) {
6373            return function () {
6374                var formEl = holder.closest('form');
6375                if (!formEl) {
6376                    return;
6377                }
6378                $(formEl).find('.security_question_label').removeClass('has-error');
6379                $(formEl).find('#recaptcha_error').css('display', 'none');
6380                var notification = document.getElementById(formEl.id + '-notification');
6381                if (notification && notification.classList.contains('alert-danger-subtle')) {
6382                    $(notification).slideUp();
6383                }
6384            };
6385        };
6386
6387        var renderArmedCaptchas = function () {
6388            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
6389                return;
6390            }
6391            for (var f = 0; f < captchaArmedForms.length; f++) {
6392                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
6392aptcha]');
6393
6394                if (!holder || !holder.id || holder.getClientRects().length === 0) {
6395                    continue;
6396                }
6397                /* Guard a second render: grecaptcha throws on an element it already claimed. */
6398                if (typeof captchaHolders[holder.id] === "undefined") {
6399                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
6400                        'sitekey': '6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq',
6401                        'callback': captchaSolvedCallback(holder)
6402                    });
6403                }
6404            }
6405        };
6406
6407        var onloadCallback = function (event) {
6408            renderArmedCaptchas();
6409        };
6410
6411    </script>
vendor: 1 bytes, line 6411
6411
6412<script>
6413    $(document).ready(function(){
6414        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
6415           the submit button, so the click guard below never sees it and the form POSTed an
6416           empty token. Bound on document/capture so it runs before FormValidation's own
6417           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
6418           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
6419           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
6420        var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
6421        if (captchaGuardedForm) {
6422            document.addEventListener('submit', function (event) {
6423                if (event.target !== captchaGuardedForm) {
6424                    return;
6425                }
6426
6427                var formId              = captchaGuardedForm.id;
6428                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
6429                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
6430
6431                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
6432                    $("#" + formId + " .security_question_label").removeClass("has-error");
6433                    $("#" + formId + " #recaptcha_error").css("display", "none");
6434                    return;
6435                }
6436
6437                /* Unsolved, or api.js still in flight: either way there is no token to send. */
6438                event.preventDefault();
6439                event.stopImmediatePropagation();
6440                $("#" + formId + " .security_question_label").addClass("has-error");
6441                $("#" + formId + " #recaptcha_error").css("display", "block");
6442                return false;
6443            }, true);
6444        }
6445        $("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
6446        $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
6447
6448            var formId = $(this.form).attr('id');
6449            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
6450
6451            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
6452                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
6453                    event.preventDefault();
6454                    $("#" + formId).formValidation('validate');
6455                    $("#" + formId + " .security_question_label").addClass("has-error");
6456                    $("#" + formId + " #recaptcha_error").css("display", "block");
6457                    return false;
6458                }
6459
6460                /* Solved captcha: clear the error UI and let the click proceed untouched.
6461                   The browser then fires a REAL, button-initiated submit event, so
6462                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
6463                   checkout / native POST on login). Re-submitting here artificially broke
6464                   both ways: native form.submit() skips the FV chain (checkout rendered the
6465                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
6466                   refuses, leaving the form stuck after the first error (Bug 2). */
6467                $("#" + formId + " .security_question_label").removeClass("has-error");
6468                $("#" + formId + " #recaptcha_error").css("display", "none");
6469            }
6470        });
6471    });
6472</script>
6472</div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="newsletter_modal_signup_380-element-12"/></div><div class="form-actions"><input type="submit" value="Subscribe Now" name class="btn btn-primary btn-block btn-lg  bold " id="newsletter_modal_signup_380-element-13"/></div><input type='hidden' name='origin' value='/search_results'></form>
6472<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#newsletter_modal_signup_380").bind("submit", function() { 
6473		});}); </script>
6473 						</div>						
6474						<br>
6475					</div>
6476				</div>
6477			</div>
6478		</div>
6479	</div>
6480</div>
6480<script type="text/javascript">
6481(function () {
6482    try {
6483        var email = new URLSearchParams(window.location.search).get('email');
6484        if (!email) { return; }
6485        email = email.trim();
6486        if (email.indexOf('@') === -1) { return; }
6487        /* Sets the input value property (never HTML) -> XSS-safe regardless of the query value. */
6488        var fill = function () {
6489            var fields = document.querySelectorAll('input[name="email_r"]');
6490            for (var i = 0; i < fields.length; i++) {
6491                if (!fields[i].value) { fields[i].value = email; }
6492            }
6493        };
6494        if (document.readyState === 'loading') {
6495            document.addEventListener('DOMContentLoaded', fill);
6496        } else {
6497            fill();
6498        }
6499    } catch (e) {}
6500})();
6501</script>
6501
6502                
6502<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
6502
6503                
6503<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
6503
6504                
6504<script type="text/javascript">
6505                    function decodeHtml(html) {
6506                        var txt = document.createElement("textarea");
6507                        txt.innerHTML = html;
6508                        return txt.value;
6509                    }
6510                    
6511                    // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
6512                    $(function() {
6513                        function applyFix() {
6514                            // Check if FormValidation library and URI validator are loaded
6515                            if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
6516                                FormValidation.Validator.uri.validate = function(validator, $field, options) {
6517                                    var value = validator.getFieldValue($field, 'uri').trim();
6518                                    return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
6519                                };
6520                                return true;
6521                            }
6522                            return false;
6523                        }
6524                        
6525                        if (!applyFix()) {
6526                            setTimeout(applyFix, 50);
6527                        }
6528                    });
6529                </script>
6529
6530                        
6530<script type="text/javascript">
6531
6532        var counterSubmit = 0;
6533        $(document).ready(function() {
6534            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
6535               captcha holders that clears the wrong checkbox, so the widget the visitor solved
6536               keeps a token Google has already spent and every retry fails the security check.
6537               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
6538               an undefined id means no per-form id is known and the arg-less call is used,
6539               exactly as before. */
6540            function bdCaptchaWidgetId(formId) {
6541                if (typeof captchaHolders === "undefined" || !formId) {
6542                    return undefined;
6543                }
6544                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
6545                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
6546                   the holder element itself so the counter never has to be reconstructed. */
6547                var form = document.getElementById(formId);
6548                var holder = form && form.querySelector(".g-recaptcha");
6549                return holder ? captchaHolders[holder.id] : undefined;
6550            }
6551
6552            function bdCaptchaReset(formId) {
6553                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
6554                    return;
6555                }
6556                var widgetId = bdCaptchaWidgetId(formId);
6557                if (widgetId === undefined) {
6558                    grecaptcha.reset();
6559                } else {
6560                    grecaptcha.reset(widgetId);
6561                }
6562            }
6563
6564            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
6565            // rules for fields that are NOT rendered in this form (conditionally-rendered or
6566            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
6567            // isValid(), so an empty required field bypasses validation and submits natively.
6568            // Remove any rule whose field has no matching element before initializing.
6569            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
6570            // REMOVES rules (never adds validators, never overrides native submit, never
6571            // intercepts on capture phase, never re-validates on click) — so it cannot
6572            // reproduce the "Save button slides down / nav broken / no success message"
6573            // regression that caused #5902 to be rolled back on site 19413.
6574            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LfhXt8sAAAAAJL4MkgqvsOdY53C6pIw3RIhlGMq","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Please enter a value"},"emailAddress":{"message":"Please enter a valid email address"}}},"pass":{"validators":{"notEmpty":{"message":"Please enter a value"}}}}};
6575            var formElement = $(`form[name='member_login_190']`);
6576            if(validatorConfig && validatorConfig.fields) {
6577                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
6578                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
6579                        delete validatorConfig.fields[fieldName];
6580                    }
6581                });
6582            }
6583
6584            // Scroll to the first invalid field when submit fails validation,
6585            // so the user can immediately see why the form will not submit
6586            formElement.on('err.form.fv', function(e) {
6587                var $firstError = $(e.target).find('.form-group.has-error').first();
6588                if ($firstError.length) {
6589                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
6590                }
6591            });
6592
6593            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
6594
6595                if('member_login' == 'unsubscribe_email'){
6596                    return true;
6597                }
6598                // Prevent form submission
6599                e.preventDefault();
6600                $form = $(e.target),
6601                fv = $form.data('formValidation');
6602
6603                // Check HTML5 required fields that FormValidation may not know about
6604                var requiredEmpty = false;
6605                $form.find('[required]').each(function() {
6606                    var val = $(this).val();
6607                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
6608                        requiredEmpty = true;
6609                        $(this).closest('.form-group').addClass('has-error');
6610                        if ($(this).siblings('.required-error').length === 0) {
6611                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Please enter a value</small>');
6612                        }
6613                    } else {
6614                        var $reqGroup = $(this).closest('.form-group');
6615                        $(this).siblings('.required-error').remove();
6616                        // Keep has-error if another validator is still failing for this field
6617                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6618                            $reqGroup.removeClass('has-error');
6619                        }
6620                    }
6621                });
6622                if (requiredEmpty) {
6623                    fv.disableSubmitButtons(false);
6624                    counterSubmit = 0;
6625                    // Scroll to the first field with an error (HTML5-required scan does
6626                    // not trigger err.form.fv, so handle the scroll here too)
6627                    var $firstReqError = $form.find('.form-group.has-error').first();
6628                    if ($firstReqError.length) {
6629                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
6630                    }
6631                    return false;
6632                }
6633
6634                var values = $(this).serialize();
6635
6636                
6637                var locationFieldCorrect = true;
6638
6639                if($("#member_login_190 .location_required").length > 0){
6640                    $("#member_login_190 .location_required").each(function (index) {
6641                        if($(this).data('state') == 1){
6642                            if($('#member_login_190 input[name="lead_location"]').val() == "" || $('#member_login_190 input[name="lat"]').val() == "" || $('#member_login_190 input[name="lng"]').val() == "") {
6643                                locationFieldCorrect = false;
6644                            }
6645                        }
6646                    });
6647                }
6648
6649                if(locationFieldCorrect === false){
6650                    //check that there is a latitude or longitude
6651                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
6652                    return false;
6653                }
6654                        
6655
6656                if (!$(this).attr("action")) {
6657                    var action = '';
6658
6659                } else {
6660                    var action = $(this).attr("action");
6661                }
6662                if (!$(this).attr("method")) {
6663                    var method = 'post';
6664
6665                } else {
6666                    var method = $(this).attr("method");
6667                }
6668                if (!$(this).attr("form_action_type")) {
6669                    var form_action_type = 'notification';
6670
6671                } else {
6672                    var form_action_type = $(this).attr("form_action_type");
6673                }
6674                if (!$(this).attr("form_action_div")) {
6675                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
6676                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
6677
6678                } else {
6679                    var form_action_div = $(this).attr("form_action_div");
6680                }
6681                if (!$(this).attr("return_data_type")) {
6682                    var return_data_type = 'json';
6683
6684                } else {
6685                    var return_data_type = $(this).attr("return_data_type");
6686                }
6687                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
6688                if (!submitInFlight) {
6689                    if ($("#member_login_190-notification").html() != "") {
6690                        $("#member_login_190-notification").remove();
6691                    }
6692                    if ($(this).find('input[type="submit"]').length > 0) {
6693                        $(this).find('input[type="submit"]').before('<div id="member_login_190-notification" class="alert"></div>');
6694
6695                    } else {
6696                        $(this).prepend('<div id="member_login_190-notification" class="alert"></div>');
6697                    }
6698                }
6699                var notification = $("#member_login_190-notification");
6700
6701                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
6702                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6703                    setTimeout(function(){
6704                        fv.defaultSubmit();
6705                    }, 100);
6706                } else {
6707                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6708                    if(!submitInFlight) {
6709                        counterSubmit++;
6710                        $form.data('bdLastSubmitAt', Date.now());
6711
6712                        var fields      = $(this).serializeArray();
6713                        var formField   = [];
6714                        var processData = true;
6715                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
6716                        
6717                        
6718
6719                        if($("#member_login_190 input[type=file]").length > 0){
6720                            
6721                            var formObject  = new FormData();
6722                            processData     = false;
6723                            contentType     = false;
6724
6725                            $(fields).each(function(index,field){
6726                                formField.push(field.name+"="+field.value);
6727                            });
6728
6729                            values  = formField.join("&");
6730
6731                            $(formField).each(function(index,fieldValue){
6732                                var fieldInfo = fieldValue.split('=');
6733                                formObject.append(fieldInfo[0],fieldInfo[1]);
6734                            });
6735
6736                            $("#member_login_190 input[type=file]").each(function(index,node){
6737                                var file = this.files[0];
6738                                if(typeof file != "undefined"){
6739                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
6740                                }
6741                            });
6742                        }else{
6743                            
6744                            $(fields).each(function(index,field){
6745                                formField.push(field.name+"="+encodeURIComponent(field.value));
6746                            });
6747
6748                            var formObject  = formField.join("&");
6749                        } 
6750                        
6751                        $.ajax({
6752                            url: action,
6753                            type: method,
6754                            data: formObject,
6755                            dataType: return_data_type,
6756                            processData: processData,
6757                            contentType: contentType,
6758                            success: function (data) {
6759                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
6760                                notification = $("#member_login_190-notification");
6761                                if (return_data_type == "html") {
6762                                    var result = 'success';
6763
6764                                    if (!data != "") {
6765                                        var result_widget = data['result_widget'];
6766                                    }
6767
6768                                } else {
6769
6770
6771                                    if (!data['result']) {
6772                                        var result = 'error';
6773                                    } else {
6774                                        var result = data['result'];
6775                                    }
6776                                    if (!data['result_widget']) {
6777                                        var result_widget = '';
6778
6779                                    } else {
6780                                        var result_widget = data['result_widget'];
6781                                    }
6782                                }
6783                                if (result == "success") {
6784
6785                                    if (!data['message']) {
6786                                        var message = `Your information has submitted successfully!`;
6787
6788                                    } else {
6789                                        var message = data['message'];
6790                                    }
6791                                    if (!data['redirect_url']) {
6792                                        var redirect_url = '';
6793
6794                                    } else {
6795                                        var redirect_url = data['redirect_url'];
6796                                    }
6797
6798
6799
6800                                    if (form_action_type == "notification") {
6801                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
6802                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6803                                                redirect_url = "/" + redirect_url;
6804                                            }
6805                                            if (notification.parents('.modal').length) {
6806                                                $('.modal-backdrop').hide();
6807                                                $('.modal').modal('hide');
6808                                            }
6809                                            window.location.href = redirect_url;
6810                                            fv.resetForm(true);
6811                                        } else {
6812                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
6813                                            .addClass('alert-dismissible')
6814                                            .addClass("alert-success-subtle")
6815                                            .removeClass("alert-danger-subtle")
6816                                            .removeClass("alert-warning-subtle")
6817                                        
6818                                            
6819
6820                                        if(notification.parents('.modal').length && 'member_login_190' == 'whmcs_billing_address'){
6821                                            setTimeout(function(){
6822                                                notification.parents('.modal').modal('hide');
6823                                            }, 1000);
6824                                        }
6825                                        }
6826
6827                                    } else if (form_action_type == "widget") {
6828
6829                                        if (result_widget != '') {
6830
6831                                            setTimeout(function(){
6832                                                if(form_action_div != '.newsletter_modal_form_container'){
6833                                                    $("html, body").animate({ scrollTop: 0 }, 600);
6834                                                }                                                
6835                                                $(form_action_div).html(decodeHtml(result_widget)).text();
6836
6837                                            }, 1000);
6838                                        }
6839
6840                                    } else if (form_action_type == "redirect") {
6841
6842                                        if (redirect_url == "") {
6843                                            redirect_url = decodeURIComponent("");
6844                                        }
6845
6846                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6847                                            redirect_url = "/" + redirect_url;
6848                                        }
6849                                        current_location = "/search_results";
6850                                        refresh_pages_string = "/login";
6851                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
6852                                        refresh_pages_array = refresh_pages_string.split(',');
6853                                        notification.html(message)
6854                                            .addClass("alert-success-subtle")
6855                                            .removeClass("alert-danger-subtle")
6856                                            .removeClass("alert-warning-subtle")
6857                                            .delay(2000).slideUp();
6858                                            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" )){
6859                                                                                                    window.location.href = window.location.href+'?logged';
6860                                                                                            } else {
6861                                                window.location.href = redirect_url;
6862                                            }
6863
6864                                        fv.resetForm(true);
6865                                    }
6866                                    if(form_action_div != '.newsletter_modal_form_container' && 'member_login_190' != 'whmcs_billing_address'){
6867                                        $('.modal-backdrop').hide();
6868                                    }
6869                                } else {
6870                                    bdCaptchaReset(formElement.attr('id'));
6871                                    if (!data['message']) {
6872                                        var message = `You entered invali
6872d data. Please try to save again.`;
6873
6874                                    } else {
6875                                        var message = data['message'];
6876                                    }
6877                                    $("#member_login_190-notification").html(message)
6878                                        .addClass("alert-danger-subtle")
6879                                        .removeClass("alert-success-subtle")
6880                                        .removeClass("alert-warning-subtle")
6881                                        .fadeIn();
6882                                    fv.disableSubmitButtons(false);
6883                                }
6884                                counterSubmit = 0;
6885                            },
6886                            error: function (e) {
6887                                
6888                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
6889                                        bdCaptchaReset(formElement.attr('id'));
6890                                        $("#member_login_190-notification").html(`Recaptcha Error`);
6891                                } else {
6892                                    $("#member_login_190-notification").html(`A connection error occurred while saving. Please try to save again.`);
6893                                }
6894                                $("#member_login_190-notification").addClass("alert-warning-subtle")
6895                                    .removeClass("alert-success-subtle")
6896                                    .removeClass("alert-warning-subtle")
6897                                    .fadeIn();
6898                                counterSubmit = 0;
6899                            }
6900                        });/// End Ajax
6901                    }
6902                }//END else
6903            }).bind('keydown', function(event) {
6904
6905                if (event.ctrlKey || event.metaKey) {
6906
6907                    switch (String.fromCharCode(event.which).toLowerCase()) {
6908
6909                        case 's':
6910                            var nativeForm = $(this)[0];
6911                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
6912                                event.preventDefault();
6913                                return false;
6914                            }
6915                            $(this).submit();
6916                            break;
6917                    }
6918                }
6919            });
6920
6921            /// This will turn any select2 that are required in the form builder to being required elements.
6922            $('#member_login_190 select').each(function (i, obj) {
6923                setTimeout(function(){
6924                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
6925                        $(obj).css("z-index","-999");
6926                        $(obj).css("height","0");
6927                        $(obj).css("width","0");
6928                        $(obj).css("display","block");  
6929                        $(obj).css("position","absolute");  
6930                    }
6931                }, 3000);
6932            });
6933
6934            // Clear required-error messages when user fills in a required field
6935            $('#member_login_190').on('keyup change', '[required]', function() {
6936                var val = $(this).val();
6937                if (val !== '' && val !== null && val.trim() !== '') {
6938                    var $group = $(this).closest('.form-group');
6939                    // Remove only this handler's own required message
6940                    $(this).siblings('.required-error').remove();
6941                    // Keep has-error if another FormValidation validator is still failing
6942                    // (e.g. stringLength, regexp). has-error is shared, so removing it
6943                    // wholesale would clobber other validators' red styling.
6944                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6945                        $group.removeClass('has-error');
6946                    }
6947                }
6948            });
6949
6950        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
6951    </script>
6951
6952            
6952<script>
6953        window.addEventListener('load', (event) => {
6954            setTimeout(() => {
6955                    }, 501);
6956        });
6957    </script>
vendor: 2 bytes, line 6957
6957
6958<script>
6959	function decision(message, url) {
6960		if (confirm(message)) {
6961			setTimeout(function () {
6962				window.location = url;
6963			}, 0);
6964		}
6965	}
6966</script>
vendor: 2 bytes, line 6966
6966
6967<script>
6968	// Function to add alt, width, and height attributes to <img> elements without them
6969	function addAttributesToImages() {
6970		var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])');
6971		Array.prototype.forEach.call(images, function(img) {
6972			// Skip if we've already processed this image
6973			if (img.dataset.processed === 'true') {
6974				return;
6975			}
6976			
6977			// Mark this image as being processed
6978			img.dataset.processed = 'true';
6979			
6980			// Add alt attribute if missing
6981			if (!img.hasAttribute('alt')) {
6982				var src = img.getAttribute('src') || 'image';  // Default src to 'image' if missing
6983				var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, '');
6984
6985				try {
6986					altText = decodeURIComponent(altText)
6987					.replace(/[_\-+,.:;]+/g, ' ')
6988					.replace(/\s+/g, ' ')
6989					.trim();
6990				} catch (e) {
6991					altText = 'image';  // Fallback to 'image' if decoding fails
6992				}
6993
6994				// Ensure altText is not empty, otherwise use 'image'
6995				altText = altText || 'image';
6996
6997				img.setAttribute('alt', altText);
6998			}
6999
7000			// Add width and height attributes if missing
7001			if (!img.hasAttribute('width') || !img.hasAttribute('height')) {
7002				// Handle SVG differently
7003				if (img.src && img.src.endsWith('.svg')) {
7004					// For SVG, use the viewBox to set width and height, if available
7005					fetch(img.src)
7006					.then(response => {
7007						if (!response.ok) {
7008							throw new Error('Failed to fetch SVG: ' + response.status);
7009						}
7010						return response.text();
7011					})
7012					.then(svgText => {
7013						var parser = new DOMParser();
7014						var svgDoc = parser.parseFromString(svgText, "image/svg+xml");
7015						var svgElement = svgDoc.querySelector('svg');
7016						
7017						if (svgElement) {
7018							var viewBox = svgElement.getAttribute('viewBox');
7019							if (viewBox) {
7020								var viewBoxValues = viewBox.split(' ');
7021								var width = viewBoxValues[2];
7022								var height = viewBoxValues[3];
7023
7024								if (!img.hasAttribute('width')) {
7025									img.setAttribute('width', width);
7026								}
7027								if (!img.hasAttribute('height')) {
7028									img.setAttribute('height', height);
7029								}
7030							}
7031						}
7032					})
7033					.catch(error => {
7034						// Fallback to default dimensions for SVG
7035						if (!img.hasAttribute('width')) {
7036							img.setAttribute('width', '100');
7037						}
7038						if (!img.hasAttribute('height')) {
7039							img.setAttribute('height', '100');
7040						}
7041					});
7042				} else {
7043					// For non-SVG images, use natural dimensions
7044					var tempImg = new Image();
7045					tempImg.src = img.src;
7046					
7047					tempImg.onload = function() {
7048						if (!img.hasAttribute('width')) {
7049							img.setAttribute('width', tempImg.naturalWidth);
7050						}
7051						if (!img.hasAttribute('height')) {
7052							img.setAttribute('height', tempImg.naturalHeight);
7053						}
7054					};
7055					
7056					tempImg.onerror = function() {
7057						// Fallback to default dimensions
7058						if (!img.hasAttribute('width')) {
7059							img.setAttribute('width', '100');
7060						}
7061						if (!img.hasAttribute('height')) {
7062							img.setAttribute('height', '100');
7063						}
7064					};
7065				}
7066			}
7067		});
7068	}
7069
7070	document.addEventListener('DOMContentLoaded', function() {
7071		// Run the function initially to catch images already in the DOM
7072		addAttributesToImages();
7073
7074		// Create a MutationObserver to monitor the DOM for added/changed images
7075		var observer = new MutationObserver(function(mutations) {
7076			mutations.forEach(function(mutation) {
7077				if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') {
7078					// Only process if we have new images or src attribute changes
7079					var hasNewImages = false;
7080					
7081					if (mutation.addedNodes.length > 0) {
7082						mutation.addedNodes.forEach(function(node) {
7083							if (node.nodeType === 1) { // Element node
7084								if (node.tagName === 'IMG' || node.querySelectorAll) {
7085									hasNewImages = true;
7086								}
7087							}
7088						});
7089					}
7090					
7091					if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
7092						hasNewImages = true;
7093					}
7094					
7095					if (hasNewImages) {
7096						addAttributesToImages();
7097					}
7098				}
7099			});
7100		});
7101
7102		// Start observing the document body for changes
7103		observer.observe(document.body, {
7104			childList: true, // Watch for added or removed nodes
7105			subtree: true, // Watch the entire subtree
7106			attributes: true, // Watch for attribute changes
7107			attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute
7108		});
7109	});
7110</script>
7110<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] {
7111    cursor: wait
7112}
7113select.select2-preload {
7114    line-height: initial;
7115}
7116
7117select#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"] {
7118    -webkit-appearance: none;
7119    -moz-appearance: none;
7120    appearance: none;
7121    background-image: url(/images/select2ArrowDown.png) !important;
7122    background-repeat: no-repeat !important;
7123    background-size: 10px 9px !important;
7124    background-position: 99% 16px;
7125    border-radius: 6px;
7126    overflow: hidden;
7127}
7128.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"] {
7129    background-position: 98.2% 12px;
7130} </style>    <!-- DROPDOWN SELECT SCRIPT -->
7131    <!-- Select2 CSS Included in website-styles.pkgd.min.css -->
7132    <!--[if lt IE 9]>
7133    
7133<script defer src="https://www.optimizecdn.com/directory/cdn/assets/html5shiv/3.7.2/html5shiv.min.js"></script>
7133
7134    
7134<script defer src="https://www.optimizecdn.com/directory/cdn/bootstrap/select2/master/js/respond.min.js"></script>
7134
7135    <![endif]-->
7136    
7136<script>
7137
7138        var preloaded_ttid  = false;
7139        var preloaded_tid   = false;
7140        var preloaded_sid   = false;
7141        var path2            = window.location.pathname.replace(/\//g, "_");
7142
7143        if (performance.navigation.type !== 2) {
7144            if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
7145                sessionStorage.removeItem('select2-ttid'+path2);
7146            }
7147
7148            if (sessionStorage.getItem('select2-tid'+path2) !== null) {
7149                sessionStorage.removeItem('select2-tid'+path2);
7150            }
7151
7152            if (sessionStorage.getItem('select2-sid'+path2) !== null) {
7153                sessionStorage.removeItem('select2-sid'+path2);
7154            }
7155
7156        }else if(performance.navigation.type === 2){
7157            if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
7158                preloaded_ttid = sessionStorage.getItem('select2-ttid'+path2);
7159            }
7160
7161            if (sessionStorage.getItem('select2-tid'+path2) !== null) {
7162                preloaded_tid = sessionStorage.getItem('select2-tid'+path2);
7163            }
7164
7165            if (sessionStorage.getItem('select2-sid'+path2) !== null) {
7166                preloaded_sid = sessionStorage.getItem('select2-sid'+path2);
7167            }
7168        }
7169
7170        window.addEventListener('load', () => {
7171            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"]');
7172            if (typeof select2Inputs != "undefined") {
7173                for (let i = 0; i < select2Inputs.length; i++) {
7174                    let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
7175                    if (!select2Inputs[i].getAttribute('placeholder')) {
7176                        inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
7177                    }
7178                    let countryCode = select2Inputs[i].getAttribute('data-country-code');
7179                    if (select2Inputs[i].getAttribute('data-country-code') != null && countryCode > 0 && typeof isoCountries != 'undefined') {
7180                        for (let c = 0; c < isoCountries.length; c++) {
7181                            if(isoCountries[c].id == countryCode){
7182                                //   select2Inputs[i].querySelector('option:first-child').text = isoCountries[c].text;
7183                                select2Inputs[i].text = isoCountries[c].text;
7184                            }
7185                        }
7186
7187                    }
7188                    if(select2Inputs[i].hasAttribute('data-country-code')){
7189                        inputPlaceHolder = null; //reset the input
7190                    }
7191                    if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
7192                        select2Inputs[i].querySelector('option:first-child').text = inputPlaceHolder;
7193                        select2Inputs[i].style.color = "#a8a8a8";
7194                        if(!select2Inputs[i].querySelector('option:first-child').hasAttribute('value')){
7195                            select2Inputs[i].querySelector('option:first-child').value='';
7196                        }
7197                    }
7198                    select2Inputs[i].classList.add("select2-preload");
7199                    select2Inputs[i].addEventListener('mousedown', select2OnFormClick, false);
7200                }
7201            }
7202        });
7203
7204        function select2OnFormClick(event = false) {
7205            let elemtClicked = '';
7206            if (event !== false) {
7207                event.preventDefault();
7208                event.stopImmediatePropagation();
7209                elemtClicked = event.target;
7210                elemtClicked.disabled = true;
7211            }
7212
7213            let loadScriptAsync = function (uri) {
7214                return new Promise((resolve, reject) => {
7215                    let script = document.createElement('script');
7216                    script.type = 'text/javascript';
7217                    script.src = uri;
7218                    script.async = true;
7219                    script.onload = function () {
7220                        if (event !== false) {
7221                            elemtClicked.disabled = false;
7222                            select2Initialize();
7223                            $(elemtClicked).select2('open');
7224                            $(elemtClicked).on("select2-close", function () {
7225                                setTimeout(function() {
7226                                    $('.select2-container-active').removeClass('select2-container-active');
7227                                    $(':focus').blur();
7228                                }, 1);
7229                            });
7230                            if (elemtClicked.hasAttribute('data-fv-field')) {
7231                                if (window.getComputedStyle(elemtClicked).display === "none") {
7232                                    // if element is display none, the formvalition can not read
7233                                    elemtClicked.style.cssText = "display: block;position: absolute;visibility: hidden !important;height: 0;width: 0;opacity: 0 !important;"
7234                                }
7235                            }
7236                        } else {
7237                            select2Initialize();
7238                        }
7239                        resolve("ok");
7240                    };
7241                    let head = document.getElementsByTagName('head')[0];
7242                    head.appendChild(script);
7243                });
7244            }
7245
7246            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"]');
7247
7248            if (typeof select2Inputs != "undefined") {
7249                for (let i = 0; i < select2Inputs.length; i++) {
7250                    let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
7251                    if (!select2Inputs[i].getAttribute('placeholder')) {
7252                        inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
7253                    }
7254                    if(select2Inputs[i].hasAttribute('data-country-code')){
7255                        inputPlaceHolder = null; //reset the input
7256                    }
7257                    if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
7258                        select2Inputs[i].querySelector('option:first-child').text = '';
7259                    }
7260                    select2Inputs[i].removeEventListener('mousedown', select2OnFormClick, false);
7261                }
7262            }
7263            let scriptLoaded = loadScriptAsync('https://www.optimizecdn.com/directory/cdn/bootstrap/select2/3.5.2/select2.min.js?v=3.5.5');
7264            return scriptLoaded;
7265        }
7266
7267        function select2Initialize(){
7268            function getSecondLevel(div,id) {
7269                $("#" + div).select2("data", {
7270                    id: "",
7271                    text: `Loading...`
7272                });
7273                $.ajax({
7274                    url : '/ajaxsearch/get-services',
7275                    type : "GET",
7276                    data : {
7277                        'specialty_id' : id
7278                    },
7279                    dataType: "json",
7280                    success : function(data) {
7281                        var options = '';
7282
7283                        for (var i = 0; i < data.length; i++) {
7284                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
7285                        }
7286                        if (div == "tid"){
7287                            $("#ttid").select2("data", {
7288                                id: "",
7289                                text: "No options available"
7290                            });
7291
7292
7293                            $("#ttid").select2("enable", false);
7294
7295                            $("#" + div).change(function () {
7296                                sessionStorage.setItem("select2-tid"+path2,$(this).val());
7297                            });
7298                        }
7299                        if (data.length > 1) {
7300                            $("#" + div).select2("enable",true);
7301                            $("#" + div).html(options);
7302                            $("#" + div).select2("val", "");
7303                            
7304                        } else {
7305                            $("#"+div).select2("data", {
7306                                id: "",
7307                                text: "No options available"
7308                            });
7309                            $("#"+div).select2("val", "");
7310                        }
7311
7312                        if(div == 'tid' && preloaded_tid !== false){
7313                            $("#" + div).select2("val", preloaded_tid);
7314                            $("#" + div).trigger('change');
7315                        }
7316                    }
7317                });
7318            }
7319            function getSecondLevelAccount(div,id) {
7320                $("#" + div).select2("data", {
7321                    id: "",
7322                    text: `Loading...`
7323                });
7324                $.ajax({
7325                    url : '/ajaxsearch/get-services',
7326                    type : "GET",
7327                    data : {
7328                        'specialty_id' : id
7329                    },
7330                    dataType: "json",
7331                    success : function(data) {
7332                        var options = '';
7333
7334                        for (var i = 0; i < data.length; i++) {
7335                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
7336                        }
7337                        if (data.length > 1) {
7338                            $("#" + div).select2("close");
7339                            $("#" + div).select2("val", "");
7340                            $("#" + div).select2("enable",true);
7341                            $("#" + div).html(options);
7342
7343                            
7344                        } else {
7345                            $("#"+div).select2("data", {
7346                                id: "",
7347                                text: "No options available"
7348                            });
7349                            $("#"+div).select2("val", "");
7350                        }
7351                    }
7352                });
7353            }
7354            function getThirdLevel(div,id,id2) {
7355                $("#"+div).select2("data", {
7356                    id: "",
7357                    text: `Loading...`
7358                });
7359
7360                $.ajax({
7361                    url : '/ajaxsearch/get-locations',
7362                    type : "GET",
7363                    data : {
7364                        'specialty_id' : id,
7365                        'treatment_id' : id2,
7366                    },
7367                    dataType: "json",
7368                    success : function(data) {
7369                        var options = '';
7370
7371                        for (var i = 0; i < data.length; i++) {
7372                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
7373                        }
7374                        if (data.length > 1) {
7375                            $("#" + div).select2("enable",true);
7376                            $("#" + div).html(options);
7377                            $("#" + div).select2("val", "");
7378                            
7379                        } else {
7380                            $("#"+div).select2("data", {
7381                                id: "",
7382                                text: "No options available"
7383                            });
7384                            $("#"+div).select2("val", "");
7385                        }
7386                    }
7387                });
7388            }
7389            var current_country = '';
7390            function getStateList(div,id) {
7391                if (id != current_country) {
7392                    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). */
7393
7394                    $("#"+div).select2("data", {
7395                        id: "",
7396                        text: `Loading...`
7397                    });
7398                    $.ajax({
7399                        url : '/ajaxsearch/get-states',
7400                        type : "GET",
7401                        data : {
7402                            'country' : id
7403                        },
7404                        dataType: "json",
7405                        success : function(data) {
7406                            $("#" + div).html(''); // clear options
7407
7408                            /* p949P6dS: data[0] is always the server-side "(Select from List)" placeholder,
7409                               so <=2 entries means the country has at most 1 real region (Singapore,
7410                               Martinique, zero-region). Client wants those to read "No State/Province
7411                               Available" instead of "(Select from List)"; the single real region stays
7412                               selectable. Reset/enable now runs on EVERY response (was gated behind
7413                               data.length > 1, which left zero-region countries stuck on "Loading..."
7414                               and disabled); auto-open stays multi-region only. */
7415                            var hasStates = (data.length > 2);
7416                            for (var i = 0; i < data.length; i++) {
7417                                var optionTitle = (!hasStates && data[i].value === "") ? `No State/Province Available for This Country` : data[i].title;
7418                                var newOption = new Option(optionTitle, data[i].value, false, false);
7419                                $("#" + div).append(newOption).trigger('change');
7420
7421                            }
7422                            if (data.length === 0) {
7423                                $("#" + div).append(new Option(`No State/Province Available for This Country`, "", false, false)).trigger('change');
7424                            }
7425
7426                            $("#" + div).select2("enable",true);
7427                            $("#" + div).prop("disabled", false);
7428                            $("#" + div).select2("val", "");
7429                            if (hasStates) {
7430                                                                $("#" + div).select2("open");
7431                                                            }
7432                        }
7433                    });
7434                } else {
7435                    /* p949P6dS AC#3: the select2-open handler runs select2("enable",false) BEFORE
7436                       re-calling getStateList, and for a country with <=2 options (Singapore,
7437                       Martinique) that re-call short-circuits here on the id == current_country
7438                       guard. This branch previously only reset the value, so the field was left
7439                       permanently disabled: select2-container-disabled, clicks never open it, the
7440                       single real region is unselectable. Mirror the success path's re-enable so a
7441                       short-circuited re-open leaves the field usable. Multi-region countries never
7442                       hit this (their open handler is gated behind count <= 2). */
7443                    $("#" + div).select2("enable", true);
7444                    $("#" + div).prop("disabled", false);
7445                    $("#" + div).select2("val", "");
7446                }
7447            }
7448            /* p949P6dS: keep the checkout/billing required-State validation in sync with the
7449               server-side waiver, on BOTH layers. When the selected country has selectable
7450               sub-regions (Canada, US, ...) FormValidation validates state_code (inline "Required
7451               Field" on submit); when it has none (Singapore, Martinique, zero-region) the state_code
7452               validator is disabled + un-flagged so those countries are not blocked. Delegated so it
7453               binds even though the billing form is revealed after step 1; guarded to no-op on any
7454               page/form without FormValidation + a state_code field. The server still enforces the
7455               same rule (bd-core-files form_controller), so this is UX only, not the security gate. */
7456            function bdSyncStateRequired(hasStates) {
7457                var $stField = $("#state-chained");
7458                var $stForm = $stField.closest("form");
7459                var stFv = ($stForm.length) ? ($stForm.data("formValidation") || $stForm.data("bootstrapValidator")) : null;
7460                if (!stFv || !stFv.options || !stFv.options.fields || !stFv.options.fields.state_code) {
7461                    return;
7462                }
7463                stFv.options.fields.state_code.excluded = hasStates ? false : true;
7464                try { stFv.enableFieldValidators("state_code", hasStates); } catch (e) {}
7465
7466                /* p949P6dS: keep the visible "* " required marker on the State label in sync with the
7467                   waiver. functions_up.php renders <span class="required">* </span> on the state_code
7468                   label when AVS forces the field required; for a no-state country (Singapore,
7469                   Martinique) the field is genuinely waived so the asterisk must go away, and come
7470                   back when the country has selectable states again. Scoped to the state label. */
7471                var $stReq = $("label[for='state-chained'] .required", $stForm);
7472                $stReq.css("display", hasStates ? "" : "none");
7473
7474                /* p949P6dS: the ACTUAL blocker. The billing form carries a SECOND required layer,
7475                   independent of FormValidation: the form's success.form.fv handler loops
7476                   $form.find('[required]') and, for any empty one, appends <small class="required-error">
7477                   Required Field</small> + returns false, hard-blocking the submit. AVS renders the
7478                   state_code <select> with the HTML5 `required` attribute, so a no-state country
7479                   (empty state) stayed blocked with "Required Field" even after the FormValidation
7480                   waiver above. Drop the `required` attribute (+ clear its custom error) when the
7481                   country has no selectable states, and restore it when it does. Remember the server-
7482                   rendered original so we never ADD required to a field AVS left optional. */
7483                if ($stField.attr("data-bd-orig-required") === undefined) {
7484                    $stField.attr("data-bd-orig-required",
7485                        ($stField.prop("required") || $stField.attr("required") !== undefined) ? "1" : "0");
7486                }
7487                var stOrigRequired = ($stField.attr("data-bd-orig-required") === "1");
7488
7489                var $stRow = $stField.closest(".form-group,.fv-row,.row");
7490                if (!hasStates) {
7491                    try { if (typeof stFv.resetField === "function") { stFv.resetField("state_code", true); } } catch (e) {}
7492                    $stRow.removeClass("has-error has-success");
7493                    $stRow.find(".help-block[data-fv-validator]").css("display", "none");
7494                    /* drop the HTML5 required gate + its "Required Field" message for no-state country */
7495                    $stField.removeAttr("required").prop("required", false);
7496                    $stField.siblings(".required-error").remove();
7497                    $stRow.find(".required-error").remove();
7498
7499                    /* p949P6dS: on the Member-Dashboard billing modal the Save button is disabled by
7500                       FormValidation until the whole form is valid; for a no-state country the user
7501                       has no state to pick, so nothing re-enables it and Save stays stuck disabled ->
7502                       "cannot save". Re-enable it directly. IMPORTANT: do NOT call stFv.validate()
7503                       here — in this FormValidation build validate() on an already-valid form fires
7504                       success.form.fv (a real submit), which saved the address on the country change
7505                       AND consumed the one-time CSRF token, so the actual Save click then failed with
7506                       "You entered invalid data. Please try to save again." disableSubmitButtons only
7507                       toggles the button; no submit. Scoped to the billing modal so checkout is
7508                       untouched. */
7509                    if ($stForm.closest("#billing_address_modal").length) {
7510                        try { if (typeof stFv.disableSubmitButtons === "function") { stFv.disableSubmitButtons(false); } } catch (e) {}
7511                        $stForm.find("input.submitter, button.submitter, [type=submit]")
7512                               .removeClass("disabled").prop("disabled", false).removeAttr("disabled");
7513                    }
7514                } else if (stOrigRequired) {
7515                    /* country has states again — restore the required gate AVS originally set */
7516                    $stField.attr("required", "required").prop("required", true);
7517                }
7518            }
7519            $(document).off("change.bdStateReq").on("change.bdStateReq", "#country-chained", function() {
7520                var bdCc = $(this).val();
7521                var $bdForm = $("#state-chained").closest("form");
7522                var bdFv = ($bdForm.length) ? ($bdForm.data("formValidation") || $bdForm.data("bootstrapValidator")) : null;
7523                if (!bdFv || !bdFv.options || !bdFv.options.fields || !bdFv.options.fields.state_code || bdCc === "") {
7524                    return;
7525                }
7526                $.ajax({
7527                    url: "/ajaxsearch/get-states",
7528                    type: "GET",
7529                    data: { "country": bdCc },
7530                    dataType: "text",
7531                    success: function(bdResp) {
7532                        /* count entries without regex (DB+eval mangles backslashes): split on the
7533                           literal "value" key; total entries = splits - 1; >2 means placeholder + 2+
7534                           real regions == has selectable states. Text parse also survives the
7535                           malformed-JSON zero-region response. */
7536                        var bdTotal = bdResp.split(`"value"`).length - 1;
7537                        bdSyncStateRequired(bdTotal > 2);
7538                    }
7539                });
7540            });
7541            /* p949P6dS: the Member Dashboard billing modal (widget 1861) pre-selects the member's
7542               SAVED country_code at document.ready without firing a change event, so the handler
7543               above never ran for it and an AVS-forced required State (functions_up.php forces
7544               field_required=1 on state_code when whmcs_avs_on / stripe_accept_intl_payments is on)
7545               stayed active for a saved no-state country — blocking the save with "Required Field"
7546               on a country that has no state to pick. Sync once for an already-selected country.
7547               The namespaced trigger fires only this handler (not select2/getStateList), and the
7548               handler no-ops when the country is empty or state_code is not a validated field, so
7549               checkout and every other chained-select page are unaffected. */
7550            $("#country-chained").each(function() {
7551                if ($(this).val() !== "") {
7552                    $(this).trigger("change.bdStateReq");
7553                }
7554            });
7555            function getInfinityChained(div,id) {
7556                $("#"+div).select2("data", {
7557                    id: "",
7558                    text: `Loading...`
7559                });
7560                $.ajax({
7561                    url : '/ajaxsearch/get-subcategory',
7562                    type : "GET",
7563                    data : {
7564                        'parent' : id
7565                    },
7566                    dataType: "json",
7567                    success : function(data) {
7568                        var options = '';
7569
7570                        for (var i = 0; i < data.length; i++) {
7571                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
7572                        }
7573                        if (data.length > 1) {
7574                            $("#" + div).select2("enable",true);
7575                            $("#" + div).html(options);
7576                            if(div == 'tid' && '' != ''){
7577                                $("#" + div).select2("val", "");
7578                                $("#" + div).trigger('change');
7579                            } else if(div == 'tid' && preloaded_tid !== false){
7580                                $("#" + div).select2("val", preloaded_tid);
7581                                $("#" + div).trigger('change');
7582                            }else {
7583                                $("#" + div).select2("val", "");
7584                            }
7585
7586
7587
7588                            
7589                        } else {
7590                            $("#" + div).select2("data", {
7591                                id: "",
7592                                text: "No options available"
7593                            });
7594                        }
7595                    }
7596                });
7597            }
7598            function categoryChained(div,id) {
7599                $("#" + div).select2("data", {
7600                    id: "",
7601                    text: `Loading...`
7602                });
7603                if(div == "tid") {
7604                    url_link = '/ajaxsearch/get-services'
7605                    data_passed = {'specialty_id' : id}
7606                } else {
7607                    url_link = '/ajaxsearch/category-list';
7608                    data_passed = {'parent' : id} ;
7609                }
7610
7611                var selectName = $("select[next="+div+"]").prop("name");
7612
7613
7614                if( (selectName == "ttid" || selectName == "sid" || selectName == "tid") ){
7615
7616                    sessionStorage.setItem("select2-"+selectName+path2,id);
7617                }
7618
7619                $.ajax({
7620                    url : url_link,
7621                    type : "GET",
7622                    data : data_passed,
7623                    dataType: "json",
7624                    success : function(data) {
7625                        var options = '';
7626
7627                        for (var i = 0; i < data.length; i++) {
7628                            options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
7629                        }
7630
7631                        if (data.length > 1) {
7632                            $("#" + div).select2("enable",true);
7633                            $("#" + div).html(options);
7634
7635                            if(div == "ttid" && preloaded_ttid !== false){
7636                                $("#" + div).select2("val", preloaded_ttid);
7637                                $("#" + div).trigger('change');
7638                            }else if(div == "tid" && preloaded_tid !== false){
7639                                $("#" + div).select2("val", preloaded_tid);
7640                                $("#" + div).trigger('change');
7641                            }else{
7642                                $("#" + div).select2("val", "");
7643                            }
7644
7645
7646                            
7647                        } else {
7648                            $("#" + div).select2("data", {
7649                                id: "",
7650                                text: "No options available"
7651                            });
7652                        }
7653                    }
7654                });
7655            }
7656            function formatCountry(country) {
7657                if (!country.id && country.text.includes("+")) {
7658                    let dataCountry = country.text;
7659                    dataCountry = dataCountry.split('+')
7660                    country.code = dataCountry[0].trim();
7661                    country.id = dataCountry[1].trim();
7662                    return country;
7663                } else if (!country.code) {
7664                    return country.text;
7665                }
7666                var $country = $(
7667                    '<span class="flag-icon flag-icon-' + country.code.toLowerCase() + ' flag-icon-squared"></span>' +
7668                    '<span class="flag-text" style="margin-left:10px;">' + country.text + '</span>'
7669                );
7670                return $country;
7671            }
7672
7673            let phoneCountryCode = document.querySelector("[name^='bd_phone_country_code']");
7674            if (typeof phoneCountryCode != 'undefined' && phoneCountryCode != null && typeof isoCountries != 'undefined') {
7675                $("[name^='bd_phone_country_code']").select2({
7676                    placeholder:`Country`,
7677                    data:isoCountries,
7678                    searchInputPlaceholder: `Enter Country Code`,
7679                    formatResult : formatCountry,
7680                    dropdownAutoWidth: true,
7681                    width: "resolve",
7682                }).on("select2-opening", function (e) {
7683                    if (typeof e.currentTarget.attributes['data-default-country-code'] !== "undefined") {
7684                        $(this).val(e.currentTarget.attributes['data-default-country-code'].value)
7685                            .removeAttr("data-default-country-code")
7686                            .trigger('change')
7687                            .trigger('open');
7688                    }
7689                }).change(function (e) {
7690                    let select2Span = $(this).attr('id');
7691                    if (e.val) {
7692                        $('#'+$(this).attr('id')+'--flag').remove();
7693                        $('#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>')
7694                    }else{
7695                        $('#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>')
7696                    }
7697                    $(this).removeAttr("data-default-country-flag");
7698
7699                });
7700            }
7701            $("#bd-chained").select2({
7702                title: "Select Category",
7703                placeholder: "Select Category",
7704                allowClear: true,
7705                formatNoMatches: function () {
7706                    return "No matches found";
7707                }
7708            }).change(function () {
7709                var id = $(this).val();
7710                $("#tid").select2("enable",false);
7711                getInfinityChained("tid",id);
7712                            });
7713            $("#category-chained").select2({
7714                title: "Select Category",
7715                placeholder: "Select Category",
7716                allowClear: true
7717            }).change(function () {
7718                var id = $(this).val();
7719                $("#subcategory-chained").select2("enable",false);
7720                categoryChained("subcategory-chained",id);
7721                            });
7722
7723            $(".select-category-chained").select2({
7724                title: "Select Category",
7725                placeholder: "Select Category",
7726                allowClear: true
7727            })
7728            $(".infinite-chained").select2({
7729                title: "Select option from list",
7730                placeholder: "Click to select an option",
7731                allowClear: true,
7732                formatNoMatches: function () {
7733                    return "No matches found";
7734                }
7735            }).change(function () {
7736                var id          = $(this).val();
7737                var attr        = $(this).attr('next');
7738                var selectName  = $(this).prop('name');
7739                if ( selectName=='ttid' || attr =='ttid' ) {
7740                    $("#" + attr).select2("enable",false);
7741                    categoryChained(attr,id);
7742                                        sessionStorage.setItem("select2-"+selectName+path2,id);
7743                }
7744            }).on("select2-close", function () {
7745                setTimeout(function() {
7746                    $('.select2-container-active').removeClass('select2-container-active');
7747                    $(':focus').blur();
7748                }, 1);
7749            });
7750            $("#subcategory-chained").select2();
7751            $(".combobox").select2();
7752            $(".search-chained").select2();
7753
7754            $("select#country-chained").select2({
7755                title: "",
7756                placeholder: "",
7757                val: "",
7758                allowClear: true,
7759                formatNoMatches: function () {
7760                    return "No matches found";
7761                }
7762            }).change(function () {
7763                var id = $(this).val();
7764                $("#state-chained").select2("enable",false);
7765                getStateList("state-chained",id);
7766                var state = "";
7767
7768                if (id == "CA") {
7769                    state = "Province";
7770
7771                } else if (id == "UK") {
7772                    state = "Region";
7773
7774                } else if (id == "US" || id == "AU") {
7775                    state = "State";
7776
7777                } else {
7778                    state = "Region";
7779                }
7780                $("#state-chained").prev(".control-label").text(state);
7781            });
7782            $("#state-chained").select2();
7783
7784            $("#state-chained").on("select2-open", function(event) {
7785                event.preventDefault();
7786                var id = $("#country-chained").val();
7787                var count = $('#state-chained option').length;
7788
7789                if (id != "" && count <= 2) {
7790                    $("#state-chained").select2("enable",false);
7791                    getStateList("state-chained",id);
7792                    var state = "";
7793
7794                    if (id == "CA") {
7795                        state = "Province";
7796
7797                    } else if (id == "UK") {
7798                        state = "Region";
7799
7800                    } else if (id == "US" || id == "AU") {
7801                        state = "State";
7802
7803                    } else {
7804                        state = "Region";
7805                    }
7806                    $("#state-chained").prev(".control-label").text(state);
7807                }
7808            });
7809
7810            $("#country-chained-2").select2({
7811                title: "Select Country",
7812                placeholder: "(select country)",
7813                val: "",
7814                allowClear: true,
7815                formatNoMatches: function () {
7816                    return "No matches found";
7817                }
7818            }).change(function () {
7819                var id = $(this).val();
7820                $("#state-chained-2").select2("enable",false);
7821                getStateList("state-chained-2",id);
7822                var state = "";
7823
7824                if (id == "CA") {
7825                    state = "Province";
7826
7827                } else if (id == "UK") {
7828                    state = "Region";
7829
7830                } else if (id == "US" || id == "AU") {
7831                    state = "State";
7832
7833                } else {
7834                    state = "Region";
7835                }
7836                $("#state-chained-2").prev(".control-label").text(state);
7837            });
7838
7839            $("#state-chained-2").select2();
7840            $("#profession_id").select2({
7841                placeholder: "Select From List",
7842                allowClear: true,
7843                formatNoMatches: function () {
7844                    return "No matches found";
7845                }
7846            }).change(function () {
7847                var id = $(this).val();
7848                getSecondLevelAccount("category_id",id);
7849                            });
7850                        $("#sid").select2({
7851                title: "Select Category",
7852                placeholder: "Select Category",
7853                allowClear: true,
7854                formatNoMatches: function () {
7855                    return "No matches found";
7856                }
7857            }).change(function () {
7858                var id = $(this).val();
7859                $("#tid").select2("enable",false);
7860                getSecondLevel("tid",id);
7861                $("#tid").select2("open");
7862                sessionStorage.setItem("select2-sid"+path2,id);
7863            });
7864            $("#location_value_dropdown").select2({
7865                title: "More Options",
7866                placeholder: "More Options",
7867                allowClear: true,
7868                formatNoMatches: function () {
7869                    return "No matches found";
7870                }
7871            });
7872            $("#tid").select2({
7873                title: "Select Sub-category",
7874                placeholder: "Select Sub-category",
7875                allowClear: true,
7876                formatNoMatches: function () {
7877                    return "No matches found";
7878                }
7879                            });
7880            $("#location_value_dropdown").select2({
7881                title: "More Options",
7882                placeholder: "More Options",
7883                allowClear: true
7884            });
7885        }
7886
7887        if(preloaded_ttid !== false || preloaded_tid !== false || preloaded_sid !== false){
7888            $(document).ready(function(){
7889                // Skip if homepage widget already handles preload
7890                if(window._bdCategoryPreloaded) return;
7891
7892                if(preloaded_sid !== false && $("#sid").length > 0){
7893                    select2OnFormClick();
7894                    setTimeout(() => {
7895                        $("#sid").select2('val', preloaded_sid);
7896                        $('#sid').trigger('change');
7897                    }, 500);
7898                }else if(preloaded_tid !== false && $("#sid").length <= 0){
7899                    select2OnFormClick();
7900                    setTimeout(() => {
7901                        $("#tid").select2('val', preloaded_tid);
7902                        $('#tid').trigger('change');
7903                    }, 500);
7904                }
7905            });
7906        }
7907    </script>
vendor: 2 bytes, line 7907
7907
7908<script>
7909    // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score
7910    $(document).ready(function() {
7911        var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness
7912
7913        // Iterate over each select element that does not have an aria-label
7914        $('select:not([aria-label])').each(function() {
7915            // Use the ID or placeholder as the base for the aria-label, stripping HTML tags
7916            var baseLabel = this.id || $(this).attr('placeholder') || 'select';
7917            baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim
7918
7919            // Ensure uniqueness of each aria-label
7920            ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1;
7921            var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel];
7922
7923            // Truncate aria-label to 100 characters
7924            ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel;
7925
7926            // Set the aria-label attribute to the unique label
7927            $(this).attr('aria-label', ariaLabel);
7928        });
7929    });
7930</script>
vendor: 2 bytes, line 7930
7930
7931<script type="application/ld+json">
7932{
7933    "@context": "https://schema.org",
7934    "@graph": [
7935        {
7936            "@type": "WebSite",
7937            "@id": "https://www.westminsterchamber.org/#website",
7938            "name": "Westminster Chamber of Commerce",
7939            "url": "https://www.westminsterchamber.org/",
7940            "inLanguage": "en-US",
7941            "dateModified": "2026-09-01T00:00:00-07:00",
7942            "potentialAction": {
7943                "@type": "SearchAction",
7944                "target": "https://www.westminsterchamber.org/sitesearch?q={search_term_string}",
7945                "query-input": "required name=search_term_string",
7946                "name": "Search Directory: Westminster Chamber of Commerce"
7947            },
7948            "publisher": {
7949                "@id": "https://www.westminsterchamber.org/#organization"
7950            }
7951        },
7952        {
7953            "@type": "Organization",
7954            "@id": "https://www.westminsterchamber.org/#organization",
7955            "name": "Westminster Chamber of Commerce",
7956            "description": "Search the most complete westminster california businesses directory. Find westminster california businesses.",
7957            "url": "https://www.westminsterchamber.org/",
7958            "mainEntityOfPage": {
7959                "@type": "WebPage",
7960                "@id": "https://www.westminsterchamber.org/#webpage"
7961            },
7962            "contactPoint": [
7963                {
7964                    "@type": "ContactPoint",
7965                    "email": "[email protected]",
7966                    "contactType": "customer support",
7967                    "availableLanguage": [
7968                        "en"
7969                    ],
7970                    "areaServed": "US"
7971                }
7972            ],
7973            "areaServed": {
7974                "@type": "Country",
7975                "name": "US"
7976            },
7977            "telephone": "714-898-9648",
7978            "sameAs": [
7979                "https://www.facebook.com/WestminsterChamberOfCommerce/",
7980                "https://www.instagram.com/wmchamber/"
7981            ],
7982            "logo": {
7983                "@type": "ImageObject",
7984                "@id": "https://www.westminsterchamber.org/#logo",
7985                "url": "/images/Logo/change-logo.png"
7986            },
7987            "image": {
7988                "@type": "ImageObject",
7989                "@id": "https://www.westminsterchamber.org/#image",
7990                "url": "/images/Logo/change-logo.png"
7991            },
7992            "keywords": [
7993                "Westminster California Business",
7994                "Westminster California Businesses",
7995                "Westminster Chamber of Commerce",
7996                "Westminster Chamber of Commerce",
7997                "Westminster California Businesses",
7998                "Westminster California Business"
7999            ]
8000        }
8001    ]
8002}</script>
8002
8003
8004<script>
8005// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete
8006(function() {
8007    if (!document.querySelector('link[href*="bootstrap-icons"]')) {
8008        var link = document.createElement('link');
8009        link.rel = 'stylesheet';
8010        link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1';
8011        document.head.appendChild(link);
8012    }
8013})();
8014</script>
8014
8015<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input {
8016			border-radius: 0 8px 8px 0 !important;
8017	}
8018.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead {
8019	display: inline-block;
8020	height: 25px;
8021	position: relative;
8022	width: 100%;
8023}
8024.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) {
8025	width: inherit;
8026}
8027.normal-autosuggest .twitter-typeahead .clear_content.medium{
8028	bottom: 0px;
8029}
8030.sm-autosuggest .twitter-typeahead .clear_content.small{
8031	bottom: -4px;
8032}
8033.md-autosuggest.input-group .twitter-typeahead .clear_content.medium  {
8034    bottom: -2px;
8035}
8036.md-autosuggest .twitter-typeahead {
8037	height: 32px;
8038}
8039.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead {
8040	height: 38px;
8041	vertical-align: top;
8042}
8043.md-autosuggest-input + .clear_content.medium {
8044    bottom: 0px;
8045}
8046.large-autosuggest .twitter-typeahead {
8047	height: 40px;
8048}
8049.normal-autosuggest .twitter-typeahead{
8050	height: 38px;
8051}
8052.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint {
8053	background: #fff !important;
8054	border: 1px solid #ccc!important;
8055	border-radius: 0 8px 8px 0;
8056	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
8057	color: transparent;
8058	left: 0;
8059	padding: 4px 11px;
8060	position: absolute;
8061	top: 0;
8062	width: 100%;
8063	font-size:12px;
8064}
8065.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px}
8066.md-autosuggest .twitter-typeahead .tt-hint {
8067	height: 100%;
8068	background: #ffffff none repeat scroll 0 0 !important;
8069	border: 1px solid #cccccc !important;
8070	border-radius: 0 8px 8px 0;
8071	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important;
8072	color: rgba(0, 0, 0, 0);
8073	left: 0;
8074	padding: 6px 11px;
8075	position: absolute;
8076	top: 0;
8077	width: 100%;
8078}
8079.large-autosuggest {background: #fff !important;border-radius:10px;}
8080.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;}
8081	.input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint {
8082		border-radius: 0 10px 10px 0!important;
8083	}
8084	.large-autosuggest .twitter-typeahead .tt-hint {
8085	background: #fff !important;
8086	border: 1px solid #ccc!important;
8087	border-radius: 10px;
8088	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
8089	color: transparent;
8090	left: 0;
8091	position: absolute;
8092	top: 0;
8093	width: 100%;
8094	font-size: 18px;
8095	height: 46px;
8096	line-height: 1.33333;
8097	padding: 10px 15px;
8098}	
8099.tt-dataset .empty-message {
8100	display: none !important;
8101}
8102.twitter-typeahead .tt-query {background-color:#fff!important}
8103.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;}
8104span.tt-dropdown-menu {
8105	border: 1px solid #FCFCFC;
8106	border-radius: 5px;
8107	box-shadow: 0 5px 10px rgba(0,0,0,.2);
8108	width: 100% !important;
8109}
8110.tt-is-under-cursor a.suggest-link {
8111	background: #55ACEE;
8112}
8113
8114.tt-is-under-cursor .media-heading,
8115.tt-is-under-cursor .suggest-origin,
8116.tt-is-under-cursor .location{
8117	color:#fff!important;
8118}
8119.tt-suggestion .media .media-body .suggest-origin {
8120		color: rgba(45, 91, 137,0.9);
8121	padding: 1px 0;
8122	border-radius: 6px;
8123	font-weight: bold;
8124	line-height: 12px;
8125}
8126.tt-suggestion {
8127	background: #fff;
8128	border-bottom: 1px solid #eee;
8129	-webkit-transition: all 0.3s ease-in-out;
8130	-moz-transition: all 0.3s ease-in-out;
8131	-o-transition: all 0.3s ease-in-out;
8132	transition: all 0.3s ease-in-out;
8133}
8134body .tt-suggestions .media.br-bottom img {
8135	max-width: 45px;
8136	height: auto;
8137}
8138body .tt-suggestions .media-body span {
8139	font-size: 10px;
8140}
8141body .tt-suggestions .media-body h4 {
8142	font-size: 12px;
8143	margin: 2px 0px;
8144	text-transform: capitalize;
8145}
8146a.suggest-link {
8147	padding: 5px;
8148	display: block;
8149}
8150a.suggest-link img {
8151	border-radius: 100px;
8152	display: block;
8153	margin: 0 auto;
8154	height: 100%!important;
8155	width: 100%;
8156	object-fit: cover;
8157}
8158.left-suggest-col {
8159	display: inline-block;
8160	vertical-align: middle;
8161	width: 44px;
8162	height: 44px;
8163}
8164.right-suggest-col {
8165	display: inline-block;
8166	padding-left: 1%;
8167	text-align: left;
8168	vertical-align: middle;
8169	width: calc(100% - 1% - 50px);
8170}
8171p.media-heading {
8172	color: #333;
8173	font-size: 12px;
8174	font-weight: 600;
8175	margin-bottom: 0;
8176}
8177p.suggest-origin {
8178	font-size: 10px;
8179	color: #333;
8180	margin:0;
8181}
8182p.location {
8183	color: #333;
8184	font-size: 10px;
8185	margin: 2px 0;
8186}
8187body .tt-is-under-cursor a.suggest-link {
8188	background: #F7F7F7;
8189}
8190body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location {
8191	color: #333!important;
8192}
8193a.suggest-link[data-heading="heading"] {
8194	 pointer-events: none;
8195  	cursor: default;
8196  	text-decoration: none;
8197}
8198body .tt-is-under-cursor a.suggest-link[data-heading="heading"] {
8199	background: rgb(71, 134, 141);
8200}
8201/* --- all the novalue css --- */
8202a.suggest-link .suggest-origin[data-state="novalue"] {
8203	display: none;
8204}
8205a.suggest-link .location[data-state="novalue"] {
8206	display: none;
8207}
8208a.suggest-link img[data-state="novalue"] {
8209	display: none;
8210}
8211a.suggest-link .suggest-origin[data-state="heading"] {
8212	display: none;
8213}
8214a.suggest-link .media-heading[data-heading="heading"] {
8215	color:rgb(255, 255, 255)!important;
8216	font-weight: bold;
8217	padding: 4px;
8218	font-size: 13px;
8219}
8220.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] {
8221	display: none;
8222}
8223.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] {
8224	width: 100%;
8225}
8226a.suggest-link[href="novalue"] {
8227	cursor: default !important;
8228	pointer-events: none;
8229}
8230a.suggest-link[data-heading="heading"] {
8231	background-color: rgb(71, 134, 141);
8232}
8233div.content-shell {
8234	overflow: inherit;
8235}
8236span.tt-dropdown-menu div {
8237	float: none;
8238}
8239.tt-menu {
8240	border-radius: 0 0 6px 6px;
8241	box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
8242	overflow: hidden;
8243	width: 100%;
8244	z-index: 150 !important;
8245}
8246.tt-menu .tt-dataset {
8247    overflow-y: auto;
8248    max-height: 200px;
8249} </style>        
8249<script type="text/javascript">
8250            
8251            if (typeof decodeHtml != "function") {
8252                function decodeHtml(html) {
8253                    var txt = document.createElement("textarea");
8254                    txt.innerHTML = html;
8255                    return txt.value;
8256                }
8257            }
8258                        function initializeTypeheadMember_search() {
8259                var member_searchEngine = new Bloodhound({
8260                    initialize: false,
8261                    datumTokenizer: function (d) {
8262                        return Bloodhound.tokenizers.whitespace(value);
8263                    },
8264                    queryTokenizer: Bloodhound.tokenizers.whitespace,
8265                    remote: {
8266                        url: `/api/suggest/json/get/1,users_data,Listings,1,1,1,1,1,3|88,list_professions,Main Categories,1,0,1,1,1,3|89,list_services,Sub Categories,1,0,1,1,1,3?tID=35&q=%QUERY`,
8267                        wildcard: '%QUERY',
8268                        filter: function (response) {
8269
8270                            if (response != null) {
8271                                //var response = response.slice(1);
8272                                $.each(
8273                                    response, function (key, value) {
8274                                        response[key]['value'] = decodeHtml(value['value']);
8275                                        response[key]['comes_f'] = decodeHtml(value['comes_f']);
8276                                        response[key]['location'] = decodeHtml(value['location']);
8277
8278                                        if (response[key]['value'].indexOf('-/-') >= 0) {
8279                                            var splitResult = response[key]['value'].split('-/-');
8280                                            response[key]['value'] = splitResult[0];
8281                                        }
8282                                    }
8283                                );
8284
8285                            } else {
8286                                response = {error: "null"};
8287                            }
8288
8289                            return response;
8290                        }
8291                    }
8292                });
8293                var member_searchDataSrc = member_searchEngine.initialize();
8294
8295                member_searchDataSrc
8296                    .done(function () { /*console.log('Autosuggestions engine initialized.'); */
8297                    })
8298                    .fail(function () { /*console.log('err, something went wrong while initializing autosuggestions engine:(');*/
8299                    })
8300
8301                $('.member_search').typeahead({
8302                        minLength:  2,
8303                        highlight: true,
8304                        hint: false                    },
8305                    {
8306                        display: 'value',
8307                        source: member_searchEngine.ttAdapter(),
8308                        limit: 10,
8309                        templates: {
8310                            empty: [
8311                                '<div class="empty-message">',
8312                                'Result not found',
8313                                '</div>'
8314                            ].join(" "),
8315                            notFound: [
8316                                '<div class="notFound-message">',
8317                                'Result not found',
8318                                '</div>'
8319                            ].join(" "),
8320                            suggestion: function (data) {
8321
8322                                if (data == "null") {
8323                                    strTemplate = '<div class="empty-message">Result not found</div>';
8324
8325                                } else {
8326                                    strTemplate = '<a class="suggest-link" href="' + data.link + '" data-state="' + data.link + '" data-heading="' + data.comes_f + '"> <div class="left-suggest-col" data-photo="' + data.photo + '"> <img src="' + data.photo + '" data-state="' + data.photo + '"> </div> <div class="right-suggest-col" data-photo="' + data.photo + '"> <p class="media-heading" data-state="' + data.value + '" data-heading="' + data.comes_f + '">' + data.value + '</p> <p class="suggest-origin" data-state="' + data.comes_f + '">' + data.comes_f + '</p> <p class="location" data-state="' + data.location + '">' + data.location + '</p> </div> </a> ';
8327
8328                                    if ((data.link == undefined) || (data.link == "") || (data.link == "novalue")) {
8329                                        strTemplate = strTemplate.replace(/href=".*?"/, "href='#'");
8330                                    }
8331
8332                                    if ((data.photo == undefined) || (data.photo == "") || (data.photo == "novalue")) {
8333                                        strTemplate = strTemplate.replace(/<img src=".*?>/, "");
8334                                    }
8335                                }
8336
8337                                return strTemplate;
8338                            }
8339                        },
8340                    }).on('typeahead:selected', function (obj, datum) {
8341                    /*
8342                    console.log(obj);
8343                    console.log(datum);
8344                    */
8345                });
8346
8347                $('.member_search').each(function () {
8348                    var inputWidth = $(this).outerWidth();
8349                    $(this).siblings('.tt-dropdown-menu').css('width', inputWidth + 'px');
8350                });
8351            }
8352        </script>
8352
8353            
8353<script>
8354        let typeheadElement = '.member_search';
8355        let TypeheadNameListFunction = 'initializeTypeheadMember_search';
8356        let typeheadFormElement = undefined;
8357        window.addEventListener('load', () => {
8358            if(typeheadElement.length > 1) {
8359                typeheadFormElement = document.querySelectorAll(typeheadElement);
8360            }
8361            if (typeof typeheadFormElement != "undefined") {
8362                for (let i = 0; i < typeheadFormElement.length; i++) {
8363                    let closestForm = typeheadFormElement[i].closest('form');
8364                    if (typeof closestForm != "undefined" && closestForm != null) {
8365                        closestForm.addEventListener('focus', typeheadFormClick, false);
8366                    }
8367                    typeheadFormElement[i].addEventListener('focus', typeheadFormClick, false);
8368                }
8369            }
8370        });
8371        function initializeTypehead(){
8372            let splitFunctionNames= TypeheadNameListFunction.split(',');
8373            for ( let funcName of splitFunctionNames)
8374                if (typeof funcName != 'function') {
8375                    window[funcName](); // execute the function
8376
8377                }
8378        }
8379        function typeheadFormClick(event) {
8380
8381            let head = document.getElementsByTagName('head')[0];
8382            let script = document.createElement('script');
8383            let elementClicked = event.target;
8384            script.type = 'text/javascript';
8385            script.src = "https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.bundle.min.js";
8386            script.onload = function () {
8387                initializeTypehead();
8388                elementClicked.focus();
8389            };
8390            head.appendChild(script);
8391            if (typeof typeheadFormElement != "undefined") {
8392                for (let i = 0; i < typeheadFormElement.length; i++) {
8393                    let closestForm = typeheadFormElement[i].closest('form');
8394                    if (typeof closestForm != "undefined" && closestForm != null) {
8395                        closestForm.removeEventListener('focus', typeheadFormClick, false);
8396                    }
8397                    typeheadFormElement[i].removeEventListener('focus', typeheadFormClick, false)
8398                }
8399            }
8400        }
8401
8402
8403    </script>
8403
8404
8405    
8405<script>
8406    window.addEventListener('load', () => {
8407        let embedlyClass = document.querySelector('.fr-embedly');
8408        if (typeof embedlyClass != "undefined" && embedlyClass != null) {
8409            let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js";
8410            let head = document.getElementsByTagName("head")[0];
8411            let script = document.createElement('script');
8412            script.type = 'text/javascript';
8413            script.src = embedlyURI;
8414            script.async = true;
8415            script.onload = function() {
8416                setTimeout(function() {
8417                    if (typeof embedly !== 'undefined' && embedly.card) {
8418                        document.querySelectorAll('.embedly-card').forEach(function(card) {
8419                            embedly.card(card);
8420                        });
8421                    }
8422                }, 500);
8423            };
8424            head.appendChild(script);
8425        }
8426    });
8427</script>
8427<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
8427<script>
8428                            $(function () {
8429                                $(".lazyloader").Lazy({
8430                                    afterLoad: function(element) {
8431                                        $(".gridView.activeView").click();
8432                                    }
8433                                });
8434                                
8435                            });
8436                            $("button[class*='slick'],button[id*='slick']").click(function () {
8437                              $(this).parents(".row").find(".lazyloader").lazy({
8438                                    bind: "event",
8439                                    delay: 0
8440                                });
8441                            });
8442                            $("[class*='slick'],[id*='slick']").on("swipe",function(){
8443                              $(this).parents(".row").find(".lazyloader").lazy({
8444                                    bind: "event",
8445                                    delay: 0
8446                                });
8447                            });
8448                        </script>
8448<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
8448
8449            </body>
8450        </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.