PageSourceSearch

https://www.storycrews.com/blog

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