PageSourceSearch

https://www.limousineworldwide.directory/digital-products

html limousineworldwide.directory collected 2026-10-05 10:53:40 UTC 414,406 bytes, 7,424 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://ik.imagekit.io" crossorigin>
11    <link rel="preconnect" href="https://fonts.googleapis.com">
12	<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13	<link rel="apple-touch-icon" href="https://ik.imagekit.io/limousine/limousineworldwide/images/2_3.png">
14    <link rel="icon" type="image/png" href="https://ik.imagekit.io/limousine/limousineworldwide/images/2_3.png">
15	
16    <!-- Site Meta Data -->
17    <title>Limousine Companies | Limo Owner Operators and Limousine Drivers Limousine Worldwide - Digital Products - Find Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLine Limousine Worldwide - Digital Products</title>
18    <meta name="description" content="Find the best Limousine Companies | Limo Owner Operators And Limousine Drivers Limousine Worldwide - Digital Products now. Discover the latest Limousine Worldwide - Digital Products posted by Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines near you.">
19    <meta name="keywords" content="Limousine Worldwide - Digital Product,Limousine Worldwide - Digital Products,Limousine Companies | Limo Owner Operators and Limousine Drivers,Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLine,Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines,Limousine Companies | Limo Owner Operators and Limousine Drivers Limousine Worldwide - Digital Products">
20    <meta name="robots" content="index, follow">
21
22    <!-- Canonical URL -->
23	<link rel="canonical" href="https://www.limousineworldwide.directory/digital-products">	
24	<link rel="alternate" type="application/rss+xml" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide RSS Feed" href="https://www.limousineworldwide.directory/rss" />
25	
26    	<!-- Social Media Meta Data -->
27    <meta property="og:type" content="website">
28    <meta property="og:url" content="https://www.limousineworldwide.directory/digital-products">
29    <meta property="og:site_name" content="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide">
30    <meta property="og:title" content="Latest Limousine Companies | Limo Owner Operators and Limousine Drivers Limousine Worldwide - Digital Products Posted by Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines.">
31    <meta property="og:description" content="Find the best Limousine Companies | Limo Owner Operators And Limousine Drivers Limousine Worldwide - Digital Products now. The most recent Limousine Worldwide - Digital Products posted by Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines near you.">
32    <meta property="og:image" content="https://ik.imagekit.io/limousine/limousineworldwide/images/21.png">
33	
33<script>
34	if (window.innerWidth <= 768 && !document.referrer) {
35	document.write('<div id="mobile-loading-message" aria-hidden="true" onwheel="event.preventDefault()" ontouchmove="event.preventDefault()" style="display:block;position:sticky;top:0;width:100vw;height:100vh;background:rgb(255, 233, 211);color:rgb(0, 0, 0);z-index:9999;font-family:Arial,sans-serif;font-size:16px;line-height:24px;padding-top:50px;text-align:center;touch-action:none;overscroll-behavior:none;pointer-events:auto;"><div style="width:24px;height:24px;border:3px solid rgba(99,111,124,0.2);border-top-color:rgb(99,111,124);border-radius:50%;animation:spin 1.5s linear infinite;margin:10px auto"></div><span class="text" role="status">Loading<br>Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide</span></div><style>@keyframes spin{to{transform:rotate(360deg);}}</style>');
36	setTimeout(function(){var p=document.getElementById('mobile-loading-message');if(p){p.style.display='none';p.classList.add('hidden-xs','hide');}},7500);}
37	</script>
37
38
39	<!-- Preload -->
40	<link rel="preload" as="style" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" fetchpriority="high" crossorigin>
41	<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900&display=swap" fetchpriority="high">
42		
43    <!-- Non-Critical Stylesheet - Render Before Critical Styles -->
44	<link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css?v=3.3.0" crossorigin>
45	<noscript>
46		<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css" crossorigin>
47	</noscript>
48		
49	<!-- Critical Stylesheet -->
50	<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" crossorigin>
51    	
52    <!-- Google Fonts Stylesheet -->    
53    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900&display=swap">
54    <noscript>
55        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900&display=swap">
56    </noscript>
57	
58    <!-- FontAwesome Stylesheet -->
59    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
60    <noscript>
61        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
62    </noscript>
63	
64    <!-- Bootstrap Icons Stylesheet -->
65    <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
66    <noscript>
67        <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
68    </noscript>
69	
70    <!-- Critical JavaScript -->
71    
71<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/jquery.min.js"></script>
71
72	
72<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/bootstrap.min.js"></script>
72
73	
73<script>
74		/* jQuery.event.special.touchstart = {
75			setup: function( _, ns, handle ) {
76				this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
77			}
78		}; */
79		jQuery.event.special.touchmove = {
80			setup: function( _, ns, handle ) {
81				this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
82			}
83		};
84		jQuery.event.special.wheel = {
85			setup: function( _, ns, handle ){
86				this.addEventListener("wheel", handle, { passive: true });
87			}
88		};
89		jQuery.event.special.mousewheel = {
90			setup: function( _, ns, handle ){
91				this.addEventListener("mousewheel", handle, { passive: true });
92			}
93		};
94	</script>
94
95
96	<!-- Breadcrumb Position -->
97	<style>html.bc-relocate .container:has(> .breadcrumb):has(~ .hero_section_container) .breadcrumb{display:none!important;}html.bc-relocate .hero_section_container + .clearfix + .container::before{content:"";display:block;min-height:24px;}.hero_section_container + .clearfix + .container > .breadcrumb:first-child{position:relative;top:-24px;}</style>
98	
98<script>document.documentElement.classList.add('bc-relocate');document.addEventListener('DOMContentLoaded',function(){var bc=document.querySelector('ol.breadcrumb'),hero=document.querySelector('.hero_section_container');if(bc&&hero){var t=hero.nextElementSibling;while(t&&!t.classList.contains('container'))t=t.nextElementSibling;if(t)t.insertBefore(bc,t.firstChild);}document.documentElement.classList.remove('bc-relocate');});</script>
98
99		
100	
101    <!-- Prefetch -->
102    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script">
103    <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0" as="script">
104
105    <!-- Custom Site-wide HEAD Content --><!-- Google Tag Manager -->
106<script>
vendor: 331 bytes, lines 106-110
106(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
107new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
108j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
109'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
110})(window,document,'script','dataLayer','
110GTM-NF49SR63
vendor: 3 bytes, line 110
110');
110</script>
110
111<!-- End Google Tag Manager -->
112<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 65 bytes, lines 112-113
112
113<script async src="https://www.googletagmanager.com/gtag/js?id=
113G-C3DHHJ212J
vendor: 13 bytes, line 113
113"></script>
114<script>
115  
vendor: 138 bytes, lines 115-119
115window.dataLayer = window.dataLayer || [];
116  function gtag(){dataLayer.push(arguments);}
117  gtag('js', new Date());
118
119  gtag('config', '
119G-C3DHHJ212J
vendor: 5 bytes, line 119
119');
120</script>
120
121<!-- Google Tag Manager -->
122<script>
vendor: 331 bytes, lines 122-126
122(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
123new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
124j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
125'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
126})(window,document,'script','dataLayer','
126GTM-T4CQXFK
vendor: 3 bytes, line 126
126');
126</script>
126
127<!-- End Google Tag Manager -->
128<!-- Google Tag Manager -->
129<script>
vendor: 331 bytes, lines 129-133
129(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
130new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
131j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
132'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
133})(window,document,'script','dataLayer','
133GTM-PBWPPWN
vendor: 3 bytes, line 133
133');
133</script>
133
134<!-- End Google Tag Manager -->
135<!-- Global site tag (gtag.js) - Google Ads: 712831318 -->
vendor: 65 bytes, lines 135-136
135
136<script async src="https://www.googletagmanager.com/gtag/js?id=
136AW-712831318
vendor: 13 bytes, line 136
136"></script>
137<script>
138  
vendor: 138 bytes, lines 138-142
138window.dataLayer = window.dataLayer || [];
139  function gtag(){dataLayer.push(arguments);}
140  gtag('js', new Date());
141
142  gtag('config', '
142AW-712831318
vendor: 5 bytes, line 142
142');
143</script>
143
144<meta name="msvalidate.01" content="CEB9A157899DAC041D54549E21C85D09" />
145
146
147<meta name="facebook-domain-verification" content="bdruwyycjgqxve9edljps2h7slqsv3" />
148<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 148-149
148
149<script async src="https://www.googletagmanager.com/gtag/js?id=
149G-ESRLEWLN0E
vendor: 13 bytes, line 149
149"></script>
150<script>
151  
vendor: 138 bytes, lines 151-155
151window.dataLayer = window.dataLayer || [];
152  function gtag(){dataLayer.push(arguments);}
153  gtag('js', new Date());
154
155  gtag('config', '
155G-ESRLEWLN0E
vendor: 5 bytes, line 155
155');
156</script>
156
157<style id="lwd-cities-menu-fix">
158/* LWD-CITIES-NAV-CSS */
159/* LimousineWorldwide - Cities menu: compact multi-column city flyouts */
160/* Scope: Cities (#link615) -> continent -> country -> city list */
161a#link615 + ul {
162  z-index: 10050;
163}
164a#link615 + ul > li > ul {
165  z-index: 10051;
166  min-width: 160px;
167}
168/* City panels (United States, Canada, etc.) - multi-column + scroll */
169a#link615 + ul > li > ul > li > ul {
170  column-count: 3 !important;
171  column-gap: 0;
172  column-fill: auto;
173  min-width: 420px;
174  max-width: 640px;
175  max-height: min(70vh, 520px);
176  overflow-x: hidden;
177  overflow-y: auto;
178  overscroll-behavior: contain;
179  padding: 6px 4px;
180  white-space: normal;
181  box-sizing: border-box;
182  z-index: 10052;
183}
184a#link615 + ul > li > ul > li > ul > li {
185  break-inside: avoid;
186  -webkit-column-break-inside: avoid;
187  page-break-inside: avoid;
188  display: list-item;
189  width: 100%;
190  white-space: nowrap;
191}
192a#link615 + ul > li > ul > li > ul > li > a,
193a#link615 + ul > li > ul > li > ul > li > span {
194  white-space: nowrap;
195  font-size: 13px !important;
196  padding: 3px 10px !important;
197  line-height: 1.25;
198}
199@media (max-width: 991px) {
200  a#link615 + ul > li > ul > li > ul {
201    column-count: 1 !important;
202    min-width: 200px;
203    max-width: 280px;
204    max-height: min(55vh, 360px);
205  }
206}
207</style>
208<meta name="google-site-verification" content="NtJVIT87PUXi8vP78zWWCTihbZHwnnZUZySJyp28OEk" />
209<script async type="application/javascript"
210        src="https://news.google.com/swg/js/v1/swg-basic.js"></script>
vendor: 1 bytes, line 210
210
211<script>
212  (self.SWG_BASIC = self.SWG_BASIC || []).push( basicSubscriptions => {
213    basicSubscriptions.init({
214      type: "NewsArticle",
215      isPartOfType: ["Product"],
216      isPartOfProductId: "CAowu4HCDA:openaccess",
217      clientOptions: { theme: "light", lang: "en" },
218    });
219  });
220</script>
220    
221</head>
222
223<body class="general-session"><!--
224IMPORTANT: 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.
225
226INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section.
227-->
228<style>
229    .upload-form-field::before {
230        content: "choose files";
231        display: inline-block;
232        border: 1px solid #999;
233        border-radius: 3px;
234        padding: 5px 8px;
235    }
236    #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 {
237        white-space: nowrap !important;
238    }
239    /* Main Website Design */
240    body,.modal-header,.modal-content,.modal-body,.modal-footer {
241        background: rgb(255, 233, 211);
242        color: rgb(0, 0, 0);
243        font-family: 'Open Sans';
244        font-size: 16px;
245    }
246    .select2-container .select2-choice {
247        font-family: 'Open Sans'!important;
248    }
249        html{
250        background: rgb(222, 210, 183)    }
251        .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow {
252        color: #000 !important;
253    }    
254    a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) {
255        color: rgb(116, 2, 30);
256    }
257    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 {
258        color: rgb(116, 2, 30);
259    }
260    .breadcrumb a{
261            color: rgba(49, 49, 49,0.9);
262    }
263    .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active {
264        color: rgb(49, 49, 49);
265    }
266    .help-inline, .help-block {
267            color: rgba(0, 0, 0,0.5);
268    }
269    .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
270        font-family: 'Open Sans';
271    }
272        @media (min-width:1200px) {
273        .container {
274            width:1420px;
275			max-width: 95vw;
276        }
277		.fr-view .froala-table td .froala-table {   
278			max-width: 1420px;
279			max-width: min(95vw, 1420px);
280		}
281	}
282        /* Header Design */
283    .header, .mobile_website_logo img {
284        background: rgb(251, 250, 245);
285    }
286    .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span {
287        color: rgb(51, 51, 51);
288            font-size: 16px;
289        }
290    .header .mini-nav li a:not(.btn):hover {
291            color: rgba(51, 51, 51,0.95);
292    }
293    .header .btn_get_listed {
294		background-color: rgb(116, 2, 30);
295        border: 1px solid rgb(116, 2, 30);
296        color: rgb(255, 255, 255)!important;
297    }
298    .header .btn_get_listed:hover, .header .btn_get_listed:focus {
299		        background-color: rgba(116, 2, 30,0.97);        
300    }
301    .header .btn_search {
302            background-color: rgba(116, 2, 30,0.97);
303        border: 1px solid rgb(116, 2, 30);
304        color: rgb(255, 255, 255);
305    }
306    .header .btn_search:hover, .header .btn_search:focus {
307        background-color: rgb(116, 2, 30);
308        color: rgb(255, 255, 255);
309    }
310
311    /* Logo Design */
312    .logo,.logo:hover,.logo:focus {
313        color: rgb(116, 2, 30);
314        font-family: 'Open Sans';
315    }
316    .logo .slogan {
317        color: rgba(116, 2, 30, 0.71);
318    }
319    .logo .fa {
320        color: rgb(116, 2, 30);
321        }
322
323    /* Main Menu Design */
324    .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
325        background: rgb(189, 164, 109);
326        position: sticky;
327        z-index: 1;
328            top: 0px;
329        }
330	/* Google Translate When Main Menu Sticky Top */
331	    @media only screen and (max-width: 1100px) {
332        .member-profile-tabs > ul, .member-profile-tabs .tabs-container {
333                    top: 50px;
334                }
335    }
336    .header ul.nav.navbar-nav li ul {
337        background-color: rgb(130, 52, 36);
338    }
339    .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span {
340        color: rgb(252, 251, 251);
341                font-weight: 400;
342            }
343    .header .navbar-default, .pagination > .active > a {
344        background-color: rgb(137, 62, 62);
345    }
346    .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{
347        border-left-color: rgb(252, 251, 251);
348        background: rgb(252, 251, 251);
349        color: rgb(130, 52, 36);
350    }
351    .navbar-default .navbar-toggle .icon-bar {
352        background-color: rgb(253, 252, 252);
353    }
354	.user_sidebar, .main_menu, .compact-mobile-search {
355        color: rgb(253, 252, 252);
356    }
357    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span  {
358        color: rgb(253, 252, 252);
359                font-weight: 400;
360            }
361    .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 {
362        color: rgb(17, 17, 17);
363    }
364    .navbar-default .navbar-nav > li {
365        font-family: 'Open Sans';
366    }
367    
368    
369
370    /* Footer Design */
371    .footer {
372        background-color: rgb(222, 210, 183);
373        display: block;
374    }
375    .footer, .footer_menu a,.footer_terms a,.footer_menu .content {
376        color: rgb(73, 73, 73);
377    }
378    .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus {
379        color: rgb(51, 51, 51);
380    }
381    .footer_menu .head {
382        color: rgb(51, 51, 51);
383    }
384    .btn_footer_get_listed {
385		background-color: rgb(116, 2, 30);
386        border: 1px solid rgb(116, 2, 30);
387        color: rgb(255, 255, 255)!important;
388    }
389    .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{
390				background-color: rgba(116, 2, 30,0.95);        
391    }
392    
393    /* Homepage Design */
394        .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 {
395        font-family: 'Open Sans';
396    }
397    .homepage_settings h1, .homepage_map h1 {
398        color: rgb(248, 246, 244);
399            font-weight: 600;
400            text-align: center;
401    }
402    .homepage_settings h2, .homepage_map h2 {
403        color: rgb(248, 246, 244);
404            font-weight: 600;
405            text-align: center;
406
407    }
408    .homepage_settings .search_box label {
409        color: rgb(255, 255, 255);
410    }
411    .btn_home_search, .search_box input[type=submit] {
412		background-color: rgb(235, 29, 29);
413        border: 1px solid rgb(235, 29, 29);
414        color: rgb(255, 255, 255);
415    }
416    .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus {
417		        background-color: rgba(235, 29, 29,0.97);        
418        color: rgb(255, 255, 255);
419    }
420	.homepage_settings .search_box {
421				padding: 10px;
422		
423				background-color: rgba( 103, 103, 86, 0.7);
424	}
425
426    /* Homepage Steps Module */
427    .homepage_steps {
428            background: none;
429        box-shadow: none;
430        padding: 0;
431                color: rgb(249, 169, 169);
432            }
433    .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{
434        color: rgb(249, 169, 169)!important;
435    }
436    .homepage_steps .fa {
437        color: rgb(235, 29, 29);
438            background-color: rgba(235, 29, 29,0.075);
439    }
440	.homepage_steps h2 + p {
441        opacity: .6;
442	}
443
444    /* Blog Posts Slider Settings */
445    #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 {
446            color: rgb(51, 51, 51);
447        }
448    #myCarousel .list-group-item {
449            background-color: rgba(222, 210, 183,0.9);
450        border-color: rgba(222, 210, 183,0.80);
451    }
452    #myCarousel .carousel-caption {
453            background-color: rgba(222, 210, 183,0.8);
454    }
455    #myCarousel .list-group, #myCarousel .carousel-inner {
456            background-color: rgb(222, 210, 183)        }
457    #myCarousel .list-group .active, #myCarousel .list-group-item:hover {
458            background-color: rgb(4, 135, 250)        }
459    #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{
460            color: rgb(17, 17, 17);
461        }
462
463    /* Additional Settings */
464    .well blockquote {
465        background: rgb(255, 233, 211) none repeat scroll 0 0;
466        border-color: rgb(189, 164, 109);
467        color: rgb(0, 0, 0);
468        padding: 10px 20px;
469    }
470    .account-form-box form table tr td table {
471        background-color: transparent!important;
472        border: none!important;
473    }
474
475    .account-form-box form table tr td table td {
476        background-color: transparent!important;
477        color: rgb(0, 0, 0)!important;
478        border: none!important;
479    }
480    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{
481        color: rgb(0, 0, 0)!important;
482    }
483	.table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td {
484				border-color: rgba(85, 85, 85,0.1);
485		background-color: rgb(246, 242, 213);
486		color: rgb(85, 85, 85);
487		font-weight:600;
488		border-left: none;
489		border-bottom-width: 1px;
490	}
491	.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer {
492				border-color: rgba(85, 85, 85,0.1);
493	}
494	.table > tfoot > tr > td:not(:last-child) {
495		border-right: 1px solid rgba(85, 85, 85,0.1);
496	}
497	table.dataTable.no-footer, table.dataTable {
498		border: 1px solid rgb(189, 164, 109)!important;
499	}
500	.table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div {
501		border-top:1px solid rgb(189, 164, 109);
502	}
503	.table-view .table-view-group:last-child {
504		border-bottom:1px solid rgb(189, 164, 109);
505	}
506	table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped {
507		background-color: rgb(206, 206, 203)!important;
508	}
509	.table-striped.dataTable, .table-striped, .fr-view .table-striped {
510				border: 1px solid rgba(85, 85, 85,0.15);
511		border-collapse: separate;
512		overflow: hidden;
513	}
514	table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 
515    	overflow: visible;
516	}
517	.table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) {
518				background-color: rgba(255, 233, 211,0.5)!important;
519	}
520	.nav-tabs, hr, .account-menu-title, .modal-header {
521		border-color: rgb(189, 164, 109);
522	}
523    .sidemenu_panel .list-group-item{
524        background-color: transparent!important;
525        color: rgb(51, 51, 51)!important;
526    }
527    .img-thumbnail {
528        background-color: rgb(206, 206, 203)!important;
529        border: 1px solid rgb(189, 164, 109);
530    }
531    .member_admin_sidemenu p, .member_admin_sidemenu h3 {
532        color: rgb(51, 51, 51)!important;
533    }
534    .close {
535        color: rgb(0, 0, 0);
536        opacity: 1;
537    }
538    .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 {
539        font-size:34px;
540        display: block;
541    }
542    .member_results_header h2, .feature_results_header h2 {
543        font-size:28px;
544        display: block;
545    }
546    .homepage_settings {
547        padding-top: 150px;
548        padding-bottom: 300px;
549    }
550    @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 
551    @media only screen and (max-width: 768px) {
552                #website_logo {display: none;}
553                    .member-profile-header .favorite {float:none}
554    }
555    
556
557    @media only screen and (max-width: 1100px) {
558        }
559    .views > i.fa.activeView, .views > i.fa:hover {
560        background-color: rgb(0, 0, 0);
561        color: rgb(255, 233, 211);
562    }
563	.views > i.fa {
564		        background-color: rgba(0, 0, 0,0.1);
565		color: rgb(0, 0, 0);
566	}
567    .ui-rangeSlider-label {
568        background-color: rgb(137, 62, 62)!important;
569        color: rgb(253, 252, 252)!important;
570    }
571    .pricing_menu li .title {
572        background: rgb(51, 51, 51);
573        color: rgb(211, 208, 208);
574    }
575    p.account-tip{
576        color: rgb(0, 0, 0);
577    }
578    .circled_number {
579        background: rgb(51, 51, 51);
580        color: rgb(255, 255, 255);
581    }
582    .pic {
583            background-color: rgba(51, 51, 51,0.8);
584        color: rgb(255, 255, 255);
585        background-repeat: no-repeat;
586        background-position: center;
587        }
588    .pic .pic-caption {
589            background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(51, 51, 51,0.85) 50%);
590        color: rgb(255, 255, 255);
591    }
592    .slick-prev-fa i, .slick-next-fa i{
593        color: rgb(51, 51, 51);
594    }
595    .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 {
596        background-color: rgb(206, 206, 203);
597        border-color: rgb(189, 164, 109);
598        color: rgb(51, 51, 51);
599    }
600    .nav-pills > li.active a, .nav-pills > li > a:hover {
601        background-color: rgb(117, 6, 32)!important;
602        border-color: rgb(117, 6, 32)!important;
603        color: rgb(255, 255, 255)!important;
604    }
605    .sidemenu_panel .panel-heading {
606        color: rgb(51, 51, 51)!important;
607        background-color: rgb(206, 206, 203)!important;
608    }
609    .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a {
610            background: rgba(206, 206, 203,0.5);
611        color:  #404040;
612    }
613    .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 {
614            background: rgba(206, 206, 203,1);
615        color:  rgb(0, 0, 0);
616    }
617    .author-snapshot .well:not(.well.bg-default) {
618        background-color: rgb(206, 206, 203)!important;
619        border-color: rgb(189, 164, 109)!important;
620        color: rgb(51, 51, 51)!important;
621    }
622    .nav-tabs>li>a, .nav-pills>li>a {
623        font-weight: 600;
624    }
625        .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{
626            color: rgba(51, 51, 51,0.5);
627    }
628    #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a {
629        color: rgb(51, 51, 51) !important;
630    }
631    .popover {
632        background-color: rgb(206, 206, 203);
633        border-color: rgb(206, 206, 203);
634        padding:0;
635        text-align:left;
636    }
637    .popover-title, .popover-content {
638        background-color: rgb(206, 206, 203);
639        color: rgb(51, 51, 51);
640        border-color: rgb(206, 206, 203);
641        text-align:left;
642    }
643    .popover-content {
644    		background-color: rgba(51, 51, 51,.05);
645		border-radius: 4px;
646		transform: translate(-1px, -1px);
647		width: calc(100% + 2px);
648		margin-bottom: -2px;
649    }
650    .popover.left > .arrow::after {
651        border-left-color: rgb(206, 206, 203)!important;
652    }
653    .popover.right > .arrow::after {
654        border-right-color: rgb(206, 206, 203)!important;
655    }
656    .popover.bottom > .arrow::after {
657        border-bottom-color: rgb(206, 206, 203)!important;
658    }
659    .popover.top > .arrow::after {
660        border-top-color: rgb(206, 206, 203)!important;
661    }
662    .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{
663        background-color: rgb(255, 233, 211);
664        color: rgb(0, 0, 0);
665    }
666    .module h1, .module h2, .module h3, .module h4, .module h5 {
667        color: rgb(117, 6, 32);
668    }
669    .module p:not(.fr-box.fr-basic .fr-element p) {
670        color: rgb(51, 51, 51);
671    }
672    .pagination>.active>a {
673            border-color: rgba(253, 252, 252,0.2);
674    }
675    .pagination>.active>a {
676        color: rgb(253, 252, 252);
677    }
678    .pagination > .active > a:hover, .pagination > .active > a:focus {
679            border-color: rgba(253, 252, 252,0.2);
680        background-color: rgb(137, 62, 62);
681        color: rgb(253, 252, 252);
682    }
683    .pagination > li > a {
684        color: rgb(137, 62, 62);
685            border-color: rgba(137, 62, 62,0.2);
686        background-color: rgb(253, 252, 252);
687    }
688    .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover {
689        background-color: rgb(137, 62, 62);
690        border-color: rgb(137, 62, 62);
691        color: rgb(253, 252, 252);
692    }
693
694    .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{
695        background-color: rgb(180, 151, 83)!important;
696        color: rgb(255, 255, 255)!important;
697    }
698    .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover {
699        background-color: rgb(139, 8, 243)!important;
700        border-color: rgb(139, 8, 243);
701        color: rgb(255, 255, 255);
702    }
703    .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a {
704        background-color: rgb(117, 6, 32)!important;
705        color: rgb(255, 255, 255)!important;
706    }
707    .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover {
708        background-color: rgb(42, 177, 123)!important;
709        border-color: rgb(42, 177, 123);
710        color: rgb(255, 255, 255);
711    }
712
713        .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow {
714        border-color: transparent transparent transparent rgb(117, 6, 32)!important;
715    }
716    .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{
717        border-color: rgb(117, 6, 32) rgb(117, 6, 32) rgb(117, 6, 32) transparent!important;
718    }
719    
720        li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge {
721        border-color: rgb(42, 177, 123) rgb(42, 177, 123) rgb(42, 177, 123) transparent!important;
722    }
723    
724        li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge {
725        border-color: rgb(180, 151, 83) rgb(180, 151, 83) rgb(180, 151, 83) transparent!important;
726    }
727    
728    .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover {
729        background-color: rgb(42, 177, 123)!important;
730        color: rgb(255, 255, 255)!important;
731    }
732
733    .member_wizard2 li {
734        color: rgb(255, 255, 255);
735        border-right: 10px solid rgb(255, 233, 211);
736    }
737
738        li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow {
739        border-color: transparent transparent transparent rgb(42, 177, 123)!important;
740    }
741    
742        li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{
743        border-color: transparent transparent transparent rgb(180, 151, 83)!important;
744    }
745    
746    /* Default Colors */
747    .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 {
748    	background-color: rgb(117, 6, 32);
749        border-color: rgb(117, 6, 32);
750        color: rgb(255, 255, 255);
751    }
752    .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 {        
753		        background-color: rgba(117, 6, 32,0.95);
754        border-color: rgb(117, 6, 32);
755        color: rgb(255, 255, 255);
756    }
757	.panel-primary {
758        background-color: #eadade;
759		border-color: rgb(117, 6, 32);
760	}
761    .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .
761well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary {
762        background-color: rgb(117, 6, 32);
763        color: rgb(255, 255, 255);
764    }
765    .bg-primary .badge {
766        background-color:rgb(255, 255, 255);
767        color: rgb(117, 6, 32);
768    }
769    .btn-primary.btn-outline {
770        background: transparent;
771        color: rgb(117, 6, 32);
772        transition: all 250ms ease-in-out 0ms;
773    }
774    .btn-primary.btn-outline:hover {
775            background: rgba(117, 6, 32,0.1);
776		color: rgb(117, 6, 32);
777    }
778    .alert-primary {
779            background-color:rgba(117, 6, 32,0.7);
780        border-color:rgba(117, 6, 32,0.2);
781            color: rgba(255, 255, 255,0.9);
782    }
783	.alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle {
784		background-color: #e3cdd2;
785		border-color: #e3cdd2;
786		color: rgb(117, 6, 32);
787		color: color-mix(in srgb, rgb(117, 6, 32) 50%, rgb(0, 0, 0) 50%);
788	}
789    .btn.dropdown-toggle.btn-primary *, .btn-primary a {
790        color: rgb(255, 255, 255);
791    }
792    .text-primary{
793        color: rgb(117, 6, 32);
794    }
795    .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 {
796		background-color: rgb(172, 138, 62);
797        border-color: rgb(172, 138, 62);
798        color: rgb(51, 51, 51);
799    }
800    .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 {
801		        background-color: rgba(172, 138, 62,0.95);
802        border-color: rgb(172, 138, 62);
803        color: rgb(51, 51, 51);
804    }
805	.panel-info {
806        background-color: #f3ede2;
807		border-color: rgb(172, 138, 62);
808	}
809    .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 {
810        background-color: rgb(172, 138, 62);
811        color: rgb(51, 51, 51);
812    }
813    .bg-info .badge {
814        background-color:rgb(51, 51, 51);
815        color: rgb(172, 138, 62);
816    }
817    .btn-info.btn-outline {
818        background: transparent;
819        color: rgb(172, 138, 62);
820        transition: all 250ms ease-in-out 0ms;
821    }
822    .btn-info.btn-outline:hover {
823            background: rgba(172, 138, 62,0.1);
824		color: rgb(172, 138, 62);
825    }
826    .alert-info {
827            background-color:rgba(172, 138, 62,0.7);
828        border-color:rgba(172, 138, 62,0.2);
829            color: rgba(51, 51, 51,0.9);
830    }
831	.alert-info-subtle, .label-info-subtle, .badge-info-subtle {
832		background-color: #eee8d8;
833		border-color: #eee8d8;
834		color: rgb(172, 138, 62);
835		color: color-mix(in srgb, rgb(172, 138, 62) 50%, rgb(0, 0, 0) 50%);
836	}
837    .btn.dropdown-toggle.btn-info *, .btn-info a {
838        color: rgb(51, 51, 51);
839    }
840    .text-info{
841        color: rgb(172, 138, 62);
842    }
843    .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 {
844		background-color: rgb(42, 177, 123);
845        border-color: rgb(42, 177, 123);
846        color: rgb(255, 255, 255);
847    }
848    .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 {        
849		        background-color: rgba(42, 177, 123,0.95);
850        border-color: rgb(42, 177, 123);
851        color: rgb(255, 255, 255);
852    }
853    .panel-success {
854        background-color: #dff3eb;
855        border-color: rgb(42, 177, 123);
856    }
857    .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 {
858        background-color: rgb(42, 177, 123);
859        color: rgb(255, 255, 255);
860    }
861    .bg-success .badge {
862        background-color: rgb(255, 255, 255);
863        color: rgb(42, 177, 123);
864    }
865    .btn-success.btn-outline {
866        background: transparent;
867        color: rgb(42, 177, 123);
868        transition: all 250ms ease-in-out 0ms;
869    }
870    .btn-success.btn-outline:hover {
871            background: rgba(42, 177, 123,0.1);
872		color: rgb(42, 177, 123);
873    }
874    .alert-success {
875            background-color:rgba(42, 177, 123,0.7);
876        border-color:rgba(42, 177, 123,0.2);
877            color: rgba(255, 255, 255,0.9);
878    }
879	.alert-success-subtle, .label-success-subtle, .badge-success-subtle {
880		background-color: #d4efe5;
881		border-color: #d4efe5;
882		color: rgb(42, 177, 123);
883		color: color-mix(in srgb, rgb(42, 177, 123) 50%, rgb(0, 0, 0) 50%);
884	}
885    .btn.dropdown-toggle.btn-success *, .btn-success a {
886        color: rgb(255, 255, 255);
887    }
888    .text-success{
889        color: rgb(42, 177, 123);
890    }
891    .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 {
892		background-color: rgb(139, 8, 243);
893        border-color: rgb(139, 8, 243);
894        color: rgb(255, 255, 255);
895    }
896    .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 {        
897		        background-color: rgba(139, 8, 243,0.95);
898        border-color: rgb(139, 8, 243);
899        color: rgb(255, 255, 255);
900    }
901	.panel-warning {
902        background-color: #eedafd;
903		border-color: rgb(139, 8, 243);
904	}
905    .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 {
906        background-color: rgb(139, 8, 243);
907        color: rgb(255, 255, 255);
908    }
909    .bg-warning .badge {
910        background-color: rgb(255, 255, 255);
911        color: rgb(139, 8, 243);
912    }
913    .btn-warning.btn-outline {
914        background: transparent;
915        color: rgb(139, 8, 243);
916        transition: all 250ms ease-in-out 0ms;
917    }
918    .btn-warning.btn-outline:hover {
919            background: rgba(139, 8, 243,0.1);
920		color: rgb(139, 8, 243);
921    }
922    .alert-warning {
923            background-color:rgba(139, 8, 243,0.7);
924        border-color:rgba(139, 8, 243,0.2);
925            color: rgba(255, 255, 255,0.9);
926    }
927	.alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle {
928		background-color: #e8cefd;
929		border-color: #e8cefd;
930		color: rgb(139, 8, 243);
931		color: color-mix(in srgb, rgb(139, 8, 243) 50%, rgb(0, 0, 0) 50%);
932	}
933    .btn.dropdown-toggle.btn-warning *, .btn-warning a {
934        color: rgb(255, 255, 255);
935    }
936    .text-warning {
937        color: rgb(139, 8, 243);
938    }
939    .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 {
940		background-color: rgb(248, 116, 146);
941        border-color: rgb(248, 116, 146);
942        color: rgb(255, 255, 255);
943    }
944    .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 {        
945		        background-color: rgba(248, 116, 146,0.95);
946        border-color: rgb(248, 116, 146);
947        color: rgb(255, 255, 255);
948    }
949    .has-error .form-control {
950        border-color: rgb(248, 116, 146);
951    }
952    .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 {
953        background: rgb(248, 116, 146);
954        color: rgb(255, 255, 255) !important;
955    }
956    .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 {
957        color: rgb(248, 116, 146);
958    }
959	.panel-danger {
960        background-color: #feeaef;
961		border-color: rgb(248, 116, 146);
962	}
963    .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 {
964        background-color: rgb(248, 116, 146);
965        color: rgb(255, 255, 255);
966    }
967    .bg-danger .badge {
968        background-color: rgb(255, 255, 255);
969        color: rgb(248, 116, 146);
970    }
971    .btn-danger.btn-outline {
972        background: transparent;
973        color: rgb(248, 116, 146);
974        transition: all 250ms ease-in-out 0ms;
975    }
976    .btn-danger.btn-outline:hover {
977            background: rgba(248, 116, 146,0.1);
978		color: rgb(248, 116, 146);
979    }
980    .alert-danger {
981            background-color:rgba(248, 116, 146,0.7);
982        border-color:rgba(248, 116, 146,0.2);
983            color: rgba(255, 255, 255,0.9);
984    }
985	.alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle {
986		background-color: #fee3e9;
987		border-color: #fee3e9;
988		color: rgb(248, 116, 146);
989		color: color-mix(in srgb, rgb(248, 116, 146) 50%, rgb(0, 0, 0) 50%);
990	}	
991    .btn.dropdown-toggle.btn-danger *, .btn-danger a {
992        color: rgb(255, 255, 255);
993    }
994    .text-danger{
995        color: rgb(248, 116, 146);
996    }
997    .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
997s, 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 {
998		background-color: rgb(246, 242, 213);
999        border-color: rgb(246, 242, 213);
1000        color: rgb(85, 85, 85);
1001    }
1002    .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 {        
1003		        background-color: rgba(246, 242, 213,0.95);
1004        border-color: rgb(246, 242, 213);
1005        color: rgb(85, 85, 85);
1006    }
1007    .sidemenu_panel .panel-default .panel_heading {
1008        background-color: rgb(246, 242, 213)!important;
1009        border-color: rgb(246, 242, 213)!important;
1010        color: rgb(85, 85, 85)!important;
1011    }
1012	.panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading {
1013				
1014		box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset;
1015		background-color: rgb(246, 242, 213);
1016	}
1017    .panel-default, .member_accounts .panel-default {
1018			
1019        background-color: rgba(246, 242, 213,0.15);
1020		border-color: #fefefb;
1021		border-color: color-mix(in srgb,rgb(246, 242, 213) 100%,rgba(246, 242, 213) 10%);
1022	}
1023	.member_admin_sidemenu .panel-default {
1024		background-color: transparent;
1025	}
1026    .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 {
1027        background-color: rgb(246, 242, 213);
1028        color: rgb(85, 85, 85);
1029    }
1030    .bg-default .badge {
1031        background-color: rgb(85, 85, 85);
1032        color: rgb(246, 242, 213);
1033    }
1034    .btn-default.btn-outline {
1035        background: transparent;
1036        color: rgb(246, 242, 213);
1037        transition: all 250ms ease-in-out 0ms;
1038    }
1039    .btn-default.btn-outline:hover {
1040            background: rgba(246, 242, 213,0.1);
1041		color: rgb(246, 242, 213);
1042    }
1043	.alert-default {
1044		background-color:rgb(246, 242, 213);
1045		border-color:rgb(246, 242, 213);
1046		color: rgb(85, 85, 85);
1047	}
1048	.alert-default-subtle, .label-default-subtle, .badge-default-subtle {
1049				background-color:rgba(246, 242, 213,0.5);
1050		border-color: rgba(246, 242, 213,0.5);
1051		color: rgb(85, 85, 85);
1052		color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(0, 0, 0) 50%);
1053	}	
1054    .btn.dropdown-toggle.btn-default *, .btn-default a {
1055        color: rgb(85, 85, 85);
1056    }
1057    .text-default{
1058        color: rgb(246, 242, 213);
1059    }
1060    .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 {
1061		background-color: rgb(0, 0, 0);
1062        border: 1px solid rgb(0, 0, 0);
1063        color: rgb(255, 233, 211);
1064    }
1065    .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 {        
1066		        background-color: rgba(0, 0, 0,0.95);
1067        border-color: rgb(0, 0, 0);
1068        color: rgb(255, 233, 211);
1069    }
1070    .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 {
1071        background-color: rgb(0, 0, 0);
1072        color: rgb(255, 233, 211);
1073    }
1074    .bg-secondary .badge {
1075        background-color:rgb(255, 233, 211);
1076        color: rgb(0, 0, 0);
1077    }
1078    .btn-secondary.btn-outline {
1079        background: transparent;
1080        color: rgb(0, 0, 0);
1081        transition: all 250ms ease-in-out 0ms;
1082    }
1083    .btn-secondary.btn-outline:hover {
1084            background: rgba(0, 0, 0,0.1);
1085		color: rgb(0, 0, 0);
1086    }
1087	.panel-secondary {
1088        background-color: #d9d9d9;
1089		border-color: rgb(0, 0, 0);
1090	}
1091	.alert-secondary {
1092		background-color:rgb(0, 0, 0);
1093		border-color:rgb(0, 0, 0);
1094		color: rgb(255, 233, 211);
1095	}
1096	.alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle {
1097				background-color:rgba(0, 0, 0,0.8);
1098		border-color: rgba(0, 0, 0,0.5);
1099		color: rgb(255, 233, 211);
1100	}
1101	.btn-outline {
1102		-webkit-backdrop-filter: blur(5px);
1103		backdrop-filter: blur(5px);
1104	}
1105	.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 {
1106		background-color: rgb(255, 233, 211);
1107		border: 1px solid rgb(255, 233, 211);
1108		color: rgb(0, 0, 0);
1109	}
1110	.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 {        
1111				background-color: rgba(255, 233, 211,0.95);
1112		border: 1px solid rgb(255, 233, 211);
1113		color: rgb(0, 0, 0);
1114	}	
1115	.btn.btn-body.dropdown-toggle * {
1116		color: rgb(0, 0, 0)	
1117	}
1118	.btn-body.dropdown-toggle + ul li, .daterangepicker .ranges {
1119		color: #333;
1120	}
1121    .bg-body {
1122        background: rgb(255, 233, 211);
1123        color: rgb(0, 0, 0);
1124    }
1125    .bg-content-box {
1126        background: rgb(206, 206, 203);
1127        color: rgb(51, 51, 51);
1128    }
1129    .bg-content-box-border {
1130        background: rgb(189, 164, 109);
1131    }
1132    .btn.dropdown-toggle.btn-secondary *, .btn-secondary a {
1133        color: rgb(255, 233, 211);
1134    }
1135    .text-secondary {
1136        color: rgb(0, 0, 0);
1137    }
1138	.text-body {
1139		color: rgb(255, 233, 211);
1140	}
1141    .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section  .alert-secondary {
1142		border-radius: 10px;
1143        background-color: rgba(41, 41, 41,0.2);
1144    }
1145
1146    /* Footer Newsletter Row */
1147    .newsletter_row .alert {
1148        color: rgb(255, 255, 255);
1149    }
1150    .newsletter_row {
1151        background-color: rgb(51, 51, 51);
1152        color: rgb(255, 255, 255);
1153    }
1154    .newsletter_row input[type="submit"],.newsletter_footer_button {
1155            background-color: rgba(116, 2, 30,0.97);
1156        color: rgb(255, 255, 255);
1157        border-color: rgb(116, 2, 30);
1158    }
1159    .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus {
1160        background-color: rgb(116, 2, 30);
1161        color: rgb(255, 255, 255);
1162    }
1163    .newsletter_button_left {
1164            border-right: 1px solid rgba(255, 255, 255,0.2);
1165    }
1166    .newsletter_button_right {
1167        border-left: 1px solid rgba(255, 255, 255,0.2);
1168    }
1169    .newsletter_row small.help-block {
1170        background: rgb(255, 255, 255);
1171        margin-top: -5px;
1172        float: left;
1173        padding: 8px;
1174        border-radius: 1px;
1175        color: rgb(51, 51, 51);
1176        text-transform: capitalize;
1177    }
1178    .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{
1179        color: rgb(255, 255, 255);
1180    }
1181    @media only screen and (max-width: 767px) {
1182        .newsletter_button_right,.newsletter_button_left{
1183            border: none;
1184            margin: 5px 0;
1185        }
1186    }
1187
1188    /* Font Sizes */
1189
1190    .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span {
1191        font-size: 16px;
1192    }
1193    .header .logo {
1194        font-size: 25px;
1195    }
1196    .homepage_title h1, .homepage_settings h1 {
1197		letter-spacing: -1px;
1198        font-size: 70px;
1199					margin-bottom: 20px;
1200				    }
1201    @media only screen and (max-width: 768px) {
1202        .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;}
1203    }	
1204    .homepage_settings h2 {
1205        font-size: 40px;
1206    }
1207
1208    .ui-rangeSlider-bar{
1209        background: rgb(235, 29, 29)!important;
1210    }
1211
1212    
1213    
1214    @media only screen and (max-width: 1024px){
1215        .modal {margin-top: 40px;}
1216    }
1217    @media only screen and (max-width: 768px){
1218        .modal {margin-top: 60px;}
1219    }
1220
1221    /* Calendar Styles */
1222
1223    #cal-slide-content {
1224        color: rgb(85, 85, 85)!important;
1225        background-color: rgb(246, 242, 213)!important;
1226        -webkit-box-shadow: none!important;
1227        box-shadow: none!important;
1228    }
1229    #cal-slide-content a.event-item {
1230        color: rgb(85, 85, 85)!important;
1231        font-weight:bold!important;
1232    }
1233    #cal-slide-content a.event-item small {
1234        display: inline-block;
1235    }
1236    .cal-month-box, .cal-year-box, .cal-week-box {
1237        border: 1px solid rgb(189, 164, 109)!important;
1238    }
1239    .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid {
1240        border-bottom: 1px solid rgb(189, 164, 109)!important;
1241    }
1242    .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] {
1243        border-right: 1px solid rgb(189, 164, 109)!important;
1244    }
1245    .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) {
1246        background-color: rgb(255, 233, 211)!important;
1247    }
1248    .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) {
1249        color: rgb(85, 85, 85)!important;
1250    }
1251    .cal-day-today span[data-cal-date] {
1252        color: rgb(0, 0, 0)!important;
1253    }
1254    .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child {
1255        border: 0!important;
1256    }
1257    .cal-row-head {
1258        background: rgb(206, 206, 203)!important;
1259    }
1260    .day-highlight:hover, .day-highlight {
1261        background-color: rgb(189, 164, 109)!important;
1262    }
1263    .cal-event-list .event.pull-left {
1264        background-color: rgb(0, 0, 0)!important;
1265        opacity: 0.4;
1266        margin-top: 7px!important;
1267    }
1268    .cal-day-today {
1269        background-color: rgb(189, 164, 109)!important;
1270    }
1271    #cal-day-tick {
1272        border: 1px solid rgb(189, 164, 109)!important;
1273        background-color: rgb(189, 164, 109)!important;
1274    }
1275    .cal-day-weekend span[data-cal-date]{
1276        color: rgb(0, 0, 0)!important;
1277    }
1278        .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs {
1279		border-radius: 10px;
1280        background: #151515!important;
1281    }
1282	.img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary  .rsDefault .rsOverflow {
1283		border-radius:0;
1284	}
1285    
1286    #first_container .favorite, #first_container .fa.favorite {
1287        color: rgb(85, 85, 85);
1288        background: rgb(246, 242, 213);
1289        border: 1px solid rgb(246, 242, 213);
1290        white-space:nowrap!important;
1291		height:24px;
1292		padding:0 6px;
1293		border-radius:8px;
1294    }
1295    #first_container .favorite span, #first_container .fa.favorite span {
1296        font-family: 'Open Sans';
1297        white-space:nowrap!important;
1298    }
1299    #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) {
1300        color: rgb(118, 7, 32);
1301    }
1302        #first_container .favorite::after, #first_container .fa.favorite::after {
1303        font-family: 'Open Sans';
1304        margin-left: 3px;
1305    }
1306    #first_container .favorite span, #first_container .fa.favorite span{
1307        padding-left: 4px;
1308        font-family: 'Open Sans';
1309        font-size: 11px;
1310		letter-spacing:.5px;
1311		top:-1px;
1312		position:relative;
1313		font-weight:700;		
1314    }
1315	#first_container .favorite span:empty, #first_container .fa.favorite span:empty {
1316		padding: 0;
1317	}
1318	#first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number {
1319		padding: 1px 0;
1320		border-radius: 100px;
1321		display: inline-block;
1322		font-weight: bold;
1323		min-width: 15px;
1324		font-size: .8em;
1325		vertical-align: bottom;
1326		height: 15px;
1327		line-height: 13px;
1328		margin-left: 3px;
1329		text-align: center;
1330	}
1331    #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number {
1332        background: rgb(118, 7, 32);
1333		color: #fff;
1334    }
1335    
1336    span.checkbox_value::after {
1337        content: ', ';
1338    }
1339
1340    span.checkbox_value:last-child::after {
1341        content: '';
1342    }
1343    
1344    .member_results .grid_element{
1345	position:relative;
1346	overflow:hidden;
1347	display: inline-block;
1348	width:100%;
1349}
1350.member_results .grid_element::before {
1351	position: absolute;
1352	top: 24px;
1353	text-align: center;
1354	width: 200px;
1355	left: -62px;
1356	transform: rotate(-45deg);
1357	-webkit-transform: rotate(-45deg);
1358	z-index: 1;
1359	line-height: 1.2em;
1360	padding: 6px 0;
1361	font-weight: bold;
1362	letter-spacing: 1px;
1363}
1364@media only screen and (max-width: 767px) {
1365	.member_results .grid-container > hr {
1366		border-color: transparent;
1367	}
1368	.member_results .grid_element{
1369		overflow:visible;
1370	}
1371	.member_results .grid_element::before {
1372		top: -19px!important;
1373		transform: rotate(0deg);
1374		-webkit-transform: rotate(0deg);
1375		font-size: 10px !important;
1376		letter-spacing: 0;
1377		width: auto;
1378		padding: 3px 6px;
1379	}
1380}
1381
1382
1383
1384                .member_results.level_1 .grid_element {
1385                    border-style: solid;
1386                    border-radius:0px;border-width:4px;border-color:rgb(244, 127, 0); }			
1387                .member_results.level_1 .grid_element::before {
1388					border-bottom-left-radius:0!important;
1389                    border-radius:0px;color: #fff ;background-color:rgb(244, 127, 0);font-size:14px;content:'Recomended';					
1390                }
1391				.member_results.level_1 .grid_element {
1392					padding:10px;
1393				}				
1394                @media only screen and (max-width: 767px) {
1395                    .member_results.level_1 .grid_element::before {
1396                    left:-4px;}}
1397                    .member_results .grid-container {
1398                        margin-top: 30px;
1399                    }
1400                    .member_results .grid-container > hr {
1401                        border-color: transparent;
1402						background: transparent;
1403                    }
1404                    .member_results.level_1 .grid_element{
1405                        overflow:visible;
1406                    }
1407                    .member_results.level_1 .grid_element::before {
1408                        top: calc(-10px - 14px);
1409                        transform: rotate(0deg);
1410                        -webkit-transform: rotate(0deg);
1411                        letter-spacing: 0;
1412                        width: auto;
1413                        padding: 3px 8px;
1414                        left: calc(-4px + 0.5px);
1415                    }
1416                
1417                .member_results.level_2 .grid_element {
1418                    border-style: solid;
1419                    border-radius:0px;border-width:4px;border-color:rgb(139, 141, 140); }			
1420                .member_results.level_2 .grid_element::before {
1421					border-bottom-left-radius:0!important;
1422                    border-radius:0px;color: #fff ;background-color:rgb(139, 141, 140);font-size:16px;content:'Featured ';					
1423                }
1424				.member_results.level_2 .grid_element {
1425					padding:10px;
1426				}				
1427                @media only screen and (max-width: 767px) {
1428                    .member_results.level_2 .grid_element::before {
1429                    left:-4px;}}
1430                    .member_results .grid-container {
1431                        margin-top: 30px;
1432                    }
1433                    .member_results .grid-container > hr {
1434                        border-color: transparent;
1435						background: transparent;
1436                    }
1437                    .member_results.level_2 .grid_element{
1438                        overflow:visible;
1439                    }
1440                    .member_results.level_2 .grid_element::before {
1441                        top: calc(-10px - 16px);
1442                        transform: rotate(0deg);
1443                        -webkit-transform: rotate(0deg);
1444                        letter-spacing: 0;
1445                        width: auto;
1446                        padding: 3px 8px;
1447                        left: calc(-4px + 0.5px);
1448                    }
1449                
1450                .member_results.level_6 .grid_element {
1451                    border-style: solid;
1452                    border-radius:0px;border-width:4px;border-color:rgb(247, 188, 2); }			
1453                .member_results.level_6 .grid_element::before {
1454					border-bottom-left-radius:0!important;
1455                    border-radius:0px;color: #fff ;background-color:rgb(247, 188, 2);font-size:16px;content:'Featured ';					
1456                }
1457				.member_results.level_6 .grid_element {
1458					padding:10px;
1459				}				
1460                @media only screen and (max-width: 767px) {
1461                    .member_results.level_6 .grid_element::before {
1462                    left:-4px;}}
1463                .member_results.level_12 .grid_element {
1464                    border-style: solid;
1465                    border-radius:0px;border-width:4px;border-color:rgb(253, 169, 0); }			
1466                .member_results.level_12 .grid_element::before {
1467					border-bottom-left-radius:0!important;
1468                    border-radius:0px;color: #fff ;background-color:rgb(253, 169, 0);font-size:14px;content:'Limo Driver';					
1469                }
1470				.member_results.level_12 .grid_element {
1471					padding:10px;
1472				}				
1473                @media only screen and (max-width: 767px) {
1474                    .member_results.level_12 .grid_element::before {
1475                    left:-4px;}}
1476                .member_results.level_29 .grid_element {
1477                    border-style: solid;
1478                    border-radius:0px;border-width:4px;border-color:rgb(250, 161, 248); }			
1479                .member_results.level_29 .grid_element::before {
1480					border-bottom-left-radius:0!important;
1481                    border-radius:0px;color: #fff ;background-color:rgb(250, 161, 248);font-size:14px;content:'Claim';					
1482                }
1483				.member_results.level_29 .grid_element {
1484					padding:10px;
1485				}				
1486                @media only screen and (max-width: 767px) {
1487                    .member_results.level_29 .grid_element::before {
1488                    left:-4px;}}
1489                    .member_results .grid-container {
1490                        margin-top: 30px;
1491                    }
1492                    .member_results .grid-container > hr {
1493                        border-color: transparent;
1494						background: transparent;
1495                    }
1496                    .member_results.level_29 .grid_element{
1497                        overflow:visible;
1498                    }
1499                    .member_results.level_29 .grid_element::before {
1500                        top: calc(-10px - 14px);
1501                        transform: rotate(0deg);
1502                        -webkit-transform: rotate(0deg);
1503                        letter-spacing: 0;
1504                        width: auto;
1505                        padding: 3px 8px;
1506                        left: calc(-4px + 0.5px);
1507                    }
1508                
1509                .member_results.level_30 .grid_element {
1510                    border-style: solid;
1511                    border-radius:0px;border-width:4px;border-color:rgb(99, 20, 4); }			
1512                .member_results.level_30 .grid_element::before {
1513					border-bottom-left-radius:0!important;
1514                    border-radius:0px;color: #fff ;background-color:rgb(99, 20, 4);font-size:12px;content:'Claim Listing';					
1515                }
1516				.member_results.level_30 .grid_element {
1517					padding:10px;
1518				}				
1519                @media only screen and (max-width: 767px) {
1520                    .member_results.level_30 .grid_element::before {
1521                    left:-4px;}}
1522                    .member_results .grid-container {
1523                        margin-top: 30px;
1524                    }
1525                    .member_results .grid-container > hr {
1526                        border-color: transparent;
1527						background: transparent;
1528                    }
1529                    .member_results.level_30 .grid_element{
1530                        overflow:visible;
1531                    }
1532                    .member_results.level_30 .grid_element::before {
1533                        top: calc(-10px - 12px);
1534                        transform: rotate(0deg);
1535                        -webkit-transform: rotate(0deg);
1536                        letter-spacing: 0;
1537                        width: auto;
1538                        padding: 3px 8px;
1539                        left: calc(-4px + 0.5px);
1540                    }
1541                
1542                .member_results.level_32 .grid_element {
1543                    border-style: solid;
1544                    border-radius:0px;border-width:4px;border-color:rgb(244, 127, 0); }			
1545                .member_results.level_32 .grid_element::before {
1546					border-bottom-left-radius:0!important;
1547                    border-radius:0px;color: #fff ;background-color:rgb(244, 127, 0);font-size:14px;content:'Recomended';					
1548                }
1549				.member_results.level_32 .grid_element {
1550					padding:10px;
1551				}				
1552                @media only screen and (max-width: 767px) {
1553                    .member_results.level_32 .grid_element::before {
1554                    left:-4px;}}
1555                    .member_results .grid-container {
1556                        margin-top: 30px;
1557                    }
1558                    .member_results .grid-container > hr {
1559                        border-color: transparent;
1560						background: transparent;
1561                    }
1562                    .member_results.level_32 .grid_element{
1563                        overflow:visible;
1564                    }
1565                    .member_results.level_32 .grid_element::before {
1566                        top: calc(-10px - 14px);
1567                        transform: rotate(0deg);
1568                        -webkit-transform: rotate(0deg);
1569                        letter-spacing: 0;
1570                        width: auto;
1571                        padding: 3px 8px;
1572                        left: calc(-4px + 0.5px);
1573                    }
1574                
1575                    .member_results .grid-container {
1576                        margin-top: 30px;
1577                    }
1578                    .member_results .grid-container > hr {
1579                        border-color: transparent;
1580						background: transparent;
1581                    }
1582                    .member_results.level_33 .grid_element{
1583                        overflow:visible;
1584                    }
1585                    .member_results.level_33 .grid_element::before {
1586                        top: calc(-10px - 14px);
1587                        transform: rotate(0deg);
1588                        -webkit-transform: rotate(0deg);
1589                        letter-spacing: 0;
1590                        width: auto;
1591                        padding: 3px 8px;
1592                        left: calc(-4px + 0.5px);
1593                    }
1594                    .popover .popover-content img,.member_results .info_window img,.member_results .search_result_image, .featured-member-image img, .recent-member-image img, .member-review-image img, .member-profile-header > div:not(.member-badges) img, .review_photo, .contact-image, .member_result > div > div img, .member_sidebar .member_admin_sidemenu .img-thumbnail, .current-photo-container img, .current-logo-container img, .author-snapsh
1594ot .search_result_image, .saved-member {
1595        border-radius: 1000px!important;
1596    }
1597    
1598    
1599
1600    /*  Homepage Sections Background Color Logic */
1601
1602    
1603    .homepage-section-1 {
1604        padding: 40px 0 40px;
1605    }
1606
1607    
1608    .homepage-section-2 {
1609        padding: 40px 0 40px;
1610    }
1611
1612    
1613    .homepage-section-3 {
1614        padding: 40px 0 40px;
1615    }
1616
1617    
1618    .homepage-section-3 {
1619        background: rgb(0,0,0);
1620    }
1621
1622    
1623    .homepage-section-4 {
1624        padding: 40px 0 40px;
1625    }
1626
1627    
1628    .homepage-section-4 {
1629        background: rgb(0,0,0);
1630    }
1631
1632    
1633    .homepage-section-5 {
1634        padding: 40px 0 40px;
1635    }
1636
1637    
1638    .homepage-section-6 {
1639        padding: 40px 0 40px;
1640    }
1641
1642    
1643    .homepage-section-7 {
1644        padding: 40px 0 40px;
1645    }
1646
1647    
1648    .homepage-section-8 {
1649        padding: 40px 0 40px;
1650    }
1651
1652    
1653    .homepage-section-8 {
1654        background: rgb(27, 27, 27);
1655    }
1656
1657    
1658    .homepage-section-9 {
1659        padding: 40px 0 40px;
1660    }
1661
1662    
1663    .homepage-section-10 {
1664        padding: 40px 0 40px;
1665    }
1666
1667    
1668    .homepage-section-10 {
1669        background: rgb(0,0,0);
1670    }
1671
1672    
1673    .homepage-section-11 {
1674        padding: 40px 0 40px;
1675    }
1676
1677    
1678    .homepage-section-11 {
1679        background: rgb(180, 151, 83);
1680    }
1681
1682    
1683    .homepage-section-12 {
1684        padding: 40px 0 40px;
1685    }
1686
1687    
1688    .homepage-section-13 {
1689        padding: 40px 0 40px;
1690    }
1691
1692    
1693    .homepage-section-14 {
1694        padding: 40px 0 40px;
1695    }
1696
1697    
1698    .homepage-section-15 {
1699        padding: 40px 0 40px;
1700    }
1701
1702    
1703    /* Additional Settings */
1704
1705    
1706    /* Streaming Widgets Title Settings */
1707
1708    .streaming-title {
1709        text-align: center;
1710        font-size: 40px;
1711		line-height:1.5em;
1712            font-weight: 600;
1713                font-family: 'Open Sans';
1714            padding-bottom: 0px;
1715    }
1716	
1717	@media only screen and (max-width: 990px) {
1718		.streaming-title {
1719			line-height:1.1em;
1720		}
1721	}
1722
1723        
1724    .homepage-join-module .module h2:first-of-type {
1725        color: rgb(117, 6, 32);
1726    }
1727
1728    .homepage-join-module .module{
1729        background: rgb(246, 242, 213);
1730        border-color: rgb(222, 210, 183);
1731    }
1732
1733    .homepage-about-module .module h2:first-of-type {
1734        color: rgb(117, 6, 32);
1735    }
1736
1737    .homepage-about-module .module{
1738        background: rgb(246, 242, 213);
1739        border-color: rgb(222, 210, 183);
1740
1741	}
1742
1743	.the-post-description > :is(h2, h3, h4, h5):not(:first-child) {
1744		font-weight: 600;
1745		margin-top: 20px;
1746	}
1747	
1748	/* Keep: Ensure ul/ol respect padding and margins */
1749	.the-post-description > :is(ul, ol) {
1750		display: flow-root;
1751	}
1752	.the-post-description li {
1753		margin-bottom: 8px;
1754	}
1755
1756        .btn:not(#refcode_submit):not(.input-group-btn .btn):not(.logo-preview-input):not(.cover-preview-input):not(.member_login):not(.img-circle):not(.submit_reply):not(.submit_comment):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top):not(.btn-facebook), .btn-sm:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), .btn-xs:not(.img-circle):not(.view-more):not(.image-preview-input):not(.no-radius-bottom):not(.no-radius-top), button:not(.social_share_buttons button):not(.social_share_buttons a):not(#refcode_submit):not(.input-group-btn button), .btn-group-lg > .btn, .btn-lg, .btn-lg, .btn-xl, .input-group-sm > .input-group-btn > .btn, .favorite, .tags a, select#sid.input-lg, select#tid.input-lg, select#ttid.input-lg, select.combobox.input-lg, select#bd-chained.input-lg, select#category-chained.input-lg, select.infinite-chained.input-lg, select.subcategory-chained.input-lg, select.search-chained.input-lg, select#country-chained.input-lg, select#state-chained.input-lg, select#country-chained-2.input-lg, select#state-chained-2.input-lg, select#profession_id.input-lg, [name^="bd_phone_country_code"].input-lg, select.input-lg, select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-ch
1756ained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] {
1757            border-radius: 100px!important;
1758        }
1759    
1760        .write_comment_container, .tab-content, .well:not(.well .well):not(.module .well):not(.tab-content .well):not(.well.make-connection):not(.slick-slide .well), .module:not(.module .module):not(.well .module):not(.tab-content .module):not(.search_box .module):not(.posted-by-snippet), .panel, .pic:not(.slick-slide .pic), .member_accounts > .account-form-box {
1761        box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a;
1762    }
1763    
1764    .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 {
1765        border-radius:1000px!important;
1766    }
1767
1768    .img-rounded img, img.fr-dib.img-rounded{
1769        border-radius: 10px!important;
1770    }
1771    
1772    /* Google Translate Module */
1773        .skiptranslate{font-size:0}
1774    .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}
1775    .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important}
1776    .goog-te-gadget .goog-te-combo{margin-bottom:-4px}
1777    .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)}
1778    @media only screen and (max-width: 1100px) {
1779        .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px}
1780        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important}
1781        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px}
1782        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important}
1783        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important}
1784        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px}
1785        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;}
1786    }
1787    @media only screen and (max-width: 767px) {
1788        .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important}
1789    }
1790
1791    
1792    
1793</style>
1794
1795<!--GOOGLE TAG MANAGER CODE-->    <!-- ON-PAGE CSS FUNCTIONS -->
1796        <style type="text/css">
1797        .myphoneHide {
1798    color: black!important;
1799}
1800
1801/* LWD-CITIES-NAV-CSS */
1802/* LimousineWorldwide - Cities menu: compact multi-column city flyouts */
1803/* Scope: Cities (#link615) -> continent -> country -> city list */
1804a#link615 + ul {
1805  z-index: 10050;
1806}
1807a#link615 + ul > li > ul {
1808  z-index: 10051;
1809  min-width: 160px;
1810}
1811/* City panels (United States, Canada, etc.) - multi-column + scroll */
1812a#link615 + ul > li > ul > li > ul {
1813  column-count: 3 !important;
1814  column-gap: 0;
1815  column-fill: auto;
1816  min-width: 420px;
1817  max-width: 640px;
1818  max-height: min(70vh, 520px);
1819  overflow-x: hidden;
1820  overflow-y: auto;
1821  overscroll-behavior: contain;
1822  padding: 6px 4px;
1823  white-space: normal;
1824  box-sizing: border-box;
1825  z-index: 10052;
1826}
1827a#link615 + ul > li > ul > li > ul > li {
1828  break-inside: avoid;
1829  -webkit-column-break-inside: avoid;
1830  page-break-inside: avoid;
1831  display: list-item;
1832  width: 100%;
1833  white-space: nowrap;
1834}
1835a#link615 + ul > li > ul > li > ul > li > a,
1836a#link615 + ul > li > ul > li > ul > li > span {
1837  white-space: nowrap;
1838  font-size: 13px !important;
1839  padding: 3px 10px !important;
1840  line-height: 1.25;
1841}
1842@media (max-width: 991px) {
1843  a#link615 + ul > li > ul > li > ul {
1844    column-count: 1 !important;
1845    min-width: 200px;
1846    max-width: 280px;
1847    max-height: min(55vh, 360px);
1848  }
1849}    </style>
1850    <div class="header">
1851            <div class="container">
1852			<div class="row header-main-row">
1853				<style type='text/css'> .logo-text:has(.logo_title:empty) {
1854	display:none
1855} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container">
1856			<a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.limousineworldwide.directory" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide">
1857			<img width="450" height="90" src="https://ik.imagekit.io/limousine/limousineworldwide/images/new1-LWD-color--logo-480x80.gif" alt="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide">
1858		</a>
1859		<div class="clearfix"></div>
1860</div>
1861									<style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query {
1862	background-color: white !important;
1863}
1864.mini-nav:not(:has(li)) {
1865	display: none!important;
1866}
1867/* Parent Container - Main List */
1868.mini-nav li:has(ul) {
1869	position: relative;
1870	border-radius: 8px 8px 0 0;
1871}
1872.mini-nav > li:has(ul) {
1873	padding-left: 0;
1874	padding-right: 0;
1875	background: rgb(251, 250, 245);
1876}
1877.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span {
1878	padding: 10px 15px;
1879	margin: 0!important;
1880}
1881.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) {
1882	box-shadow: 0 -1px 3px rgba(51, 51, 51,0.25);
1883}
1884/* Parent Links */
1885.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) {
1886	display:inline-block;
1887	border-radius: 8px 8px 0 0;
1888}
1889.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span {
1890	background: rgb(251, 250, 245);
1891	display: inline-block;
1892	position: relative;
1893	z-index: 1000;
1894}
1895/* First Level Dropdowns */
1896.mini-nav li ul {
1897	background: rgb(251, 250, 245);
1898	box-shadow: 0 0px 3px rgba(51, 51, 51,0.25), 0 5px 5px 5px rgba(51, 51, 51,0.05);
1899	text-align: left;
1900	display: none;
1901	border-radius: 0 8px 8px 8px;
1902	list-style: none;
1903	padding: 10px;
1904	position: absolute;
1905	white-space: nowrap;
1906	min-width: 130%;
1907	width: auto;
1908	top: 100%;
1909	left: 0;
1910	z-index: 999;
1911	margin-top: -1px;
1912}
1913.mini-nav li:hover > ul {
1914	display: block;
1915}
1916/* First Level Dropdown Items */
1917.mini-nav li ul li {
1918	position: relative;
1919	display: block;
1920	width: 100%;
1921}
1922.mini-nav li ul li a, .mini-nav li ul li span {
1923	font-size: 14.8px !important;
1924	display: block;
1925	font-weight: 400;
1926	padding: 8px 12px;
1927	border-radius: 8px;
1928	text-decoration: none;
1929	width: 100%;
1930}
1931.mini-nav li ul li a:hover, .mini-nav li ul li span:hover {
1932	box-shadow: 0 0 0 25px rgba(51, 51, 51,0.05) inset;
1933}
1934/* Second Level Dropdowns */
1935.mini-nav li ul li ul {
1936	display: none;
1937	position: absolute;
1938	top: 0;
1939	left: 100%;
1940	margin: 0;
1941	border-radius: 8px;
1942}
1943.mini-nav li ul li:hover > ul {
1944	display: block;
1945}
1946/* Edge Positioning - Last Child Dropdowns */
1947.mini-nav > li:last-child ul {
1948	right: 0;
1949	left: auto;
1950	border-radius: 8px 0 8px 8px;
1951}
1952.mini-nav > li:last-child ul li ul {
1953	right: 100%;
1954	left: auto;
1955}
1956/* Flex Spacing Utility */
1957.mini-nav.mini-nav-flex-spaced {
1958	display: flex;
1959	justify-content: space-between;
1960	align-items: center;
1961	flex-wrap: wrap;
1962	row-gap: 0;
1963}
1964.mini-nav.mini-nav-flex-spaced > li {
1965	flex: none;
1966	padding: 0;
1967	margin: 2px 0;
1968	order: 2;
1969}
1970.mini-nav.mini-nav-flex-spaced > li.header-member-account-links,
1971.mini-nav:has(li ul) > li.header-member-account-links {
1972	order: 1;
1973	margin-left: auto;
1974	width: 100%;
1975	margin-bottom: 10px;
1976}
1977.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li {
1978	line-height: 1em;
1979	min-height: 0;
1980}
1981@media (min-width: 992px) {
1982	.header-main-row {
1983		display: flex;
1984		align-items: center;
1985		flex-wrap: wrap;
1986	}
1987}
1988@media (max-width: 991px) {
1989	.mini-nav.mini-nav-flex-spaced {
1990		justify-content: center;
1991	}
1992	.mini-nav.mini-nav-flex-spaced > li {
1993		margin-left: 5px !important;
1994		margin-right: 5px !important;
1995	}
1996} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad">
1997            <ul class="mini-nav  nobmargin list-inline xs-nopad xs-tmargin ">
1998            <style type='text/css'>  div[id^="goog-"]{display: none !important;}
1999.goog-te-banner {
2000    overflow-x: auto;
2001} </style>    <li class="align-middle" style="min-width:137px;height:30px">
2002        <div id="google_translate_element" style="width:127px;float:right;opacity:0;"></div>
2003        <i id='spin_remove' class="fa fa-circle-o-notch fa-spin "></i>
2004    </li>
2005<li class='bmargin'><span id='link207'  class='bmargin'> (877) 860-3388</span></li><li class='bmargin'><a href='/about/contact' id='link209'  class='hpad bmargin'>Contact Us</a></li><li class='bmargin'><a href='/login' id='link208'  class='rpad bmargin'>Member Login</a></li><li class='bmargin norpad'><a href='/join' id='link210'  class='btn btn_get_listed bold'>Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLine - Get Listed Today <i class="fa fa-chevron-right lmargin align-middle hidden-xs"></i></a></li>        </ul>
2006            <div class="clearfix"></div>
2007                <style type='text/css'> #small-header-banner {
2008	max-width:468px;
2009	height:60px;
2010} </style><!--
2011
2012IMPORTANT: This widget contains real Adsense code as a sample to show how this widget functions.  Please replace the current Adsense code below with your own code in order to generate revenue from this ad space.
2013
2014-->  
2015<style type='text/css'> .bannerContainer970x90 {
2016    height: 90px;
2017    margin: 0 auto;
2018    overflow: hidden;
2019  	width: 970px;
2020}
2021 </style><!-- For more information visit http://getbootstrap.com/javascript/#carousel
2022data-interval // sets The amount of time (milliseconds) to delay between automatically cycling an item. If false, carousel will not automatically cycle. 
2023-->
2024<div id="carousel-example-generic" class="carousel slide bannerContainer970x90 visible-lg" data-ride="carousel" data-interval="3000">
2025      <!-- Wrapper for slides -->
2026      <div class="carousel-inner" role="listbox">
2027          <div class="item active">
2028              <a href="https://www.limousineworldwide.directory"><img src="https://ik.imagekit.io/limousine/limousineworldwide/images/Artists-Worldwide.-directory-(8).jpg" alt="Banner 1"></a>
2029          </div>
2030          <div class="item">
2031              <a href="https://www.hotelsworldwide.directory"><img src="https://ik.imagekit.io/limousine/limousineworldwide/images/hotelsworldwide.directory3.png" alt="Banner 2"></a>
2032          </div>
2033          <div class="item">
2034              <a href="https://www.airlinesworldwide.directory"><img src="https://ik.imagekit.io/limousine/limousineworldwide/images/airlinesWorldwide.com-(1).png" alt="Banner 3"></a>
2035          </div>
2036		  <div class="item">
2037              <a href="https://www.lawyersworldwide.directory"><img src="https://ik.imagekit.io/limousine/limousineworldwide/images/lawyersworldwide..jpg" alt="Banner 4"></a>
2038          </div>
2039          <div class="item">
2040              <a href="https://www.banquetsworldwide.com"><img src="https://ik.imagekit.io/limousine/limousineworldwide/images/BanquetsWorldwide.com-(1).jpg" alt="Banner 5"></a>
2041          </div>
2042      </div>
2043  </div>
2044<div class="clearfix clearfix-lg"></div> 			<div class="clearfix"></div>
2045		
2046            </div>
2047				            </div>
2048        </div>
2049        <style type='text/css'> .mobile-main-menu .hasChildren span a {
2050	padding: 0px;
2051}
2052
2053.user_sidebar > img {
2054	width: 32px;
2055	height: 32px;
2056	position: absolute;
2057	z-index: 10;
2058	border-radius: 100px;
2059	top: -1px;
2060	object-fit: cover;
2061	left: -10px;
2062	background: rgb(246, 242, 213);
2063}
2064#member_sidebar_toggle img+.fa {
2065	display: none;
2066}
2067.main_menu, .user_sidebar, .compact-mobile-search {
2068	padding: 5px 8px;
2069	margin-right:0;
2070	min-height: 33.0333px;
2071	min-width: 38.116px;	
2072}
2073.main_menu i, .user_sidebar i {
2074	font-size: 16px;
2075}
2076.navbar-nav li {
2077	float: none!Important;
2078}
2079.navbar-default{
2080	-webkit-transition: all .6s ease-in-out;
2081	-moz-transition: all .6s ease-in-out;
2082	-o-transition: all .6s ease-in-out;
2083	transition: all .6s ease-in-out;
2084}
2085.transparent_menu {
2086		background-color: rgba(137, 62, 62,0.95)!important;
2087}
2088@media only screen and (max-width: 991px) {
2089	#popover {display: none}
2090}
2091@media only screen and (max-width: 1100px){
2092	.mobile-main-menu{display:block!important}
2093	.navbar-toggle {display: block}
2094	#bs-main_menu .nav {display: none!important}
2095}
2096.mobile-main-menu {
2097	position: fixed;
2098	height: calc(100% - 50px)!important;
2099	width: 250px;
2100	background: rgb(137, 62, 62);
2101	z-index: 99999;
2102	right: -250px;
2103	top: 50px;
2104	display: none;
2105	-webkit-transition: all .6s ease-in-out;
2106	-moz-transition: all .6s ease-in-out;
2107	-o-transition: all .6s ease-in-out;
2108	transition: all .6s ease-in-out;
2109	overflow-y: auto!important;
2110	overflow-x: hidden!important;
2111}
2112.mobile-main-menu ul li i {
2113	color: rgb(253, 252, 252);
2114	cursor: pointer;
2115	float: right;
2116	padding: 13px;
2117}
2118.mobile-main-menu.opened{
2119	right: 0px!important;
2120}
2121.mobile-main-menu ul li a, .mobile-main-menu ul li span {
2122	display: inline-block;
2123	float: left;
2124	-webkit-touch-callout: none;
2125	-webkit-user-select: none;
2126	-khtml-user-select: none;
2127	-moz-user-select: none;
2128	-ms-user-select: none;
2129	user-select: none;
2130	padding: 10px 0px;
2131	width: 80%;
2132	width: calc(100% - 40px);
2133}
2134.mobile-main-menu .sidebar-nav li ul {
2135	height: 0px;
2136	overflow: hidden;
2137	list-style: none;
2138	color: rgb(253, 252, 252);
2139	padding-left: 10px;
2140}
2141.mobile-main-menu .sidebar-nav li.sub_open > ul{
2142	height: 100%;
2143}
2144.mobile-main-menu ul.sidebar-nav {
2145	position: absolute;
2146	width: 250px;
2147	margin: 0;
2148	padding: 0;
2149	list-style: none;
2150	font-size: 14px;
2151}
2152.mobile-main-menu .sidebar-nav > li {
2153	display: block;
2154	line-height: 20px;
2155	padding: 0 15px 0 20px;
2156}
2157.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span {
2158	text-decoration: none;
2159	color: rgb(253, 252, 252);
2160	padding-left:10px;
2161}
2162.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i {
2163	display: none;
2164}
2165
2166 </style><div class="mobile-main-menu">
2167	<ul class="sidebar-nav">
2168		<li class=''><a href='/home' id='link1'  title='Global Limousine Services Directory | LimousineWorldwide.Directory, Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Home</a><ul><li class=''><a href='/about-us' id='link189'  title='About Us | Global Limousine Services Directory | LimousineWorldwide.Directory, '>About Us</a></li><li class=''><a href='/about' id='link235'  title='How It Works | Global Limousine Services Directory | LimousineWorldwide.Directory'>How It Works</a></li><li class=''><a href='/our-services' id='link602'  title='Our Services | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Our Services</a></li><li class=''><a href='/advertise-with-us' id='link236'  title='Advertise with Us | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Advertise with Us </a></li><li class=''><a href='/magazine' id='link588'  title='Get Listed in Limousine Magazine | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Magazine</a></li><li class=''><a href='/best-features' id='link237'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Best Industry Features</a></li><li class=''><a href='/award-ceremony-recognition-limousine-service' id='link612'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Industry Awards</a></li><li class=''><a href='/chauffeur-partners' id='link613'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Drive with us</a></li><li class=''><a href='/marketing' id='link614'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Marketing Services</a></li></ul></li><li class=''><a href='/join' id='link231'  title='Register with Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today</a><ul><li class=''><a href='/join' id='link587'  title='Join Today As a Limousine Company | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Company</a></li><li class=''><a href='/join-p2p' id='link242'  title='Join Today As a Limousine Association | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Association</a></li><li class=''><a href='/join-b2b' id='link243'  title='Join Today As a Limo Vendor Partner | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Vendor Partner</a></li><li class=''><a href='/join-as-driver' id='link241'  title='Join Today As a Limousine Driver | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Driver</a></li><li class=''><a href='/rider' id='link607'  title='Register As A Rider | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Register As A Rider</a></li></ul></li><li class=''><a href='/search_results' id='link230'  title='Search Limousine Member Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Member Directory</a><ul><li class=''><a href='/search_results' id='link589'  title='Limousine Companies Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Companies Directory</a></li><li class=''><a href='/search_results' id='link234'  title='Limousine Vendor Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Vendor Directory</a></li><li class=''><a href='/driver-limousine-licensed' id='link232'  title='Limousine Driver | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Driver</a></li><li class=''><a href='/associations' id='link605'  title='Limousine Associations | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Associations</a></li><li class=''><a href='/locations' id='link244'  title='Limousine Locations | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Locations</a></li><li class=''><a href='/countries' id='link937'  title='Countries'>main_menu</a><ul><li class=''><a href='/countries/americas' id='link938'  title='Americas'>main_menu</a></li><li class=''>
2168<a href='/countries/europe' id='link939'  title='Europe'>main_menu</a></li><li class=''><a href='/countries/asia' id='link940'  title='Asia'>main_menu</a></li><li class=''><a href='/countries/africa' id='link941'  title='Africa'>main_menu</a></li><li class=''><a href='/countries/oceania' id='link942'  title='Oceania'>main_menu</a></li><li class=''><a href='/countries/united-kingdom' id='link943'  title='United Kingdom'>main_menu</a></li><li class=''><a href='/countries/united-arab-emirates' id='link944'  title='United Arab Emirates'>main_menu</a></li><li class=''><a href='/countries/australia' id='link945'  title='Australia'>main_menu</a></li><li class=''><a href='/countries/canada' id='link946'  title='Canada'>main_menu</a></li><li class=''><a href='/countries/united-states' id='link947'  title='United States'>main_menu</a></li></ul></li><li class=''><a href='/categories' id='link245'  title='Limousine Categories | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Categories</a></li></ul></li><li class=''><a href='/locations' id='link615'>Cities</a><ul><li class=''><a href='/united-states' id='link649'>North America</a><ul><li class=''><span id='link654'> United States</span><ul><li class=''><a href='/new-york-city-limo-service' id='link659'>New York City</a></li><li class=''><a href='/los-angeles-limo-service' id='link660'>Los Angeles</a></li><li class=''><a href='/chicago-limo-service' id='link661'>Chicago</a></li><li class=''><a href='/miami-limo-service' id='link662'>Miami</a></li><li class=''><a href='/las-vegas-limo-service' id='link663'>Las Vegas</a></li><li class=''><a href='/san-francisco-limo-service' id='link664'>San Francisco</a></li><li class=''><a href='/atlanta-limo-service' id='link665'>Atlanta</a></li><li class=''><a href='/boston-limo-service' id='link666'>Boston</a></li><li class=''><a href='/washington-dc-limo-service' id='link667'>Washington D.C.</a></li><li class=''><a href='/dallas-limo-service' id='link668'>Dallas</a></li><li class=''><a href='/houston-limo-service' id='link669'>Houston</a></li><li class=''><a href='/seattle-limo-service' id='link670'>Seattle</a></li><li class=''><a href='/denver-limo-service' id='link671'>Denver</a></li><li class=''><a href='/orlando-limo-service' id='link672'>Orlando</a></li><li class=''><a href='/philadelphia-limo-service' id='link673'>Philadelphia</a></li><li class=''><a href='/san-diego-limo-service' id='link674'>San Diego</a></li><li class=''><a href='/phoenix-limo-service' id='link676'>Phoenix</a></li><li class=''><a href='/austin-limo-service' id='link675'>Austin</a></li><li class=''><a href='/nashville-limo-service' id='link677'>Nashville</a></li><li class=''><a href='/alexandria-limo-service' id='link726'>Alexandria</a></li><li class=''><a href='/arlington-va-limo-service' id='link727'>Arlington VA</a></li><li class=''><a href='/baltimore-limo-service' id='link728'>Baltimore</a></li><li class=''><a href='/bellevue-limo-service' id='link729'>Bellevue</a></li><li class=''><a href='/berkeley-limo-service' id='link730'>Berkeley</a></li><li class=''><a href='/beverly-hills-limo-service' id='link731'>Beverly Hills</a></li><li class=''><a href='/boulder-limo-service' id='link732'>Boulder</a></li><li class=''><a href='/bronx-limo-service' id='link733'>Bronx</a></li><li class=''><a href='/brookline-limo-service' id='link734'>Brookline</a></li><li class=''><a href='/brooklyn-limo-service' id='link735'>Brooklyn</a></li><li class=''><a href='/buckhead-limo-service' id='link736'>Buckhead</a></li><li class=''><a href='/cambridge-ma-limo-service' id='link737'>Cambridge MA</a></li><li class=''><a href='/fort-lauderdale-limo-service' id='link738'>Fort Lauderdale</a></li><li class=''><a href='/fort-worth-limo-service' id='link739'>Fort Worth</a></li><li class=''><a href='/henderson-limo-service' id='link740'>Henderson</a></li><li class=''><a href='/hoboken-limo-service' id='link741'>Hoboken</a></li><li class=''><a href='/hollywood-limo-service' id='link742'>Hollywood</a></li><li class=''><a href='/jersey-city-limo-service' id='link743'>Jersey City</a></li><li class=''><a href='/king-of-prussia-limo-service' id='link744'>King of Prussia</a></li><li class=''><a href='/kirkland-limo-service' id='link745'>Kirkland</a></li><li class=''><a href='/long-island-limo-service' id='link747'>Long Island</a></li><li class=''><a href='/manhattan-limo-service' id='link748'>Manhattan</a></li><li class=''><a href='/mountain-view-limo-service' id='link749'>
2168Mountain View</a></li><li class=''><a href='/naperville-limo-service' id='link750'>Naperville</a></li><li class=''><a href='/newark-limo-service' id='link751'>Newark</a></li><li class=''><a href='/oakland-limo-service' id='link752'>Oakland</a></li><li class=''><a href='/palo-alto-limo-service' id='link753'>Palo Alto</a></li><li class=''><a href='/portland-limo-service' id='link754'>Portland</a></li><li class=''><a href='/queens-limo-service' id='link755'>Queens</a></li><li class=''><a href='/redmond-limo-service' id='link756'>Redmond</a></li><li class=''><a href='/reston-limo-service' id='link757'>Reston</a></li><li class=''><a href='/sacramento-limo-service' id='link758'>Sacramento</a></li><li class=''><a href='/san-antonio-limo-service' id='link759'>San Antonio</a></li><li class=''><a href='/san-jose-limo-service' id='link760'>San Jose</a></li><li class=''><a href='/san-mateo-limo-service' id='link761'>San Mateo</a></li><li class=''><a href='/sandy-springs-limo-service' id='link762'>Sandy Springs</a></li><li class=''><a href='/santa-monica-limo-service' id='link763'>Santa Monica</a></li><li class=''><a href='/schaumburg-limo-service' id='link764'>Schaumburg</a></li><li class=''><a href='/scottsdale-limo-service' id='link765'>Scottsdale</a></li><li class=''><a href='/silicon-valley-limo-service' id='link766'>Silicon Valley</a></li><li class=''><a href='/sunnyvale-limo-service' id='link767'>Sunnyvale</a></li><li class=''><a href='/tampa-limo-service' id='link768'>Tampa</a></li><li class=''><a href='/tysons-limo-service' id='link769'>Tysons</a></li><li class=''><a href='/west-palm-beach-limo-service' id='link770'>West Palm Beach</a></li></ul></li><li class=''><span id='link656'> Canada</span><ul><li class=''><a href='/toronto-limo-service' id='link678'>Toronto</a></li><li class=''><a href='/montreal-limo-service' id='link679'>Montreal</a></li><li class=''><a href='/vancouver-limo-service' id='link680'>Vancouver</a></li><li class=''><a href='/ottawa-limo-service' id='link681'>Ottawa</a></li><li class=''><a href='/calgary-limo-service' id='link682'>Calgary</a></li><li class=''><a href='/edmonton-limo-service' id='link683'>Edmonton</a></li><li class=''><a href='/mississauga-limo-service' id='link684'>Mississauga</a></li><li class=''><a href='/winnipeg-limo-service' id='link685'>Winnipeg</a></li><li class=''><a href='/quebec-city-limo-service' id='link686'>Quebec City</a></li><li class=''><a href='/halifax-limo-service' id='link687'>Halifax</a></li><li class=''><a href='/brampton-limo-service' id='link688'>Brampton</a></li><li class=''><a href='/vaughan-limo-service' id='link691'>Vaughan</a></li><li class=''><a href='/markham-limo-service' id='link694'>Markham</a></li><li class=''><a href='/richmond-hill-limo-service' id='link689'>Richmond Hill</a></li><li class=''><a href='/oakville-limo-service' id='link692'>Oakville</a></li><li class=''><a href='/burlington-limo-service' id='link695'>Burlington</a></li><li class=''><a href='/milton-limo-service' id='link690'>Milton</a></li><li class=''><a href='/ajax-limo-service' id='link693'>Ajax</a></li><li class=''><a href='/pickering-limo-service' id='link696'>Pickering</a></li><li class=''><a href='/whitby-limo-service' id='link697'>Whitby</a></li><li class=''><a href='/oshawa-limo-service' id='link698'>Oshawa</a></li><li class=''><a href='/newmarket-limo-service' id='link699'>Newmarket</a></li><li class=''><a href='/aurora-limo-service' id='link700'>Aurora</a></li><li class=''><a href='/caledon-limo-service' id='link704'>Caledon</a></li><li class=''><a href='/halton-hills-limo-service' id='link706'>Halton Hills</a></li><li class=''><a href='/king-city-limo-service' id='link708'>King City</a></li><li class=''><a href='/whitchurch-stouffville-limo-service' id='link701'>Whitchurch-Stouffville</a></li><li class=''><a href='/georgina-limo-service' id='link702'>Georgina</a></li><li class=''><a href='/east-gwillimbury-limo-service' id='link703'>East Gwillimbury</a></li><li class=''><a href='/hamilton-limo-service' id='link705'>Hamilton</a></li><li class=''>
2168<a href='/niagara-falls-limo-service' id='link707'>Niagara Falls</a></li><li class=''><a href='/ancaster-limo-service' id='link709'>Ancaster</a></li><li class=''><a href='/barrie-limo-service' id='link710'>Barrie</a></li><li class=''><a href='/brantford-limo-service' id='link711'>Brantford</a></li><li class=''><a href='/cambridge-limo-service' id='link712'>Cambridge</a></li><li class=''><a href='/courtice-limo-service' id='link713'>Courtice</a></li><li class=''><a href='/guelph-limo-service' id='link714'>Guelph</a></li><li class=''><a href='/kitchener-limo-service' id='link715'>Kitchener</a></li><li class=''><a href='/kingston-limo-service' id='link716'>Kingston</a></li><li class=''><a href='/london-ontario-limo-service' id='link717'>London</a></li><li class=''><a href='/muskoka-limo-service' id='link718'>Muskoka</a></li><li class=''><a href='/port-hope-limo-service' id='link719'>Port Hope</a></li><li class=''><a href='/peterborough-limo-service' id='link720'>Peterborough</a></li><li class=''><a href='/port-perry-limo-service' id='link721'>Port Perry</a></li><li class=''><a href='/st-catharines-limo-service' id='link722'>St. Catharines</a></li><li class=''><a href='/uxbridge-limo-service' id='link723'>Uxbridge</a></li><li class=''><a href='/waterloo-limo-service' id='link724'>Waterloo</a></li><li class=''><a href='/windsor-limo-service' id='link725'>Windsor</a></li></ul></li></ul></li><li class=''><a href='/united-kingdom' id='link650'>Europe</a><ul><li class=''><a href='/amsterdam-limo-service' id='link771'>Amsterdam</a></li><li class=''><a href='/antwerp-limo-service' id='link772'>Antwerp</a></li><li class=''><a href='/barcelona-limo-service' id='link773'>Barcelona</a></li><li class=''><a href='/basel-limo-service' id='link774'>Basel</a></li><li class=''><a href='/berlin-limo-service' id='link775'>Berlin</a></li><li class=''><a href='/birmingham-limo-service' id='link776'>Birmingham</a></li><li class=''><a href='/brussels-limo-service' id='link777'>Brussels</a></li><li class=''><a href='/budapest-limo-service' id='link778'>Budapest</a></li><li class=''><a href='/canary-wharf-limo-service' id='link779'>Canary Wharf</a></li><li class=''><a href='/cannes-limo-service' id='link780'>Cannes</a></li><li class=''><a href='/charles-de-gaulle-limo-service' id='link781'>Charles de Gaulle</a></li><li class=''><a href='/copenhagen-limo-service' id='link782'>Copenhagen</a></li><li class=''><a href='/dublin-limo-service' id='link783'>Dublin</a></li><li class=''><a href='/dusseldorf-limo-service' id='link784'>Dusseldorf</a></li><li class=''><a href='/florence-limo-service' id='link785'>Florence</a></li><li class=''><a href='/frankfurt-limo-service' id='link786'>Frankfurt</a></li><li class=''><a href='/gatwick-limo-service' id='link787'>Gatwick</a></li><li class=''><a href='/geneva-limo-service' id='link788'>Geneva</a></li><li class=''><a href='/gothenburg-limo-service' id='link789'>Gothenburg</a></li><li class=''><a href='/greater-london-limo-service' id='link790'>Greater London</a></li><li class=''><a href='/hamburg-limo-service' id='link791'>Hamburg</a></li><li class=''><a href='/heathrow-limo-service' id='link792'>Heathrow</a></li><li class=''><a href='/helsinki-limo-service' id='link793'>Helsinki</a></li><li class=''><a href='/krakow-limo-service' id='link794'>Krakow</a></li><li class=''><a href='/la-defense-limo-service' id='link795'>La Defense</a></li><li class=''><a href='/lisbon-limo-service' id='link796'>Lisbon</a></li><li class=''><a href='/liverpool-limo-service' id='link797'>Liverpool</a></li><li class=''><a href='/london-limo-service' id='link798'>London</a></li><li class=''><a href='/madrid-limo-service' id='link799'>Madrid</a></li><li class=''><a href='/manchester-limo-service' id='link800'>Manchester</a></li><li class=''><a href='/milan-limo-service' id='link801'>Milan</a></li><li class=''><a href='/monaco-limo-service' id='link802'>Monaco</a></li><li class=''><a href='/munich-limo-service' id='link803'>Munich</a></li><li class=''><a href='/nice-limo-service' id='link804'>Nice</a></li><li class=''><a href='/orly-limo-service' id='link805'>Orly</a></li><li class=''><a href='/oslo-limo-service' id='link806'>Oslo</a></li><li class=''><a href='/paris-limo-service' id='link807'>Paris</a></li><li class=''><a href='/porto-limo-service' id='link808'>Porto</a></li><li class=''><a href='/prague-limo-service' id='link809'>Prague</a></li><li class=''><a href='/rome-limo-service' id='link810'>Rome</a></li><li class=''><a href='/rotterdam-limo-service' id='link811'>Rotterdam</a></li><li class=''><a href='/salzburg-limo-service' id='link812'>Salzburg</a></li><li class=''><a href='/stockholm-limo-service' id='link813'>Stockholm</a></li><li class=''><a href='/the-hague-limo-service' id='link814'>The Hague</a></li><li class=''><a href='/valencia-limo-service' id='link815'>Valencia</a></li><li class=''><a href='/venice-limo-service' id='link816'>Venice</a></li><li class=''><a href='/vienna-limo-service' id='link817'>Vienna</a></li><li class=''><a href='/warsaw-limo-service' id='link818'>Warsaw</a></li><li class=''><a href='/westminster-limo-service' id='link819'>Westminster</a></li><li class=''><a href='/zurich-limo-service' id='link820'>Zurich</a></li></ul></li><li class=''><a href='/dubai' id='link657'>Middle East</a><ul><li class=''><a href='/abu-dhabi-limo-service' id='link821'>Abu Dhabi</a></li><li class=''><a href='/doha-limo-service' id='link829'>Doha</a></li><li class=''><a href='/dubai-limo-service' id='link830'>Dubai</a></li><li class=''><a href='/jeddah-limo-service' id='link837'>Jeddah</a></li><li class=''><a href='/kuwait-city-limo-service' id='link839'>Kuwait City</a></li><li class=''><a href='/manama-limo-service' id='link841'>Manama</a></li><li class=''><a href='/muscat-limo-service' id='link843'>Muscat</a></li><li class=''><a href='/riyadh-limo-service' id='link850'>Riyadh</a></li><li class=''><a href='/sharjah-limo-service' id='link853'>Sharjah</a></li></ul></li><li class=''><a href='/locations' id='link655'>Asia</a><ul><li class=''><a href='/ahmedabad-limo-service' id='link822'>Ahmedabad</a></li><li class=''><a href='/bali-limo-service' id='link823'>Bali</a></li><li class=''><a href='/bangkok-limo-service' id='link824'>Bangkok</a></li><li class=''><a href='/beijing-limo-service' id='link825'>Beijing</a></li><li class=''><a href='/bengaluru-limo-service' id='link826'>Bengaluru</a></li><li class=''><a href='/busan-limo-service' id='link827'>Busan</a></li><li class=''><a href='/chennai-limo-service' id='link828'>Chennai</a></li><li class=''><a href='/guangzhou-limo-service' id='link831'>Guangzhou</a></li><li class=''><a href='/gurgaon-limo-service' id='link832'>Gurgaon</a></li><li class=''><a href='/hong-kong-limo-service' id='link833'>Hong Kong</a></li><li class=''><a href='/hyderabad-limo-service' id='link834'>Hyderabad</a></li><li class=''><a href='/jaipur-limo-service' id='link835'>Jaipur</a></li><li class=''><a href='/jakarta-limo-service' id='link836'>Jakarta</a></li><li class=''><a href='/kuala-lumpur-limo-service' id='link838'>
2168Kuala Lumpur</a></li><li class=''><a href='/kyoto-limo-service' id='link840'>Kyoto</a></li><li class=''><a href='/mumbai-limo-service' id='link842'>Mumbai</a></li><li class=''><a href='/new-delhi-limo-service' id='link844'>New Delhi</a></li><li class=''><a href='/noida-limo-service' id='link845'>Noida</a></li><li class=''><a href='/osaka-limo-service' id='link846'>Osaka</a></li><li class=''><a href='/pattaya-limo-service' id='link847'>Pattaya</a></li><li class=''><a href='/phuket-limo-service' id='link848'>Phuket</a></li><li class=''><a href='/pune-limo-service' id='link849'>Pune</a></li><li class=''><a href='/seoul-limo-service' id='link851'>Seoul</a></li><li class=''><a href='/shanghai-limo-service' id='link852'>Shanghai</a></li><li class=''><a href='/shenzhen-limo-service' id='link854'>Shenzhen</a></li><li class=''><a href='/singapore-limo-service' id='link855'>Singapore</a></li><li class=''><a href='/taipei-limo-service' id='link856'>Taipei</a></li><li class=''><a href='/tokyo-limo-service' id='link857'>Tokyo</a></li><li class=''><a href='/yokohama-limo-service' id='link858'>Yokohama</a></li></ul></li><li class=''><a href='/locations' id='link653'>Latin America</a><ul><li class=''><a href='/aruba-limo-service' id='link859'>Aruba</a></li><li class=''><a href='/asuncion-limo-service' id='link860'>Asunción</a></li><li class=''><a href='/bogota-limo-service' id='link861'>Bogotá</a></li><li class=''><a href='/brasilia-limo-service' id='link862'>Brasília</a></li><li class=''><a href='/buenos-aires-limo-service' id='link863'>Buenos Aires</a></li><li class=''><a href='/cancun-limo-service' id='link864'>Cancun</a></li><li class=''><a href='/cartagena-limo-service' id='link865'>Cartagena</a></li><li class=''><a href='/cusco-limo-service' id='link866'>Cusco</a></li><li class=''><a href='/guadalajara-limo-service' id='link867'>Guadalajara</a></li><li class=''><a href='/guatemala-city-limo-service' id='link868'>Guatemala City</a></li><li class=''><a href='/guayaquil-limo-service' id='link869'>Guayaquil</a></li><li class=''><a href='/lima-limo-service' id='link870'>Lima</a></li><li class=''><a href='/los-cabos-limo-service' id='link871'>Los Cabos</a></li><li class=''><a href='/medellin-limo-service' id='link872'>Medellín</a></li><li class=''><a href='/mexico-city-limo-service' id='link873'>Mexico City</a></li><li class=''><a href='/montego-bay-limo-service' id='link874'>Montego Bay</a></li><li class=''><a href='/monterrey-limo-service' id='link875'>Monterrey</a></li><li class=''><a href='/montevideo-limo-service' id='link876'>Montevideo</a></li><li class=''><a href='/nassau-limo-service' id='link877'>Nassau</a></li><li class=''><a href='/panama-city-limo-service' id='link878'>Panama City</a></li><li class=''><a href='/puerto-vallarta-limo-service' id='link879'>Puerto Vallarta</a></li><li class=''><a href='/punta-cana-limo-service' id='link880'>Punta Cana</a></li><li class=''><a href='/quito-limo-service' id='link881'>Quito</a></li><li class=''><a href='/rio-de-janeiro-limo-service' id='link882'>Rio de Janeiro</a></li><li class=''><a href='/san-jose-costa-rica-limo-service' id='link883'>San José</a></li><li class=''><a href='/san-juan-limo-service' id='link884'>San Juan</a></li><li class=''><a href='/san-salvador-limo-service' id='link885'>San Salvador</a></li><li class=''><a href='/santa-cruz-limo-service' id='link886'>Santa Cruz</a></li><li class=''><a href='/santiago-limo-service' id='link887'>Santiago</a></li><li class=''><a href='/santo-domingo-limo-service' id='link888'>Santo Domingo</a></li><li class=''><a href='/sao-paulo-limo-service' id='link889'>São Paulo</a></li><li class=''><a href='/tijuana-limo-service' id='link890'>Tijuana</a></li></ul></li><li class=''><a href='/locations' id='link658'>Africa</a><ul><li class=''><a href='/abidjan-limo-service' id='link891'>Abidjan</a></li><li class=''><a href='/abuja-limo-service' id='link892'>Abuja</a></li><li class=''><a href='/accra-limo-service' id='link893'>Accra</a></li><li class=''><a href='/addis-ababa-limo-service' id='link894'>Addis Ababa</a></li><li class=''>
2168<a href='/algiers-limo-service' id='link895'>Algiers</a></li><li class=''><a href='/cairo-limo-service' id='link896'>Cairo</a></li><li class=''><a href='/cape-town-limo-service' id='link897'>Cape Town</a></li><li class=''><a href='/casablanca-limo-service' id='link898'>Casablanca</a></li><li class=''><a href='/dar-es-salaam-limo-service' id='link899'>Dar es Salaam</a></li><li class=''><a href='/durban-limo-service' id='link900'>Durban</a></li><li class=''><a href='/gaborone-limo-service' id='link901'>Gaborone</a></li><li class=''><a href='/harare-limo-service' id='link902'>Harare</a></li><li class=''><a href='/johannesburg-limo-service' id='link903'>Johannesburg</a></li><li class=''><a href='/kampala-limo-service' id='link904'>Kampala</a></li><li class=''><a href='/kigali-limo-service' id='link905'>Kigali</a></li><li class=''><a href='/lagos-limo-service' id='link906'>Lagos</a></li><li class=''><a href='/lusaka-limo-service' id='link907'>Lusaka</a></li><li class=''><a href='/mahe-limo-service' id='link908'>Mahé</a></li><li class=''><a href='/maputo-limo-service' id='link909'>Maputo</a></li><li class=''><a href='/marrakech-limo-service' id='link910'>Marrakech</a></li><li class=''><a href='/mombasa-limo-service' id='link911'>Mombasa</a></li><li class=''><a href='/nairobi-limo-service' id='link912'>Nairobi</a></li><li class=''><a href='/port-louis-limo-service' id='link913'>Port Louis</a></li><li class=''><a href='/pretoria-limo-service' id='link914'>Pretoria</a></li><li class=''><a href='/tunis-limo-service' id='link915'>Tunis</a></li><li class=''><a href='/zanzibar-limo-service' id='link916'>Zanzibar</a></li></ul></li><li class=''><a href='/locations' id='link651'>Oceania</a><ul><li class=''><a href='/adelaide-limo-service' id='link917'>Adelaide</a></li><li class=''><a href='/alice-springs-limo-service' id='link918'>Alice Springs</a></li><li class=''><a href='/auckland-limo-service' id='link919'>Auckland</a></li><li class=''><a href='/brisbane-limo-service' id='link920'>Brisbane</a></li><li class=''><a href='/cairns-limo-service' id='link921'>Cairns</a></li><li class=''><a href='/canberra-limo-service' id='link922'>Canberra</a></li><li class=''><a href='/christchurch-limo-service' id='link923'>Christchurch</a></li><li class=''><a href='/darwin-limo-service' id='link924'>Darwin</a></li><li class=''><a href='/gold-coast-limo-service' id='link925'>Gold Coast</a></li><li class=''><a href='/guam-limo-service' id='link926'>Guam</a></li><li class=''><a href='/hobart-limo-service' id='link927'>Hobart</a></li><li class=''><a href='/honolulu-limo-service' id='link928'>Honolulu</a></li><li class=''><a href='/melbourne-limo-service' id='link929'>Melbourne</a></li><li class=''><a href='/nadi-limo-service' id='link930'>Nadi</a></li><li class=''><a href='/perth-limo-service' id='link931'>Perth</a></li><li class=''><a href='/port-moresby-limo-service' id='link932'>Port Moresby</a></li><li class=''><a href='/queenstown-limo-service' id='link933'>Queenstown</a></li><li class=''><a href='/sunshine-coast-limo-service' id='link934'>Sunshine Coast</a></li><li class=''><a href='/sydney-limo-service' id='link935'>Sydney</a></li><li class=''><a href='/wellington-limo-service' id='link936'>Wellington</a></li></ul></li><li class=''><a href='/locations' id='link652'>All Cities</a></li></ul></li><li class=''><a href='/reservation' id='link425'  title='Limo Online Reservation | Global Limousine Services Directory | join LimousineWorldwide.Directory' target='_blank'>Online Reservation</a><ul><li class=''><a href='/packages' id='link595'  title='Pick a Limo Package | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Pick a Package</a></li><li class=''><a href='/services' id='link598'  title='Limo Sevices | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Services</a></li><li class=''><a href='/reservation' id='link430'  title='Make a Limo Reservation | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Reservation</a></li><li class=''><a href='/digital-products' id='link593'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Offers by Partners</a><ul><li class=''><a href='/get-quotes' id='link599'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Quotes by Partners</a></li></ul></li></ul></li><li class=''><a href='/blog' id='link227'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Resources</a><ul><li class=''><a href='/classifieds' id='link238'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Classifieds</a></li><li class=''><a href='/jobs' id='link233'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Jobs</a></li><li class=''><a href='/events' id='link240'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Events</a></li><li class=''><a href='/blog' id='link239'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Blog</a></li><li class=''><a href='/fleet' id='link594'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>
2168Limousine Fleet </a></li><li class=''><a href='/coupons' id='link429'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Offers</a></li><li class=''><a href='/articles' id='link606'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Articles</a></li><li class=''><a href='/canadian_airports' id='link608'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Canadian International Airports</a></li><li class=''><a href='/us_airports' id='link609'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>US International Airports</a></li><li class=''><a href='/global-airports' id='link610'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Global International Airports</a></li><li class=''><a href='/press-release' id='link644'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Press Release</a><ul><li class=''><a href='https://www.einpresswire.com/article/923228197/limousineworldwide-directory-sets-goal-to-become-the-world-s-largest-professional-chauffeur-network' id='link645'>LimousineWorldwide.Directory Sets Goal to Become the World's Largest Professional Chauffeur Network Featured</a></li><li class=''><a href='https://www.einpresswire.com/article/840883113/limousineworldwide-directory-becomes-the-largest-global-platform-for-limousine-companies-and-chauffeurs' id='link646'>LimousineWorldwide.Directory Becomes the Largest Global Platform for Limousine Companies and Chauffeurs Featured</a></li><li class=''><a href='https://www.desmoinesregister.com/press-release/story/91634/limousineworldwide-directory-sets-goal-to-become-the-worlds-largest-professional-chauffeur-network/' id='link647'>LimousineWorldwide.Directory Sets Goal to Become the World’s Largest Professional Chauffeur Network</a></li><li class=''><a href='https://www.openpr.com/news/4132768/onroutz-com-and-bookingworldwide-net-set-to-deliver' id='link648'>Onroutz.com and BookingWorldwide.net Set to Deliver World-Class Travel and Transportation for Toronto International Film Festival 2025</a></li></ul></li></ul></li><li class=''><a href='/bookingworldwide' id='link611'  title='BookingWorldwide.net, luxury limousine services, hotel bookings, flight reservations, resort bookings, car rentals, cruise bookings, private jet charters, chauffeur services, travel management, global travel services, exclusive travel offers, seamless tra'>Book Flights | Hotels | Cruises | Resorts | Packages | Acitvites</a></li>	</ul>
2169</div>
2170<nav class="navbar navbar-default ">
2171	<div class="container container-fluid">
2172
2173		<div class="navbar-header">
2174						<div class="mobile_website_logo">
2175				<a href="https://www.limousineworldwide.directory" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide" class="visible-xs">
2176										<img width="500" height="500" src="https://ik.imagekit.io/limousine/limousineworldwide/images/2_3.png" alt="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide">
2177									</a>
2178			</div>
2179						<button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu">
2180								<i class="fa fa-bars fa-fw"></i> Menu
2181							</button>
2182
2183			
2184			
2185		</div>
2186
2187
2188		<div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu">
2189			<ul class="tablet-menu-ul nav navbar-nav nav-justified">
2190				<li class=''><a href='/home' id='link1'  title='Global Limousine Services Directory | LimousineWorldwide.Directory, Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Home</a><ul><li class=''><a href='/about-us' id='link189'  title='About Us | Global Limousine Services Directory | LimousineWorldwide.Directory, '>About Us</a></li><li class=''><a href='/about' id='link235'  title='How It Works | Global Limousine Services Directory | LimousineWorldwide.Directory'>How It Works</a></li><li class=''><a href='/our-services' id='link602'  title='Our Services | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Our Services</a></li><li class=''><a href='/advertise-with-us' id='link236'  title='Advertise with Us | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Advertise with Us </a></li><li class=''><a href='/magazine' id='link588'  title='Get Listed in Limousine Magazine | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Magazine</a></li><li class=''><a href='/best-features' id='link237'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Best Industry Features</a></li><li class=''><a href='/award-ceremony-recognition-limousine-service' id='link612'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Industry Awards</a></li><li class=''><a href='/chauffeur-partners' id='link613'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Drive with us</a></li><li class=''><a href='/marketing' id='link614'  title='Best Industry Features | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Marketing Services</a></li></ul></li><li class=''><a href='/join' id='link231'  title='Register with Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today</a><ul><li class=''><a href='/join' id='link587'  title='Join Today As a Limousine Company | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Company</a></li><li class=''><a href='/join-p2p' id='link242'  title='Join Today As a Limousine Association | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Association</a></li><li class=''><a href='/join-b2b' id='link243'  title='Join Today As a Limo Vendor Partner | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Vendor Partner</a></li><li class=''><a href='/join-as-driver' id='link241'  title='Join Today As a Limousine Driver | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Join Today As a Limousine Driver</a></li><li class=''><a href='/rider' id='link607'  title='Register As A Rider | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Register As A Rider</a></li></ul></li><li class=''><a href='/search_results' id='link230'  title='Search Limousine Member Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Member Directory</a><ul><li class=''><a href='/search_results' id='link589'  title='Limousine Companies Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Companies Directory</a></li><li class=''><a href='/search_results' id='link234'  title='Limousine Vendor Directory | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Vendor Directory</a></li><li class=''><a href='/driver-limousine-licensed' id='link232'  title='Limousine Driver | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Driver</a></li><li class=''><a href='/associations' id='link605'  title='Limousine Associations | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Associations</a></li><li class=''><a href='/locations' id='link244'  title='Limousine Locations | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Locations</a></li><li class=''><a href='/countries' id='link937'  title='Countries'>main_menu</a><ul><li class=''><a href='/countries/americas' id='link938'  title='Americas'>main_menu</a></li><li class=''>
2190<a href='/countries/europe' id='link939'  title='Europe'>main_menu</a></li><li class=''><a href='/countries/asia' id='link940'  title='Asia'>main_menu</a></li><li class=''><a href='/countries/africa' id='link941'  title='Africa'>main_menu</a></li><li class=''><a href='/countries/oceania' id='link942'  title='Oceania'>main_menu</a></li><li class=''><a href='/countries/united-kingdom' id='link943'  title='United Kingdom'>main_menu</a></li><li class=''><a href='/countries/united-arab-emirates' id='link944'  title='United Arab Emirates'>main_menu</a></li><li class=''><a href='/countries/australia' id='link945'  title='Australia'>main_menu</a></li><li class=''><a href='/countries/canada' id='link946'  title='Canada'>main_menu</a></li><li class=''><a href='/countries/united-states' id='link947'  title='United States'>main_menu</a></li></ul></li><li class=''><a href='/categories' id='link245'  title='Limousine Categories | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Limousine Categories</a></li></ul></li><li class=''><a href='/locations' id='link615'>Cities</a><ul><li class=''><a href='/united-states' id='link649'>North America</a><ul><li class=''><span id='link654'> United States</span><ul><li class=''><a href='/new-york-city-limo-service' id='link659'>New York City</a></li><li class=''><a href='/los-angeles-limo-service' id='link660'>Los Angeles</a></li><li class=''><a href='/chicago-limo-service' id='link661'>Chicago</a></li><li class=''><a href='/miami-limo-service' id='link662'>Miami</a></li><li class=''><a href='/las-vegas-limo-service' id='link663'>Las Vegas</a></li><li class=''><a href='/san-francisco-limo-service' id='link664'>San Francisco</a></li><li class=''><a href='/atlanta-limo-service' id='link665'>Atlanta</a></li><li class=''><a href='/boston-limo-service' id='link666'>Boston</a></li><li class=''><a href='/washington-dc-limo-service' id='link667'>Washington D.C.</a></li><li class=''><a href='/dallas-limo-service' id='link668'>Dallas</a></li><li class=''><a href='/houston-limo-service' id='link669'>Houston</a></li><li class=''><a href='/seattle-limo-service' id='link670'>Seattle</a></li><li class=''><a href='/denver-limo-service' id='link671'>Denver</a></li><li class=''><a href='/orlando-limo-service' id='link672'>Orlando</a></li><li class=''><a href='/philadelphia-limo-service' id='link673'>Philadelphia</a></li><li class=''><a href='/san-diego-limo-service' id='link674'>San Diego</a></li><li class=''><a href='/phoenix-limo-service' id='link676'>Phoenix</a></li><li class=''><a href='/austin-limo-service' id='link675'>Austin</a></li><li class=''><a href='/nashville-limo-service' id='link677'>Nashville</a></li><li class=''><a href='/alexandria-limo-service' id='link726'>Alexandria</a></li><li class=''><a href='/arlington-va-limo-service' id='link727'>Arlington VA</a></li><li class=''><a href='/baltimore-limo-service' id='link728'>Baltimore</a></li><li class=''><a href='/bellevue-limo-service' id='link729'>Bellevue</a></li><li class=''><a href='/berkeley-limo-service' id='link730'>Berkeley</a></li><li class=''><a href='/beverly-hills-limo-service' id='link731'>Beverly Hills</a></li><li class=''><a href='/boulder-limo-service' id='link732'>Boulder</a></li><li class=''><a href='/bronx-limo-service' id='link733'>Bronx</a></li><li class=''><a href='/brookline-limo-service' id='link734'>Brookline</a></li><li class=''><a href='/brooklyn-limo-service' id='link735'>Brooklyn</a></li><li class=''><a href='/buckhead-limo-service' id='link736'>Buckhead</a></li><li class=''><a href='/cambridge-ma-limo-service' id='link737'>Cambridge MA</a></li><li class=''><a href='/fort-lauderdale-limo-service' id='link738'>Fort Lauderdale</a></li><li class=''><a href='/fort-worth-limo-service' id='link739'>Fort Worth</a></li><li class=''><a href='/henderson-limo-service' id='link740'>Henderson</a></li><li class=''><a href='/hoboken-limo-service' id='link741'>Hoboken</a></li><li class=''><a href='/hollywood-limo-service' id='link742'>Hollywood</a></li><li class=''><a href='/jersey-city-limo-service' id='link743'>Jersey City</a></li><li class=''><a href='/king-of-prussia-limo-service' id='link744'>King of Prussia</a></li><li class=''><a href='/kirkland-limo-service' id='link745'>Kirkland</a></li><li class=''><a href='/long-island-limo-service' id='link747'>Long Island</a></li><li class=''><a href='/manhattan-limo-service' id='link748'>Manhattan</a></li><li class=''><a href='/mountain-view-limo-service' id='link749'>
2190Mountain View</a></li><li class=''><a href='/naperville-limo-service' id='link750'>Naperville</a></li><li class=''><a href='/newark-limo-service' id='link751'>Newark</a></li><li class=''><a href='/oakland-limo-service' id='link752'>Oakland</a></li><li class=''><a href='/palo-alto-limo-service' id='link753'>Palo Alto</a></li><li class=''><a href='/portland-limo-service' id='link754'>Portland</a></li><li class=''><a href='/queens-limo-service' id='link755'>Queens</a></li><li class=''><a href='/redmond-limo-service' id='link756'>Redmond</a></li><li class=''><a href='/reston-limo-service' id='link757'>Reston</a></li><li class=''><a href='/sacramento-limo-service' id='link758'>Sacramento</a></li><li class=''><a href='/san-antonio-limo-service' id='link759'>San Antonio</a></li><li class=''><a href='/san-jose-limo-service' id='link760'>San Jose</a></li><li class=''><a href='/san-mateo-limo-service' id='link761'>San Mateo</a></li><li class=''><a href='/sandy-springs-limo-service' id='link762'>Sandy Springs</a></li><li class=''><a href='/santa-monica-limo-service' id='link763'>Santa Monica</a></li><li class=''><a href='/schaumburg-limo-service' id='link764'>Schaumburg</a></li><li class=''><a href='/scottsdale-limo-service' id='link765'>Scottsdale</a></li><li class=''><a href='/silicon-valley-limo-service' id='link766'>Silicon Valley</a></li><li class=''><a href='/sunnyvale-limo-service' id='link767'>Sunnyvale</a></li><li class=''><a href='/tampa-limo-service' id='link768'>Tampa</a></li><li class=''><a href='/tysons-limo-service' id='link769'>Tysons</a></li><li class=''><a href='/west-palm-beach-limo-service' id='link770'>West Palm Beach</a></li></ul></li><li class=''><span id='link656'> Canada</span><ul><li class=''><a href='/toronto-limo-service' id='link678'>Toronto</a></li><li class=''><a href='/montreal-limo-service' id='link679'>Montreal</a></li><li class=''><a href='/vancouver-limo-service' id='link680'>Vancouver</a></li><li class=''><a href='/ottawa-limo-service' id='link681'>Ottawa</a></li><li class=''><a href='/calgary-limo-service' id='link682'>Calgary</a></li><li class=''><a href='/edmonton-limo-service' id='link683'>Edmonton</a></li><li class=''><a href='/mississauga-limo-service' id='link684'>Mississauga</a></li><li class=''><a href='/winnipeg-limo-service' id='link685'>Winnipeg</a></li><li class=''><a href='/quebec-city-limo-service' id='link686'>Quebec City</a></li><li class=''><a href='/halifax-limo-service' id='link687'>Halifax</a></li><li class=''><a href='/brampton-limo-service' id='link688'>Brampton</a></li><li class=''><a href='/vaughan-limo-service' id='link691'>Vaughan</a></li><li class=''><a href='/markham-limo-service' id='link694'>Markham</a></li><li class=''><a href='/richmond-hill-limo-service' id='link689'>Richmond Hill</a></li><li class=''><a href='/oakville-limo-service' id='link692'>Oakville</a></li><li class=''><a href='/burlington-limo-service' id='link695'>Burlington</a></li><li class=''><a href='/milton-limo-service' id='link690'>Milton</a></li><li class=''><a href='/ajax-limo-service' id='link693'>Ajax</a></li><li class=''><a href='/pickering-limo-service' id='link696'>Pickering</a></li><li class=''><a href='/whitby-limo-service' id='link697'>Whitby</a></li><li class=''><a href='/oshawa-limo-service' id='link698'>Oshawa</a></li><li class=''><a href='/newmarket-limo-service' id='link699'>Newmarket</a></li><li class=''><a href='/aurora-limo-service' id='link700'>Aurora</a></li><li class=''><a href='/caledon-limo-service' id='link704'>Caledon</a></li><li class=''><a href='/halton-hills-limo-service' id='link706'>Halton Hills</a></li><li class=''><a href='/king-city-limo-service' id='link708'>King City</a></li><li class=''><a href='/whitchurch-stouffville-limo-service' id='link701'>Whitchurch-Stouffville</a></li><li class=''><a href='/georgina-limo-service' id='link702'>Georgina</a></li><li class=''><a href='/east-gwillimbury-limo-service' id='link703'>East Gwillimbury</a></li><li class=''><a href='/hamilton-limo-service' id='link705'>Hamilton</a></li><li class=''>
2190<a href='/niagara-falls-limo-service' id='link707'>Niagara Falls</a></li><li class=''><a href='/ancaster-limo-service' id='link709'>Ancaster</a></li><li class=''><a href='/barrie-limo-service' id='link710'>Barrie</a></li><li class=''><a href='/brantford-limo-service' id='link711'>Brantford</a></li><li class=''><a href='/cambridge-limo-service' id='link712'>Cambridge</a></li><li class=''><a href='/courtice-limo-service' id='link713'>Courtice</a></li><li class=''><a href='/guelph-limo-service' id='link714'>Guelph</a></li><li class=''><a href='/kitchener-limo-service' id='link715'>Kitchener</a></li><li class=''><a href='/kingston-limo-service' id='link716'>Kingston</a></li><li class=''><a href='/london-ontario-limo-service' id='link717'>London</a></li><li class=''><a href='/muskoka-limo-service' id='link718'>Muskoka</a></li><li class=''><a href='/port-hope-limo-service' id='link719'>Port Hope</a></li><li class=''><a href='/peterborough-limo-service' id='link720'>Peterborough</a></li><li class=''><a href='/port-perry-limo-service' id='link721'>Port Perry</a></li><li class=''><a href='/st-catharines-limo-service' id='link722'>St. Catharines</a></li><li class=''><a href='/uxbridge-limo-service' id='link723'>Uxbridge</a></li><li class=''><a href='/waterloo-limo-service' id='link724'>Waterloo</a></li><li class=''><a href='/windsor-limo-service' id='link725'>Windsor</a></li></ul></li></ul></li><li class=''><a href='/united-kingdom' id='link650'>Europe</a><ul><li class=''><a href='/amsterdam-limo-service' id='link771'>Amsterdam</a></li><li class=''><a href='/antwerp-limo-service' id='link772'>Antwerp</a></li><li class=''><a href='/barcelona-limo-service' id='link773'>Barcelona</a></li><li class=''><a href='/basel-limo-service' id='link774'>Basel</a></li><li class=''><a href='/berlin-limo-service' id='link775'>Berlin</a></li><li class=''><a href='/birmingham-limo-service' id='link776'>Birmingham</a></li><li class=''><a href='/brussels-limo-service' id='link777'>Brussels</a></li><li class=''><a href='/budapest-limo-service' id='link778'>Budapest</a></li><li class=''><a href='/canary-wharf-limo-service' id='link779'>Canary Wharf</a></li><li class=''><a href='/cannes-limo-service' id='link780'>Cannes</a></li><li class=''><a href='/charles-de-gaulle-limo-service' id='link781'>Charles de Gaulle</a></li><li class=''><a href='/copenhagen-limo-service' id='link782'>Copenhagen</a></li><li class=''><a href='/dublin-limo-service' id='link783'>Dublin</a></li><li class=''><a href='/dusseldorf-limo-service' id='link784'>Dusseldorf</a></li><li class=''><a href='/florence-limo-service' id='link785'>Florence</a></li><li class=''><a href='/frankfurt-limo-service' id='link786'>Frankfurt</a></li><li class=''><a href='/gatwick-limo-service' id='link787'>Gatwick</a></li><li class=''><a href='/geneva-limo-service' id='link788'>Geneva</a></li><li class=''><a href='/gothenburg-limo-service' id='link789'>Gothenburg</a></li><li class=''><a href='/greater-london-limo-service' id='link790'>Greater London</a></li><li class=''><a href='/hamburg-limo-service' id='link791'>Hamburg</a></li><li class=''><a href='/heathrow-limo-service' id='link792'>Heathrow</a></li><li class=''><a href='/helsinki-limo-service' id='link793'>Helsinki</a></li><li class=''><a href='/krakow-limo-service' id='link794'>Krakow</a></li><li class=''><a href='/la-defense-limo-service' id='link795'>La Defense</a></li><li class=''><a href='/lisbon-limo-service' id='link796'>Lisbon</a></li><li class=''><a href='/liverpool-limo-service' id='link797'>Liverpool</a></li><li class=''><a href='/london-limo-service' id='link798'>London</a></li><li class=''><a href='/madrid-limo-service' id='link799'>Madrid</a></li><li class=''><a href='/manchester-limo-service' id='link800'>Manchester</a></li><li class=''><a href='/milan-limo-service' id='link801'>Milan</a></li><li class=''><a href='/monaco-limo-service' id='link802'>Monaco</a></li><li class=''><a href='/munich-limo-service' id='link803'>Munich</a></li><li class=''><a href='/nice-limo-service' id='link804'>Nice</a></li><li class=''><a href='/orly-limo-service' id='link805'>Orly</a></li><li class=''><a href='/oslo-limo-service' id='link806'>Oslo</a></li><li class=''><a href='/paris-limo-service' id='link807'>Paris</a></li><li class=''><a href='/porto-limo-service' id='link808'>Porto</a></li><li class=''><a href='/prague-limo-service' id='link809'>Prague</a></li><li class=''><a href='/rome-limo-service' id='link810'>Rome</a></li><li class=''><a href='/rotterdam-limo-service' id='link811'>Rotterdam</a></li><li class=''><a href='/salzburg-limo-service' id='link812'>Salzburg</a></li><li class=''><a href='/stockholm-limo-service' id='link813'>Stockholm</a></li><li class=''><a href='/the-hague-limo-service' id='link814'>The Hague</a></li><li class=''><a href='/valencia-limo-service' id='link815'>Valencia</a></li><li class=''><a href='/venice-limo-service' id='link816'>Venice</a></li><li class=''><a href='/vienna-limo-service' id='link817'>Vienna</a></li><li class=''><a href='/warsaw-limo-service' id='link818'>Warsaw</a></li><li class=''><a href='/westminster-limo-service' id='link819'>Westminster</a></li><li class=''><a href='/zurich-limo-service' id='link820'>Zurich</a></li></ul></li><li class=''><a href='/dubai' id='link657'>Middle East</a><ul><li class=''><a href='/abu-dhabi-limo-service' id='link821'>Abu Dhabi</a></li><li class=''><a href='/doha-limo-service' id='link829'>Doha</a></li><li class=''><a href='/dubai-limo-service' id='link830'>Dubai</a></li><li class=''><a href='/jeddah-limo-service' id='link837'>Jeddah</a></li><li class=''><a href='/kuwait-city-limo-service' id='link839'>Kuwait City</a></li><li class=''><a href='/manama-limo-service' id='link841'>Manama</a></li><li class=''><a href='/muscat-limo-service' id='link843'>Muscat</a></li><li class=''><a href='/riyadh-limo-service' id='link850'>Riyadh</a></li><li class=''><a href='/sharjah-limo-service' id='link853'>Sharjah</a></li></ul></li><li class=''><a href='/locations' id='link655'>Asia</a><ul><li class=''><a href='/ahmedabad-limo-service' id='link822'>Ahmedabad</a></li><li class=''><a href='/bali-limo-service' id='link823'>Bali</a></li><li class=''><a href='/bangkok-limo-service' id='link824'>Bangkok</a></li><li class=''><a href='/beijing-limo-service' id='link825'>Beijing</a></li><li class=''><a href='/bengaluru-limo-service' id='link826'>Bengaluru</a></li><li class=''><a href='/busan-limo-service' id='link827'>Busan</a></li><li class=''><a href='/chennai-limo-service' id='link828'>Chennai</a></li><li class=''><a href='/guangzhou-limo-service' id='link831'>Guangzhou</a></li><li class=''><a href='/gurgaon-limo-service' id='link832'>Gurgaon</a></li><li class=''><a href='/hong-kong-limo-service' id='link833'>Hong Kong</a></li><li class=''><a href='/hyderabad-limo-service' id='link834'>Hyderabad</a></li><li class=''><a href='/jaipur-limo-service' id='link835'>Jaipur</a></li><li class=''><a href='/jakarta-limo-service' id='link836'>Jakarta</a></li><li class=''><a href='/kuala-lumpur-limo-service' id='link838'>
2190Kuala Lumpur</a></li><li class=''><a href='/kyoto-limo-service' id='link840'>Kyoto</a></li><li class=''><a href='/mumbai-limo-service' id='link842'>Mumbai</a></li><li class=''><a href='/new-delhi-limo-service' id='link844'>New Delhi</a></li><li class=''><a href='/noida-limo-service' id='link845'>Noida</a></li><li class=''><a href='/osaka-limo-service' id='link846'>Osaka</a></li><li class=''><a href='/pattaya-limo-service' id='link847'>Pattaya</a></li><li class=''><a href='/phuket-limo-service' id='link848'>Phuket</a></li><li class=''><a href='/pune-limo-service' id='link849'>Pune</a></li><li class=''><a href='/seoul-limo-service' id='link851'>Seoul</a></li><li class=''><a href='/shanghai-limo-service' id='link852'>Shanghai</a></li><li class=''><a href='/shenzhen-limo-service' id='link854'>Shenzhen</a></li><li class=''><a href='/singapore-limo-service' id='link855'>Singapore</a></li><li class=''><a href='/taipei-limo-service' id='link856'>Taipei</a></li><li class=''><a href='/tokyo-limo-service' id='link857'>Tokyo</a></li><li class=''><a href='/yokohama-limo-service' id='link858'>Yokohama</a></li></ul></li><li class=''><a href='/locations' id='link653'>Latin America</a><ul><li class=''><a href='/aruba-limo-service' id='link859'>Aruba</a></li><li class=''><a href='/asuncion-limo-service' id='link860'>Asunción</a></li><li class=''><a href='/bogota-limo-service' id='link861'>Bogotá</a></li><li class=''><a href='/brasilia-limo-service' id='link862'>Brasília</a></li><li class=''><a href='/buenos-aires-limo-service' id='link863'>Buenos Aires</a></li><li class=''><a href='/cancun-limo-service' id='link864'>Cancun</a></li><li class=''><a href='/cartagena-limo-service' id='link865'>Cartagena</a></li><li class=''><a href='/cusco-limo-service' id='link866'>Cusco</a></li><li class=''><a href='/guadalajara-limo-service' id='link867'>Guadalajara</a></li><li class=''><a href='/guatemala-city-limo-service' id='link868'>Guatemala City</a></li><li class=''><a href='/guayaquil-limo-service' id='link869'>Guayaquil</a></li><li class=''><a href='/lima-limo-service' id='link870'>Lima</a></li><li class=''><a href='/los-cabos-limo-service' id='link871'>Los Cabos</a></li><li class=''><a href='/medellin-limo-service' id='link872'>Medellín</a></li><li class=''><a href='/mexico-city-limo-service' id='link873'>Mexico City</a></li><li class=''><a href='/montego-bay-limo-service' id='link874'>Montego Bay</a></li><li class=''><a href='/monterrey-limo-service' id='link875'>Monterrey</a></li><li class=''><a href='/montevideo-limo-service' id='link876'>Montevideo</a></li><li class=''><a href='/nassau-limo-service' id='link877'>Nassau</a></li><li class=''><a href='/panama-city-limo-service' id='link878'>Panama City</a></li><li class=''><a href='/puerto-vallarta-limo-service' id='link879'>Puerto Vallarta</a></li><li class=''><a href='/punta-cana-limo-service' id='link880'>Punta Cana</a></li><li class=''><a href='/quito-limo-service' id='link881'>Quito</a></li><li class=''><a href='/rio-de-janeiro-limo-service' id='link882'>Rio de Janeiro</a></li><li class=''><a href='/san-jose-costa-rica-limo-service' id='link883'>San José</a></li><li class=''><a href='/san-juan-limo-service' id='link884'>San Juan</a></li><li class=''><a href='/san-salvador-limo-service' id='link885'>San Salvador</a></li><li class=''><a href='/santa-cruz-limo-service' id='link886'>Santa Cruz</a></li><li class=''><a href='/santiago-limo-service' id='link887'>Santiago</a></li><li class=''><a href='/santo-domingo-limo-service' id='link888'>Santo Domingo</a></li><li class=''><a href='/sao-paulo-limo-service' id='link889'>São Paulo</a></li><li class=''><a href='/tijuana-limo-service' id='link890'>Tijuana</a></li></ul></li><li class=''><a href='/locations' id='link658'>Africa</a><ul><li class=''><a href='/abidjan-limo-service' id='link891'>Abidjan</a></li><li class=''><a href='/abuja-limo-service' id='link892'>Abuja</a></li><li class=''><a href='/accra-limo-service' id='link893'>Accra</a></li><li class=''><a href='/addis-ababa-limo-service' id='link894'>Addis Ababa</a></li><li class=''>
2190<a href='/algiers-limo-service' id='link895'>Algiers</a></li><li class=''><a href='/cairo-limo-service' id='link896'>Cairo</a></li><li class=''><a href='/cape-town-limo-service' id='link897'>Cape Town</a></li><li class=''><a href='/casablanca-limo-service' id='link898'>Casablanca</a></li><li class=''><a href='/dar-es-salaam-limo-service' id='link899'>Dar es Salaam</a></li><li class=''><a href='/durban-limo-service' id='link900'>Durban</a></li><li class=''><a href='/gaborone-limo-service' id='link901'>Gaborone</a></li><li class=''><a href='/harare-limo-service' id='link902'>Harare</a></li><li class=''><a href='/johannesburg-limo-service' id='link903'>Johannesburg</a></li><li class=''><a href='/kampala-limo-service' id='link904'>Kampala</a></li><li class=''><a href='/kigali-limo-service' id='link905'>Kigali</a></li><li class=''><a href='/lagos-limo-service' id='link906'>Lagos</a></li><li class=''><a href='/lusaka-limo-service' id='link907'>Lusaka</a></li><li class=''><a href='/mahe-limo-service' id='link908'>Mahé</a></li><li class=''><a href='/maputo-limo-service' id='link909'>Maputo</a></li><li class=''><a href='/marrakech-limo-service' id='link910'>Marrakech</a></li><li class=''><a href='/mombasa-limo-service' id='link911'>Mombasa</a></li><li class=''><a href='/nairobi-limo-service' id='link912'>Nairobi</a></li><li class=''><a href='/port-louis-limo-service' id='link913'>Port Louis</a></li><li class=''><a href='/pretoria-limo-service' id='link914'>Pretoria</a></li><li class=''><a href='/tunis-limo-service' id='link915'>Tunis</a></li><li class=''><a href='/zanzibar-limo-service' id='link916'>Zanzibar</a></li></ul></li><li class=''><a href='/locations' id='link651'>Oceania</a><ul><li class=''><a href='/adelaide-limo-service' id='link917'>Adelaide</a></li><li class=''><a href='/alice-springs-limo-service' id='link918'>Alice Springs</a></li><li class=''><a href='/auckland-limo-service' id='link919'>Auckland</a></li><li class=''><a href='/brisbane-limo-service' id='link920'>Brisbane</a></li><li class=''><a href='/cairns-limo-service' id='link921'>Cairns</a></li><li class=''><a href='/canberra-limo-service' id='link922'>Canberra</a></li><li class=''><a href='/christchurch-limo-service' id='link923'>Christchurch</a></li><li class=''><a href='/darwin-limo-service' id='link924'>Darwin</a></li><li class=''><a href='/gold-coast-limo-service' id='link925'>Gold Coast</a></li><li class=''><a href='/guam-limo-service' id='link926'>Guam</a></li><li class=''><a href='/hobart-limo-service' id='link927'>Hobart</a></li><li class=''><a href='/honolulu-limo-service' id='link928'>Honolulu</a></li><li class=''><a href='/melbourne-limo-service' id='link929'>Melbourne</a></li><li class=''><a href='/nadi-limo-service' id='link930'>Nadi</a></li><li class=''><a href='/perth-limo-service' id='link931'>Perth</a></li><li class=''><a href='/port-moresby-limo-service' id='link932'>Port Moresby</a></li><li class=''><a href='/queenstown-limo-service' id='link933'>Queenstown</a></li><li class=''><a href='/sunshine-coast-limo-service' id='link934'>Sunshine Coast</a></li><li class=''><a href='/sydney-limo-service' id='link935'>Sydney</a></li><li class=''><a href='/wellington-limo-service' id='link936'>Wellington</a></li></ul></li><li class=''><a href='/locations' id='link652'>All Cities</a></li></ul></li><li class=''><a href='/reservation' id='link425'  title='Limo Online Reservation | Global Limousine Services Directory | join LimousineWorldwide.Directory' target='_blank'>Online Reservation</a><ul><li class=''><a href='/packages' id='link595'  title='Pick a Limo Package | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Pick a Package</a></li><li class=''><a href='/services' id='link598'  title='Limo Sevices | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Services</a></li><li class=''><a href='/reservation' id='link430'  title='Make a Limo Reservation | Global Limousine Services Directory | join LimousineWorldwide.Directory'>Reservation</a></li><li class=''><a href='/digital-products' id='link593'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Offers by Partners</a><ul><li class=''><a href='/get-quotes' id='link599'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Quotes by Partners</a></li></ul></li></ul></li><li class=''><a href='/blog' id='link227'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Resources</a><ul><li class=''><a href='/classifieds' id='link238'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Classifieds</a></li><li class=''><a href='/jobs' id='link233'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Jobs</a></li><li class=''><a href='/events' id='link240'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Events</a></li><li class=''><a href='/blog' id='link239'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Blog</a></li><li class=''><a href='/fleet' id='link594'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>
2190Limousine Fleet </a></li><li class=''><a href='/coupons' id='link429'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Offers</a></li><li class=''><a href='/articles' id='link606'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Latest Articles</a></li><li class=''><a href='/canadian_airports' id='link608'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Canadian International Airports</a></li><li class=''><a href='/us_airports' id='link609'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>US International Airports</a></li><li class=''><a href='/global-airports' id='link610'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Global International Airports</a></li><li class=''><a href='/press-release' id='link644'  title='Largest Network of Limousine Companies & Limousine Associated Vendors Worldwide'>Limousine Press Release</a><ul><li class=''><a href='https://www.einpresswire.com/article/923228197/limousineworldwide-directory-sets-goal-to-become-the-world-s-largest-professional-chauffeur-network' id='link645'>LimousineWorldwide.Directory Sets Goal to Become the World's Largest Professional Chauffeur Network Featured</a></li><li class=''><a href='https://www.einpresswire.com/article/840883113/limousineworldwide-directory-becomes-the-largest-global-platform-for-limousine-companies-and-chauffeurs' id='link646'>LimousineWorldwide.Directory Becomes the Largest Global Platform for Limousine Companies and Chauffeurs Featured</a></li><li class=''><a href='https://www.desmoinesregister.com/press-release/story/91634/limousineworldwide-directory-sets-goal-to-become-the-worlds-largest-professional-chauffeur-network/' id='link647'>LimousineWorldwide.Directory Sets Goal to Become the World’s Largest Professional Chauffeur Network</a></li><li class=''><a href='https://www.openpr.com/news/4132768/onroutz-com-and-bookingworldwide-net-set-to-deliver' id='link648'>Onroutz.com and BookingWorldwide.net Set to Deliver World-Class Travel and Transportation for Toronto International Film Festival 2025</a></li></ul></li></ul></li><li class=''><a href='/bookingworldwide' id='link611'  title='BookingWorldwide.net, luxury limousine services, hotel bookings, flight reservations, resort bookings, car rentals, cruise bookings, private jet charters, chauffeur services, travel management, global travel services, exclusive travel offers, seamless tra'>Book Flights | Hotels | Cruises | Resorts | Packages | Acitvites</a></li>			</ul>
2191		</div>
2192	</div>
2193</nav>
2194<!--CSS IF MENU IS FIXED TOP-->
2195
2196</div>
2197<!--
2198
2199IMPORTANT: This widget contains real Adsense code as a sample to show how this widget functions.  Please replace the current Adsense code below with your own code in order to generate revenue from this ad space.
2200
2201-->
2202<div class="container clearfix text-center banner-ad-unit above-content-banner-ad">
2203					<div class="clearfix vmargin banner-ad-unit">
2204					<a class="center-block text-center" href="https://www.driverpartners.net" target="_blank">
2205						<img width="728" height="90" loading="lazy" alt="Banner Ad" src="https://ik.imagekit.io/limousine/limousineworldwide/images/DriversWorldwide.-directory-(5).jpg">
2206					</a>
2207				</div>
2208				<div class="clearfix"></div>
2209</div>
2210<div class="clearfix"></div><div class="clearfix"></div>
2211<!-- Begin  Content -->
2212<main role="main" id="main-content">
2213<div id="first_container" class="content-container fr-view">
2214        <div class="container">
2215                <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.limousineworldwide.directory' title='Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide'><span itemprop='name'>Home</span><meta itemprop='position' content='1' /></a></li><li class='breadcrumb-current'><span>Limousine Worldwide - Digital Products</span></li></ol>        <div class="clearfix body-content"></div>
2216            <style type="text/css">
2217		.search_results_royalSlider .rsMainSlideImage {
2218			width: 100%!important;
2219			height: 100%!important;
2220			margin-top:0!important;
2221			object-fit: cover; /* Ensures the image covers the container without stretching */
2222			object-position: center; /* Centers the image within the container */
2223		}
2224        @media only screen and (max-width: 768px) {
2225            .content_w_sidebar .cal-month-box .pull-right {
2226                float: none !important;
2227            }
2228            .grid_element .img_section {
2229                flex: 0 0 100%;
2230                width: 100%;
2231            }
2232        }
2233    </style>
2234<div class="row content_w_sidebar feature-search feature-digital-products">
2235    <div class='col-md-9'>        <div class="col-xs-12 col-sm-11 col-md-10 nopad xs-hpad pull-left feature_results_header">
2236            <h1 class="nopad nomargin bold">
2237                Limousine Worldwide Digital Products            </h1>
2238            <div class="clearfix"></div>
2239                    </div>
2240    <div itemscope itemtype="https://schema.org/CollectionPage" itemid="https://www.limousineworldwide.directory/digital-products#entity">
2241	<meta itemprop="name" content="Limousine Worldwide Digital Products">
2242	<meta itemprop="headline" content="Limousine Worldwide Digital Products">
2243	<meta itemprop="description" content="Find the best Limousine Companies | Limo Owner Operators And Limousine Drivers Limousine Worldwide - Digital Products now. Discover the latest Limousine Worldwide - Digital Products posted by Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines near you.">
2244	<meta itemprop="about" content="Limousine Worldwide Digital Products">
2245		<meta itemprop="keywords" content="Limousine Worldwide Digital Products, Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide, Limousine Worldwide - Digital Product">
2246		<meta itemprop="inLanguage" content="en-US">
2247	<link itemprop="url" href="https://www.limousineworldwide.directory/digital-products">
2248	<meta itemprop="mainEntityOfPage" content="https://www.limousineworldwide.directory/digital-products">
2249	<meta itemprop="copyrightYear" content="2026">
2250	<link itemprop="copyrightHolder" href="https://www.limousineworldwide.directory/#organization">
2251	<link itemprop="isPartOf" href="https://www.limousineworldwide.directory/#website">
2252	<link itemprop="publisher" href="https://www.limousineworldwide.directory/#organization">
2253		<div itemprop="mainEntity" itemscope itemtype="https://schema.org/ItemList" itemid="https://www.limousineworldwide.directory/digital-products#itemlist">
2254		<meta itemprop="name" content="Limousine Worldwide Digital Products">
2255		<link itemprop="url" href="https://www.limousineworldwide.directory/digital-products">
2256		<meta itemprop="description" content="Find the best Limousine Companies | Limo Owner Operators And Limousine Drivers Limousine Worldwide - Digital Products now. Discover the latest Limousine Worldwide - Digital Products posted by Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines near you.">
2257		<meta itemprop="mainEntityOfPage" content="https://www.limousineworldwide.directory/digital-products">
2258		<meta itemprop="itemListOrder" content="http://schema.org/ItemListOrderAscending">
2259				<style type='text/css'> 
2260.search_result.grid {
2261	display: grid;
2262}
2263.views > i {
2264	font-size: 18px;
2265	margin-left: 5px;
2266	border-radius: 4px;
2267	cursor: pointer;
2268	width: 30px;
2269	height: 30px;
2270	line-height: 30px;
2271	display: inline-flex;
2272	align-items: center;
2273	justify-content: center;
2274	text-align: center;
2275	vertical-align: top;
2276	transition: all 100ms linear 0ms;
2277}
2278a.gridA {
2279	font-size: 18px;
2280	text-align: center;
2281	margin: 10px 0;
2282	display: block;
2283}
2284.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 {
2285	display:none;
2286}
2287.visible-lg {
2288	word-wrap: break-word;
2289}
2290.grid .post-location-snippet b + span {
2291	display: block;
2292}
2293@media only screen and (max-width: 767px) {
2294	.member_results .sort-members-select, .member_results .overall_rating_filter {
2295		float: left;
2296		width: 150px;
2297	}
2298} </style>    <div class='views pull-right '>
2299                    <i class='fa bi bi-list-task activeView listView'></i>
2300                            <i class='fa bi bi-grid js-click gridView hidden-xs'></i>
2301                            <i class="fa bi bi-geo-alt mapView"></i>
2302            </div>
2303<hr>
2304<div class="grid-container">	<div class="clearfix"></div>
2305	<div class="alert alert-primary-subtle vmargin no_search_results_posts">
2306		<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
2307		Sorry, we did not find any results for your search.	</div>
2308	<div class="clearfix"></div>
2309</div>
2310<div class="map_container">
2311	<style type='text/css'> .info_window p {
2312	text-align: center;
2313	font-size: 12px;
2314	margin: 5px 0;
2315}
2316.info_window > a {
2317	display: block;
2318	text-align: center;
2319	margin: 5px 0;
2320}
2321.info_window img {
2322	display: block;
2323	max-width: 125px;
2324	margin: 0 auto;
2325	max-height:80px;
2326}
2327.info_window {
2328	width: 150px;
2329}
2330.gm-style-iw div div {
2331	overflow: visible!important;
2332}
2333#map-canvas {
2334	height: 500px;
2335	margin-bottom: 15px;
2336	width: 100%;
2337}
2338.suggestion-search-location {
2339	margin: 2px 2px;
2340	color: #333;
2341	background-color: #CEDDE9;
2342	display: inline-block;
2343	padding: 5px 11px;
2344}
2345
2346.other-locations-container {
2347	overflow: hidden;
2348	max-height: 32px;
2349	transition: all 0.5s ease 0s;
2350}
2351span.show-more-suggestions {
2352	padding: 5px;
2353	margin: 0px 13px 9px 4px;
2354	display: inline-block;
2355	cursor: pointer;
2356	color: #1a0dab;
2357	font-weight: 500;
2358}
2359span.show-more-suggestions:hover {
2360	text-decoration: underline;
2361}
2362.suggestions-heading {
2363	margin-bottom: 5px;
2364} </style><div data-id="map-canvas"></div></div>	</div>
2365</div>
2366                <div class="clearfix"></div>
2367        <div class="post-pagination-block">
2368            <ul class="pagination">
2369                            </ul>
2370            <div class="clearfix"></div>
2371        </div>
2372        <div class="clearfix"></div>
2373        </div> <!-- <div class="tab-content"> -->
2374
2375        <div class="col-sm-12 col-md-3"><!--
2376
2377IMPORTANT: This widget contains real Adsense code as a sample to show how this widget functions.  Please replace the current Adsense code below with your own code in order to generate revenue from this ad space.
2378
2379-->
2380			<a class="center-block text-center" href="https://www.driverpartners.net/join" target="_blank">
2381				<img width="1024" height="1536" alt="Banner Ad" loading="lazy" src="https://ik.imagekit.io/limousine/limousineworldwide/images/Limousine-Booking-Offers_simple_compose.png">
2382			</a>
2383			<div class="clearfix clearfix-lg"></div>
2384		<!--
2385
2386This search module will detect which of the default membership features' search results pages is being viewed and display the related search feature.
2387
2388IMPORTANT: This module will only work with the default search features that come with the software when they are using the default forms associated with those features.  If the form or the membership feature is modified, this widget may not work as expected.
2389
2390-->
2391
2392<div class="module member-join-offer">
2393	<h2>Are You a Business?</h2>
2394	<p>
2395		<b>1.</b> Register your company<br>
2396		<b>2.</b> Create a searchable listing<br> 
2397		<b>3.</b> Connect with more clients
2398	</p>
2399	<a title="Get Listed Today" href="/join" class="btn btn-primary btn-block">Get Listed Today</a>
2400</div>	
2401<div class="module newsletter-sign-up-form">
2402	<h2 class="bpad text-center">Join Our Newsletter</h2>
2403	<a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-primary btn-block">
2404		Click to Subscribe
2405	</a>
2406</div>
2407
2408<div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
2409	<div class="modal-dialog">
2410		<div class="modal-content">
2411			<div class="container-fluid">
2412				<div class="row">
2413					<div class="col-md-12">
2414						<br>
2415						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2416							<span aria-hidden="true">&times;</span>
2417						</button>
2418						<h3 class="nomargin">
2419							Join Our Newsletter
2420						</h3>
2421						<hr>
2422						<div class="newsletter_modal_form_container">
2423							 <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="/digital-products" 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">
2424                <label for="captchaContainer">
2425            <span class="required">* </span>
2426            Answer Security Question
2427        </label>
2428        <div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
2429        <div class="g-recaptcha"  id="newsletter_modal_signup_380-google-recaptcha"></div>
2430    </div>
2431    <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>
2432    <div class="clearfix bmargin"></div>
2433    <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
2434</div>
2435    <style>
2436        .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 {
2437            transform: scale(0.77);
2438            -webkit-transform: scale(0.77);
2439            transform-origin: 0 0;
2440            -webkit-transform-origin: 0 0;
2441            margin-bottom: -15px;
2442        }
2443
2444        .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 {
2445            transform: scale(0.77);
2446            -webkit-transform: scale(0.77);
2447            transform-origin: 0 0;
2448            -webkit-transform-origin: 0 0;
2449            margin-bottom: -15px;
2450        }
2451    </style>
2452    
2452<script type="text/javascript">
2453        if(typeof formsFound == "undefined"){
2454            var formID                  = '';
2455            var currentCaptcha          = {};
2456            var captchaHolders          = {};
2457            var formsFound              = {};
2458            var captchaApiRequested     = false;
2459            /* The forms the visitor has actually interacted with - only these get a widget. */
2460            var captchaArmedForms       = [];
2461            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
2462               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
2463               and presses Enter without ever clicking, so api.js never loaded, the captcha
2464               never rendered, and the form POSTed an empty token. */
2465            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
2466
2467            window.addEventListener('load', () => {
2468                formID = document.querySelectorAll('[name="recaptcha"]');
2469                if (typeof formID != "undefined" && formID !== null) {
2470                    for (let i = 0; i < formID.length; i++) {
2471                        let formIDForm      = formID[i].closest('form');
2472                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
2473
2474                        if (typeof formsFound[formIDForm.id] != "undefined") {
2475                            formsFound[formIDForm.id]['counter']++;
2476                        }else{
2477                            formsFound[formIDForm.id] = {'counter' : 1};
2478                        }
2479
2480                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
2481                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
2482
2483                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
2484                            captchaTriggerEvents.forEach( evt =>
2485                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
2486                            );
2487                        }
2488                    }
2489                }
2490            });
2491        }
2492
2493        function reCaptchaOnFormInteraction(event) {
2494            if (event && event.currentTarget) {
2495                captchaArmForm(event.currentTarget);
2496            }
2497            if (captchaApiRequested) {
2498                renderArmedCaptchas();
2499                return;
2500            }
2501            captchaApiRequested = true;
2502
2503            var head    = document.getElementsByTagName('head')[0];
2504            var script  = document.createElement('script');
2505            script.type = 'text/javascript';
2506            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
2507            head.appendChild(script);
2508        }
2509
2510        var captchaArmForm = function (formEl) {
2511            if (!formEl) {
2512                return;
2513            }
2514            for (var a = 0; a < captchaArmedForms.length; a++) {
2515                if (captchaArmedForms[a] === formEl) {
2516                    return;
2517                }
2518            }
2519            captchaArmedForms.push(formEl);
2520        };
2521
2522        var captchaSolvedCallback = function (holder) {
2523            return function () {
2524                var formEl = holder.closest('form');
2525                if (!formEl) {
2526                    return;
2527                }
2528                $(formEl).find('.security_question_label').removeClass('has-error');
2529                $(formEl).find('#recaptcha_error').css('display', 'none');
2530                var notification = document.getElementById(formEl.id + '-notification');
2531                if (notification && notification.classList.contains('alert-danger-subtle')) {
2532                    $(notification).slideUp();
2533                }
2534            };
2535        };
2536
2537        var renderArmedCaptchas = function () {
2538            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
2539                return;
2540            }
2541            for (var f = 0; f < captchaArmedForms.length; f++) {
2542                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
2542aptcha]');
2543
2544                if (!holder || !holder.id || holder.getClientRects().length === 0) {
2545                    continue;
2546                }
2547                /* Guard a second render: grecaptcha throws on an element it already claimed. */
2548                if (typeof captchaHolders[holder.id] === "undefined") {
2549                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
2550                        'sitekey': '6LeMhpMUAAAAAD7DrcgNFXlb8q-GA_kY5zOzxcQb',
2551                        'callback': captchaSolvedCallback(holder)
2552                    });
2553                }
2554            }
2555        };
2556
2557        var onloadCallback = function (event) {
2558            renderArmedCaptchas();
2559        };
2560
2561    </script>
vendor: 1 bytes, line 2561
2561
2562<script>
2563    $(document).ready(function(){
2564        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
2565           the submit button, so the click guard below never sees it and the form POSTed an
2566           empty token. Bound on document/capture so it runs before FormValidation's own
2567           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
2568           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
2569           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
2570        var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
2571        if (captchaGuardedForm) {
2572            document.addEventListener('submit', function (event) {
2573                if (event.target !== captchaGuardedForm) {
2574                    return;
2575                }
2576
2577                var formId              = captchaGuardedForm.id;
2578                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
2579                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
2580
2581                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
2582                    $("#" + formId + " .security_question_label").removeClass("has-error");
2583                    $("#" + formId + " #recaptcha_error").css("display", "none");
2584                    return;
2585                }
2586
2587                /* Unsolved, or api.js still in flight: either way there is no token to send. */
2588                event.preventDefault();
2589                event.stopImmediatePropagation();
2590                $("#" + formId + " .security_question_label").addClass("has-error");
2591                $("#" + formId + " #recaptcha_error").css("display", "block");
2592                return false;
2593            }, true);
2594        }
2595        $("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
2596        $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
2597
2598            var formId = $(this.form).attr('id');
2599            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
2600
2601            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
2602                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
2603                    event.preventDefault();
2604                    $("#" + formId).formValidation('validate');
2605                    $("#" + formId + " .security_question_label").addClass("has-error");
2606                    $("#" + formId + " #recaptcha_error").css("display", "block");
2607                    return false;
2608                }
2609
2610                /* Solved captcha: clear the error UI and let the click proceed untouched.
2611                   The browser then fires a REAL, button-initiated submit event, so
2612                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
2613                   checkout / native POST on login). Re-submitting here artificially broke
2614                   both ways: native form.submit() skips the FV chain (checkout rendered the
2615                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
2616                   refuses, leaving the form stuck after the first error (Bug 2). */
2617                $("#" + formId + " .security_question_label").removeClass("has-error");
2618                $("#" + formId + " #recaptcha_error").css("display", "none");
2619            }
2620        });
2621    });
2622</script>
2622</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='/digital-products'></form>
2622<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#newsletter_modal_signup_380").bind("submit", function() { 
2623		});}); </script>
2623 						</div>						
2624						<br>
2625					</div>
2626				</div>
2627			</div>
2628		</div>
2629	</div>
2630</div>        </div>
2631    
2632    </div>
2633    <!-- Royal Slider -->
2634<script src="/directory/cdn/assets/bootstrap/RoyalSlider/jquery.royalslider.min.js"></script>
2634
2635<link href="/directory/cdn/assets/bootstrap/RoyalSlider/royalslider.min.css" rel="stylesheet">
2636<link href="/directory/cdn/assets/bootstrap/RoyalSlider/skins/default/rs-default.min.css" rel="stylesheet">
2637<script>
2638    function runRoyalSlider() {
2639        $('.search_results_royalSlider').royalSlider({
2640            fullscreen: {
2641                enabled: false,
2642                nativeFS: false
2643            },
2644                        controlNavigation: 'none',
2645                        autoScaleSlider: false,
2646            autoScaleSliderHeight: 250,
2647            globalCaption: false,
2648            imageScaleMode: 'fit',
2649            loop: true,
2650            navigateByClick: true,
2651            numImagesToPreload: 1,
2652            arrowsNav: true,
2653            arrowsNavAutoHide: false,
2654            arrowsNavHideOnTouch: false,
2655            keyboardNavEnabled: true,
2656            fadeinLoadedSlide: true,
2657            globalCaptionInside: true,
2658            thumbs: {
2659                appendSpan: true,
2660                firstMargin: true,
2661                paddingBottom: 4
2662            }
2663        });
2664    }
2665
2666    $(document).ready(function () {
2667        runRoyalSlider();
2668    });
2669    $('.nav-tabs a').on('shown.bs.tab', function (event) {
2670        $(".search_results_royalSlider").each(function (index) {
2671            var slider = $(this).data('royalSlider');
2672            slider.updateSliderSize();
2673        });
2674    });
2675    $('.listView, .gridView').click(function () {
2676        setTimeout(function () {
2677            $(".search_results_royalSlider").each(function (index) {
2678                var slider = $(this).data('royalSlider');
2679                if (typeof slider != "undefined") {
2680                    slider.updateSliderSize();
2681                }
2682            });
2683        }, 700);
2684    });
2685</script>
2685
2686<style>
2687    .rsImg {
2688        margin-left: auto !important;
2689        margin-right: auto !important;
2690    }
2691
2692    .carousel-control {
2693        background-image: none !important;
2694    }
2695
2696    .royalSlider {
2697        max-height: 160px;
2698    }
2699
2700    .rsOverflow {
2701        width: 100% !important;
2702        height: 100% !important;
2703    }
2704
2705    .grid_element.well {
2706        width: 100%;
2707    }
2708</style>        <div class="clearfix"></div>
2709    </div>
2710</div>
2711</main>
2712<!-- End Content -->
2713<div class="clearfix footer-clear-element clearfix-lg"></div>
2714<!--
2715
2716IMPORTANT: This widget contains real Adsense code as a sample to show how this widget functions.  Please replace the current Adsense code below with your own code in order to generate revenue from this ad space.
2717
2718-->
2719<div class="clearfix"></div>
2720<div class="content-container banner-ad-unit footer-banner-container">
2721
2722	<div class="container text-center banner-ad-unit footer-banner-ad">
2723
2724									<a class="center-block text-center" href="https://www.driverpartners.net" target="_blank">
2725						<img width="728" height="90" loading="lazy" alt="Banner Ad" src="https://ik.imagekit.io/limousine/limousineworldwide/images/Artists-Worldwide.-directory-(5).jpg">
2726					</a>
2727						<div class="clearfix clearfix-lg"></div>
2728	</div>	
2729</div>
2730<div class="clearfix"></div>
2731<style type='text/css'> .newsletter_row input[type="email"] {
2732    float: none;
2733    margin-left: auto;
2734    margin-right: auto;    
2735    width: 62% !important;
2736} </style><div class="content-container newsletter_row">
2737	<div class="container text-center vpad">
2738		<div class="col-md-12 xs-nopad">
2739			<style type='text/css'> @media only screen and (min-width: 768px) {
2740	.newsletter_footer_button {
2741		display: flex;
2742		align-items: center;
2743		margin-left: auto;
2744		margin-right: auto;
2745	}
2746} </style><a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-lg newsletter_footer_button col-xs-12 col-md-6 nofloat fpad bold">
2747            <div class="col-sm-6 nopad newsletter_button_left">
2748            Join Our Newsletter
2749        </div> 
2750        <div class="col-sm-6 nopad newsletter_button_right">
2751            Click to Subscribe
2752            <i class='fa fa-chevron-circle-right fa-fw'></i>
2753        </div>
2754        
2755	<div class="clearfix"></div>
2756</a>
2757		</div>
2758	</div>
2759</div><div class="footer">
2760    <div class="container">
2761        <div class="row">
2762            <ul class="footer_menu sm-text-center">
2763                <li class='col-md-5'><span id='link157'  class='head'> About</span><ul><li class=''><span id='link158'  class='content'> Finding Limousine Companies | Owner Operators | Limousine Chauffeurs and Allied Businesses Worldwide | Reserve Limousine OnLine is easy by searching our trusted network of top-rated Limousine Companies | Owner Operators | Limousine Chauffeurs and Allied Businesses Worldwide | Reserve Limousine OnLine.
2764Limousine Worldwide Directory offer all website visitors a direct connection to Respected Chauffeur Driven Car Providers globally for all their transportation demands. You may find thousands of participating Limousine Providers from over 155 counties worldwide. On our website, you will find full information about a limousine, private car service, shuttle and other transfer service providers. We are showing company name, address, telephone number and website address. You may contact limo company directly or thru our website and make reservations and secure specials directly The service is free of charge to Passengers and Paid for Limousine Transportation Providers!</span></li></ul></li><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><li class=''><a href='/join' id='link161'>List Your Company</a></li></ul></li><li class='col-md-2'><span id='link162'  class='head'> Search</span><ul><li class=''><a href='/categories' id='link163'>Browse Categories</a></li><li class=''><a href='/locations' 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='/login/retrieval' id='link166'>Password Retrieval</a></li><li class=''><a href='/about/contact' id='link167'>Contact Us</a></li></ul></li><li class='col-md-12 clearfix'><span id='link226'>  </span></li><li class='col-md-5 vpad vmargin'><span id='link211'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style>
2765<div class="list-social-links">
2766	<a class="network-icon contact" href="/about/contact" title="Contact Us Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide">
2767		<i class="bi bi-envelope"></i>
2768	</a> 
2769		<a class="network-icon facebook" href="https://www.facebook.com/LimousineWorldwideDirectory-2434010183485844/?modal=
2769admin_todo_tour" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide Facebook">
2770		<i class="bi bi-facebook"></i>
2771	</a>
2772				<a class="network-icon twitter" href="https://twitter.com/LimousineWorld1" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide X">
2773		<i class="bi bi-twitter-x"></i>
2774	</a>
2775	     
2776	      
2777		<a class="network-icon linkedin" href="https://www.linkedin.com/company/limousine-worldwide-directory/?viewAsMember=true" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide LinkedIn">
2778		<i class="bi bi-linkedin"></i>
2779	</a>
2780			<a class="network-icon youtube" href="https://www.youtube.com/watch?v=WDQUdBW9OXw&list=UUQZHRCCevdhN3zYKr_kupeQ" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide YouTube">
2781		<i class="bi bi-youtube"></i>
2782	</a>
2783	 
2784		<a class="network-icon instagram" href="https://www.instagram.com/limowwd/" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide Instagram">
2785		<i class="bi bi-instagram"></i>
2786	</a>
2787						<a class="network-icon blog rss" href="https://www.limousineworldwide.directory/rss" target="_blank" title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide Blog">
2788		<i class="fa fa-rss"></i>
2789	</a>
2790		<div class="clearfix"></div>
2791</div></span></li><li class='col-md-6 col-md-offset-1 vpad vmargin'><a href='/join' id='link212'  class='btn btn_footer_get_listed btn-lg btn-block bold center sm-block' style='white-space:normal'>Limousine Companies | Owner Operators | Limousine Chauffeurs And Allied Businesses Worldwide | Reserve Limousine OnLines - Get Listed Today <i class="fa fa-chevron-right lmargin align-middle hidden-xs"></i></a></li>            </ul>
2792        </div>
2793				<div class="col-md-12 fpad fmargin small text-center footer_terms">
2794	&copy; 2026	<a title="Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide" href="/">
2795		Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide	</a> 
2796	All Rights Reserved.
2797	<div class="inline-block">
2798		<a title="Terms of Use - Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide" href="/about/terms">
2799			Terms of Use
2800		</a> 
2801		|
2802		<a title="Privacy Policy - Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide" href="/about/privacy">
2803			Privacy Policy
2804		</a>
2805	</div>
2806</div>
2807		    </div>
2808</div><style type='text/css'> .scrollup {
2809  border-radius: 3px;
2810  width: 40px;
2811  height: 40px;
2812  opacity: 0.4;
2813  position: fixed;
2814  bottom: 30px;
2815  right: 30px;
2816  display: none;
2817  background: rgba(119, 119, 119, 0.8);
2818  z-index: 1000000;
2819}
2820.scrollup i {
2821  font-size: 36px;
2822  color: white;
2823  position: relative;
2824  top: 0px;
2825  left: 10px;
2826} </style>            <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"
2827                 data-backdrop="static" data-keyboard="false">
2828                <div class="modal-dialog" role="document">
2829                    <div class="modal-content">
2830                        <div class="modal-body nohpad nobpad">
2831                            <button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin"
2832                                    data-dismiss="modal">&times;
2833                            </button>
2834                                <style>
2835        .member-login-container:not(.modal .module) {
2836            width: 555px;
2837            max-width: 100%;
2838            margin-left: auto;
2839            margin-right: auto;
2840            margin-bottom:0;
2841            background-color: rgb(206, 206, 203)!important;
2842            border-color: rgb(189, 164, 109)!important;
2843            color: rgb(51, 51, 51)!important;
2844        }
2845        .login-register-tabs, .login-register-content {
2846            width: 555px!important;
2847            max-width: 100%;
2848            margin-left: auto!important;
2849            margin-right: auto!important;
2850            background-color: rgb(189, 164, 109);
2851        }
2852        .login-register-content {
2853            background: transparent;
2854            padding: 0;
2855            border: none;
2856        }
2857        .login-register-content h2, .login-register-content h2+hr, .login-register-content .account-menu-title {
2858            display: none!important;
2859        }
2860        .express_login_create_account_prefix hr {
2861            margin: 15px 0 10px;
2862        }
2863        .modal-content #containerFBLogin, .modal-content #containerGoogleLogin {
2864            margin:15px 0;
2865        }
2866
2867        /* CSS When Login Form and Express Registration Rendered in Sidebar */
2868        .col-md-3 .bd-chat-well-container,.col-md-4 .bd-chat-well-container {
2869            padding: 15px 10px;
2870        }
2871        .col-md-3 .bd-chat-center-text,.col-md-4 .bd-chat-center-text {
2872            margin: 0;
2873            font-size: 20px;
2874            padding: 0 15px;
2875        }
2876        .col-md-3 .member-login-page-container .login-register-tabs *, .col-md-4 .member-login-page-container .login-register-tabs * {
2877            font-size: 12px;
2878            line-height: 1.2em;
2879            vertical-align: bottom;
2880        }
2881        .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
2882            padding: 5px !important;
2883            height: 50px;
2884            vertical-align: middle;
2885            display: table-cell !important;
2886            width: 1%;
2887        }
2888        .col-md-3 .member-login-page-container .login-register-content, .col-md-4  .member-login-page-container .login-register-content {
2889            padding: 0;
2890        }
2891        .col-md-3 .member-login-container, .col-md-4 .member-login-container {
2892            padding: 15px !important;
2893            font-size: 13px;
2894        }
2895        .col-md-3 .member-login-page-container .input-lg, .col-md-4 .member-login-page-container .input-lg {
2896            height: 34px;
2897            padding: 6px 12px;
2898            font-size: 14px;
2899        }
2900        .col-md-3 .member-login-page-container .security_question_label, .col-md-4 .member-login-page-container .security_question_label {
2901            transform: scale(.85);
2902            margin: -1.15em -1.15em 0;
2903        }
2904        .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 {
2905            width: 100%;
2906            display: block;
2907            margin-top:5px;
2908        }
2909        .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
2910            padding:0
2911        }
2912        .col-md-3 .login-cta-buttons ul.nav, .col-md-4 .login-cta-buttons ul.nav {
2913            margin-top: -10px;
2914        }
2915        .col-md-3 #googleAction, .col-md-3 #facebookAction, .col-md-4 #googleAction, .col-md-4 #facebookAction {
2916            padding: 0;
2917            min-height: 0;
2918            font-size: 14px;
2919            margin: 0;
2920        }
2921        .col-md-3 #googleAction img, .col-md-3 #facebookAction img, .col-md-4 #googleAction img, .col-md-4 #facebookAction img {
2922            height: 36px !important;
2923            margin-right: 5px;
2924            position: relative!important;
2925            display: inline-block;
2926        }
2927        @media only screen and (max-width: 767px) {
2928            .col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
2929                display: block !important;
2930                width: 100%;
2931                line-height: 40px;
2932            }
2933
2934            #containerGoogleLogin {
2935                text-align: center;
2936                margin-top: 10px;
2937            }
2938            #containerGoogleLogin #gBtn {
2939                display: inline-block;
2940            }
2941        }
2942    </style>
2943    <div class="row member-login-page-container">
2944        <div class="fpad-lg novpad">
2945
2946            
2947                                    <div class="module fpad-xl member-login-container">
2948                         <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=" ">
2948<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="/digital-products" 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 {
2949    display: inline-block;
2950    text-align: center;
2951    width: 216px;
2952}
2953
2954.module #containerFBLogin #facebookAction img, .module #containerFBLogin #facebookAction img {
2955    position: absolute !important;
2956}
2957.module #containerFBLogin a#facebookAction {
2958    max-width: 200px;
2959    position: relative;
2960    left: -8px;
2961    
2962} </style><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>
2963                    <style>
2964                        #togglePassword {
2965                            background: none;
2966                            border: none;
2967                            cursor: pointer;
2968                            font-weight: bold;
2969                            font-size: .85em;
2970                            position: absolute;
2971                            right: 5px;
2972                            top: 0;
2973                        }
2974                    </style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button>
2975                
2975<script>
2976                    function showPassword(node){
2977                        const parent = node.closest('.form-group');
2978                        const passwordField = parent.querySelector(`input[type='password'], input[type='text']`);
2979                        const isPassword = passwordField.getAttribute('type') === 'password';
2980                        passwordField.setAttribute('type', isPassword ? 'text' : 'password');
2981                        const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`;
2982                        node.innerHTML = iconHTML;
2983                    }       
2984               </script>
2984<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">
2985                <label for="captchaContainer">
2986            <span class="required">* </span>
2987            Answer Security Question
2988        </label>
2989        <div id="member_login_190-captchaContainer" class="control-group">
2990        <div class="g-recaptcha"  id="member_login_190-google-recaptcha"></div>
2991    </div>
2992    <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>
2993    <div class="clearfix bmargin"></div>
2994    <input type="hidden" name="recaptcha" id="member_login_190-rcap">
2995</div>
2996    <style>
2997        .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 {
2998            transform: scale(0.77);
2999            -webkit-transform: scale(0.77);
3000            transform-origin: 0 0;
3001            -webkit-transform-origin: 0 0;
3002            margin-bottom: -15px;
3003        }
3004
3005        .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 {
3006            transform: scale(0.77);
3007            -webkit-transform: scale(0.77);
3008            transform-origin: 0 0;
3009            -webkit-transform-origin: 0 0;
3010            margin-bottom: -15px;
3011        }
3012    </style>
3013    
3013<script type="text/javascript">
3014        if(typeof formsFound == "undefined"){
3015            var formID                  = '';
3016            var currentCaptcha          = {};
3017            var captchaHolders          = {};
3018            var formsFound              = {};
3019            var captchaApiRequested     = false;
3020            /* The forms the visitor has actually interacted with - only these get a widget. */
3021            var captchaArmedForms       = [];
3022            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
3023               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
3024               and presses Enter without ever clicking, so api.js never loaded, the captcha
3025               never rendered, and the form POSTed an empty token. */
3026            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
3027
3028            window.addEventListener('load', () => {
3029                formID = document.querySelectorAll('[name="recaptcha"]');
3030                if (typeof formID != "undefined" && formID !== null) {
3031                    for (let i = 0; i < formID.length; i++) {
3032                        let formIDForm      = formID[i].closest('form');
3033                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
3034
3035                        if (typeof formsFound[formIDForm.id] != "undefined") {
3036                            formsFound[formIDForm.id]['counter']++;
3037                        }else{
3038                            formsFound[formIDForm.id] = {'counter' : 1};
3039                        }
3040
3041                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
3042                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
3043
3044                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
3045                            captchaTriggerEvents.forEach( evt =>
3046                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
3047                            );
3048                        }
3049                    }
3050                }
3051            });
3052        }
3053
3054        function reCaptchaOnFormInteraction(event) {
3055            if (event && event.currentTarget) {
3056                captchaArmForm(event.currentTarget);
3057            }
3058            if (captchaApiRequested) {
3059                renderArmedCaptchas();
3060                return;
3061            }
3062            captchaApiRequested = true;
3063
3064            var head    = document.getElementsByTagName('head')[0];
3065            var script  = document.createElement('script');
3066            script.type = 'text/javascript';
3067            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
3068            head.appendChild(script);
3069        }
3070
3071        var captchaArmForm = function (formEl) {
3072            if (!formEl) {
3073                return;
3074            }
3075            for (var a = 0; a < captchaArmedForms.length; a++) {
3076                if (captchaArmedForms[a] === formEl) {
3077                    return;
3078                }
3079            }
3080            captchaArmedForms.push(formEl);
3081        };
3082
3083        var captchaSolvedCallback = function (holder) {
3084            return function () {
3085                var formEl = holder.closest('form');
3086                if (!formEl) {
3087                    return;
3088                }
3089                $(formEl).find('.security_question_label').removeClass('has-error');
3090                $(formEl).find('#recaptcha_error').css('display', 'none');
3091                var notification = document.getElementById(formEl.id + '-notification');
3092                if (notification && notification.classList.contains('alert-danger-subtle')) {
3093                    $(notification).slideUp();
3094                }
3095            };
3096        };
3097
3098        var renderArmedCaptchas = function () {
3099            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
3100                return;
3101            }
3102            for (var f = 0; f < captchaArmedForms.length; f++) {
3103                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
3103aptcha]');
3104
3105                if (!holder || !holder.id || holder.getClientRects().length === 0) {
3106                    continue;
3107                }
3108                /* Guard a second render: grecaptcha throws on an element it already claimed. */
3109                if (typeof captchaHolders[holder.id] === "undefined") {
3110                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
3111                        'sitekey': '6LeMhpMUAAAAAD7DrcgNFXlb8q-GA_kY5zOzxcQb',
3112                        'callback': captchaSolvedCallback(holder)
3113                    });
3114                }
3115            }
3116        };
3117
3118        var onloadCallback = function (event) {
3119            renderArmedCaptchas();
3120        };
3121
3122    </script>
vendor: 1 bytes, line 3122
3122
3123<script>
3124    $(document).ready(function(){
3125        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
3126           the submit button, so the click guard below never sees it and the form POSTed an
3127           empty token. Bound on document/capture so it runs before FormValidation's own
3128           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
3129           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
3130           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
3131        var captchaGuardedForm = document.getElementById('member_login_190');
3132        if (captchaGuardedForm) {
3133            document.addEventListener('submit', function (event) {
3134                if (event.target !== captchaGuardedForm) {
3135                    return;
3136                }
3137
3138                var formId              = captchaGuardedForm.id;
3139                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
3140                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
3141
3142                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
3143                    $("#" + formId + " .security_question_label").removeClass("has-error");
3144                    $("#" + formId + " #recaptcha_error").css("display", "none");
3145                    return;
3146                }
3147
3148                /* Unsolved, or api.js still in flight: either way there is no token to send. */
3149                event.preventDefault();
3150                event.stopImmediatePropagation();
3151                $("#" + formId + " .security_question_label").addClass("has-error");
3152                $("#" + formId + " #recaptcha_error").css("display", "block");
3153                return false;
3154            }, true);
3155        }
3156        $("#member_login_190 input[type=submit]").unbind('click');
3157        $("#member_login_190 input[type=submit]").click(function (event) {
3158
3159            var formId = $(this.form).attr('id');
3160            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
3161
3162            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
3163                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
3164                    event.preventDefault();
3165                    $("#" + formId).formValidation('validate');
3166                    $("#" + formId + " .security_question_label").addClass("has-error");
3167                    $("#" + formId + " #recaptcha_error").css("display", "block");
3168                    return false;
3169                }
3170
3171                /* Solved captcha: clear the error UI and let the click proceed untouched.
3172                   The browser then fires a REAL, button-initiated submit event, so
3173                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
3174                   checkout / native POST on login). Re-submitting here artificially broke
3175                   both ways: native form.submit() skips the FV chain (checkout rendered the
3176                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
3177                   refuses, leaving the form stuck after the first error (Bug 2). */
3178                $("#" + formId + " .security_question_label").removeClass("has-error");
3179                $("#" + formId + " #recaptcha_error").css("display", "none");
3180            }
3181        });
3182    });
3183</script>
3183</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>
3183<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#member_login_190").bind("submit", function() { 
3184		});}); </script>
3184                         <div class="clearfix"></div>
3185                    </div>
3186                
3187            
3188        </div>
3189    </div>
3190                        </div>
3191                    </div>
3192                </div>
3193            </div>
3194            
3195
3196
3197    <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
3198<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
3198
3199
3200<script>
3201    function clearContent(thisObj){
3202        var size;
3203        if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){
3204            size = "small";
3205        } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){
3206            size = "large";
3207        } else {
3208            size = "medium";
3209        }
3210        if(!thisObj.parent().hasClass('input_wrapper')){
3211            if(thisObj.parent().hasClass('input-group-sm')){
3212                thisObj.wrap('<span class="input-group-sm input_wrapper"></span>');
3213            } else if (thisObj.parent().hasClass('input-group-lg')){
3214                thisObj.wrap('<span class="input-group-lg input_wrapper"></span>');
3215            } else {
3216                thisObj.wrap('<span class="input_wrapper"></span>');
3217            }
3218        }
3219        if(thisObj.val() != ""){
3220            if(thisObj.hasClass('googleSuggest')){
3221                thisObj.parent().find('.fill_location').remove();
3222            }
3223            if (!thisObj.parent().find('.clear_content').length){
3224                thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`);
3225                if (thisObj.hasClass("tt-input")) {
3226            		thisObj.focus();
3227        		}
3228
3229            }
3230        }
3231                if (thisObj.hasClass('googleSuggest') && thisObj.val().length == 0) {
3232            thisObj.parent().append(`<span class="fill_location ${size}"><i class="fa fa-crosshairs" title="Use Current Location" aria-hidden="true"></i></span>`);
3233        }
3234        if (thisObj.val() == "" && thisObj.parent().find('.clear_content').length){
3235            thisObj.parent().find('.clear_content').remove();
3236        }
3237            }
3238
3239    $(document).on('click', '.drp-buttons .applyBtn', function(){
3240        clearContent($(".dateRange input"));
3241    });
3242
3243    $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){
3244        clearContent($(this));
3245    });
3246
3247    $(document).ready(function(){
3248        $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){
3249            clearContent($(this));
3250        })
3251    })
3252
3253    $(document).on('click', '.clear_content', function(){
3254        $(this).parent().find('input').val('');
3255        //tt-input its a class for typeahead auto-suggest
3256        if ($(this).parent().find('input').hasClass("tt-input")) {
3257            $(this).parent().find('input').typeahead('val','');
3258        }
3259        clearContent($(this).parent().find('input'));
3260        $(this).remove();
3261    });
3262
3263	$(window).on('load', function () {
3264		setTimeout(function() {
3265			// add missing href attribute to multi-category options in search modules
3266			$('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#');
3267		}, 2000);
3268                    setTimeout(() => {
3269                let fillLocation = document.querySelector('.fill_location');
3270                if (typeof fillLocation != "undefined" && fillLocation != null) {
3271                    fillLocation.click()
3272                }
3273            }, 500);
3274        	});
3275</script>
3275
3276
3277
3278
3279<a href="#" class="scrollup" title="scrollup">
3280    <i class="fa fa-caret-up" aria-hidden="true"></i>
3281</a>
3282<script>
3283        $(document).ready(function(){
3284        // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318.
3285        // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an
3286        // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button).
3287        if ($.fn.progressbar) {
3288            $('.progress .progress-bar').progressbar({
3289                display_text: 'fill'
3290            });
3291        }
3292        $(window).scroll(function(){
3293
3294            if ($(this).scrollTop() > 600) {
3295                $('.scrollup').fadeIn();
3296
3297            } else {
3298                $('.scrollup').fadeOut();
3299            }
3300        });
3301        $('.scrollup').click(function(){
3302            $("html, body").animate({
3303                scrollTop: 0
3304            }, 600);
3305            return false;
3306        });
3307        $('#cropButton').click(function(){
3308            var iframe = $("#cropiFrame");
3309            iframe.attr("src", iframe.data("src"));
3310        });
3311    });
3312</script>
vendor: 2 bytes, line 3312
3312
3313<script>
3314    function loadMasonryJs() {
3315        return new Promise((resolve, reject) => {
3316            if (window["masonryJs"]) {
3317                resolve("already load masonry");
3318            } else {
3319                let script = document.createElement('script');
3320                script.type = 'text/javascript';
3321                script.src = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/masonry_gridview.pkgd.min.js";
3322                script.async = true;
3323                script.onload = function () {
3324                    window['masonryJs'] = true;
3325                    resolve("ok");
3326                };
3327                let head = document.getElementsByTagName('head')[0];
3328                head.appendChild(script);
3329
3330            }
3331        });
3332    }
3333
3334    var map_opened = 0;
3335    var masonry_opened = 0;
3336
3337    $(".views > i").click(function () {
3338        $(".views > i").removeClass('activeView');
3339        $(this).addClass('activeView');
3340    });
3341        $(".views > i.gridView").click(async function () {
3342       await loadMasonryJs();
3343        $('.grid-container .clickToLoadMoreContainer').addClass('gridBtnLazyLoad')
3344        if (map_opened == 1) {
3345            $('.grid-container').removeClass('hidden');
3346            $('.map_container').hide();
3347            map_opened = 0;
3348        }
3349        $('.grid-container').addClass('visible');
3350        $('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
3351        $('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
3352        $('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
3353        $('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
3354        $('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
3355        $('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
3356        $('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
3357        $('.mid_section .post-location-snippet').addClass('text-center');
3358        $('.mid_section.ex-col-7 .sm-block').addClass('show');
3359        $('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
3360        $('.mid_section .row-fluid.bpad a').addClass('btn-block');
3361        $('.mid_section .row-fluid.bpad').addClass('text-center');
3362        $('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
3363        $('.mid_section > div > p').addClass('text-center');
3364        $('.mid_section h2').addClass('nomargin');
3365        $('.mid_section a.h3').addClass('text-center h4 tmargin');
3366        $('.mid_section .view-details').removeClass('rmargin');
3367        $('.mid_section .contact-member').removeClass('lmargin');
3368        $('.member-search-full-name').removeClass('rmargin');
3369        $('.member-search-reviews').removeClass('rmargin');
3370        $('.member-search-location').removeClass('rmargin rpad');
3371        $('.member-search-company').addClass('btn-block');
3372        $('.view_phone_number').addClass('center-block');
3373        $('.phone_number').addClass('btn-block');
3374        $('.search_result_image').addClass('grid_image');
3375        $('.post-search-category').removeClass('inline-block').addClass('text-center');
3376        $('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
3377
3378                $('.grid-container.visible > hr:nth-of-type(3n)').addClass('gridBreak');
3379        $('.search_result').addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
3380                $('.grid_element').addClass('well xs-center-block');
3381
3382        $('.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();
3383        $('h2.h3.bold > a').addClass('gridA');
3384        $('.info_section .module').removeClass('module fpad');
3385        $('.grid-container').addClass('row');
3386        document.body.classList.add('bdGridDone');
3387                $('.grid-container').masonry({
3388            // options
3389            itemSelector: '.search_result',
3390            columnWidth: '.search_result',
3391            horizontalOrder: true,
3392
3393        });
3394        masonry_opened = 1;
3395        
3396    });
3397        $(".views > i.listView").click(function () {
3398        $('.grid-container .clickToLoadMoreContainer').removeClass('gridBtnLazyLoad')
3399
3400        $('.clearfix.spacing').remove();
3401                if (masonry_opened == 1) {
3402            $('.grid-container').masonry('destroy');
3403        }
3404                $('.grid-container').addClass('visible');
3405        $('.img_section.ex-col-2').removeClass('col-xs-12 ex-col-2 bmargin').addClass('col-xs-2');
3406        $('.img_section.ex-col-3').removeClass('col-sm-12 ex-col-3 bmargin').addClass('col-sm-3');
3407        $('.img_section.ex-col-4').removeClass('col-sm-12 ex-col-4 bmargin').addClass('col-sm-4');
3408        $('.mid_section.col-sm-12.ex-col-9').removeClass('col-sm-12').addClass('col-sm-9');
3409        $('.mid_section.col-sm-12.ex-col-6').removeClass('col-sm-12').addClass('col-sm-6');
3410        $('.mid_section.col-sm-12.ex-col-7').removeClass('col-sm-12 nohpad bpad ex-col-7 text-center').addClass('col-sm-7');
3411        $('.mid_section.col-sm-12.ex-col-8').removeClass('col-sm-12 nohpad bpad').addClass('col-sm-8');
3412        $('.mid_section .post-location-snippet.text-center').removeClass('text-center');
3413        $('.mid_section.col-sm-7 .sm-block').removeClass('show');
3414        $('.mid_section.col-sm-12.ex-col-12').removeClass('col-sm-12').addClass('col-sm-12');
3415        $('.mid_section .row-fluid.bpad .col-sm-12').removeClass('col-sm-12 bmargin').addClass('col-md-8');
3416        $('.mid_section .row-fluid.bpad a').removeClass('btn-block');
3417        $('.mid_section .row-fluid.bpad').removeClass('text-center');
3418        $('.info_section').removeClass('col-sm-12 nopad').addClass('col-sm-3 norpad');
3419        $('.info_section > div.nomargin').addClass('module fpad');
3420        $('.mid_section > div > p').removeClass('text-center');
3421        $('.mid_section h2').removeClass('nomargin');
3422        $('.mid_section a.h3').removeClass('text-center h4 tmargin');
3423        $('.mid_section .view-details').addClass('rmargin');
3424        $('.mid_section .contact-member').addClass('lmargin');
3425        $('.member-search-full-name').addClass('rmargin');
3426        $('.member-search-reviews').addClass('rmargin');
3427        $('.member-search-location').addClass('rmargin rpad');
3428        $('.member-search-company').removeClass('btn-block');
3429        $('.view_phone_number').removeClass('center-block');
3430        $('.search_result_image').removeClass('grid_image');
3431        $('.ex-col-8 h2.h3.bold a.gridA').removeClass('bmargin');
3432        $('.gridBreak').removeClass('gridBreak');
3433        $('.post-search-category').removeClass('text-center').addClass('inline-block');
3434        $('.post-results-star').removeClass('text-center tmargin').addClass(' pull-right');
3435                $('.search_result').removeClass('col-md-4 col-sm-4 col-xs-12 grid').addClass('row-fluid');
3436                $('.grid_element').removeClass('well');
3437        $('.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();
3438        $('h2.h3.bold > a').removeClass('gridA');
3439        $('.grid-container').removeClass('row');
3440        if (map_opened == 1) {
3441            $('.grid-container').removeClass('hidden');
3442            $('.map_container').hide();
3443            map_opened = 0;
3444        }
3445    });
3446
3447    $('.views > i.mapView').click(function () {
3448        $('.clearfix.spacing').remove();
3449        $('.grid-container').addClass('hidden');
3450        $('.map_container').show();
3451        map_opened = 1;
3452        if(typeof initializeGoogleMaps === "function"){
3453            initializeGoogleMaps();
3454        }
3455    });
3456    if (document.getElementById("google-pin") !== null) {
3457        $('.mapView').css('display', 'inline-block');
3458    }
3459    $(document).ready(function () {
3460        if ($('.views .fa:visible').length == 1) {
3461            $('.views').hide();
3462        } else {
3463            $('.views').show();
3464        }
3465    })
3466</script>
3466<script>
3467    const listView = document.getElementsByClassName('listView')[0];
3468    const gridView = document.getElementsByClassName('gridView')[0];
3469    const queryString = {"sized":0,"mysql_real_escape_string_runned":"1","form":"myform","formname":"member_login","dowiz":1,"save":1,"url_origin_pars":"\/digital-products"};
3470    const profId = ``;
3471    const servId =null;
3472    const countryId = ``;
3473    const stateId = ``;
3474    const cityId = ``;
3475    const seed = ``;
3476    const profs = null;
3477    const btnPositionInside = document.querySelector('.grid-container .clickToLoadMoreContainer');
3478    const btnPositionOutside = document.querySelector('.grid-container ~ .clickToLoadMoreContainer');
3479    const amountToSum = 0;
3480    let currentAmountText = document.querySelector('.current__amount__js');
3481    let totalAmount = document.querySelector('.total__js');
3482    let btnClickMore = document.getElementsByClassName('clickToLoadMoreBtn')[0];
3483    let btnClickMoreContainer = document.getElementsByClassName('clickToLoadMoreContainer')[0];
3484    let flagFirstTime = true;
3485    let autoLoadResults = true;
3486    let lastElementPost ;
3487    if(typeof totalAmount !== "undefined" && totalAmount !== null){
3488        let removeCommasAndDots = /[.,\s]/g;
3489        totalAmount = totalAmount.innerHTML.replace(removeCommasAndDots, '');
3490    }
3491    /*event listener*/
3492    if (typeof btnClickMore !== "undefined") {
3493        btnClickMore.addEventListener('click',  function (event) {
3494            let viewIcons = document.querySelectorAll('.views i.gridView.activeView')[0];
3495            let featureDCId = this.dataset.dc;
3496            let currentPage = this.dataset.page;
3497            let dataType = this.dataset.type;
3498            let levId = this.dataset.lvl;
3499            this.dataset.page = parseInt(currentPage) + 1;
3500            let url = `/wapi/widget`;
3501            let currentBTN = this;
3502            let currentHTML = this.innerHTML;
3503            lastElementPost = document.querySelectorAll('.search_result');
3504            this.classList.add('loadingMore');
3505            this.innerHTML = `<i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading...`;
3506            let formData = new FormData();
3507            autoLoadResults=false;
3508            setClassLoaded();
3509
3510            formData.append('dc_id', featureDCId);
3511            formData.append('header_type', 'html');
3512            formData.append('request_type', 'POST');
3513            formData.append('currentPage', currentPage);
3514            formData.append('dataType', dataType);
3515            formData.append('queryString', JSON.stringify(queryString));
3516            formData.append('profId', profId);
3517            formData.append('servId', JSON.stringify(servId));
3518            formData.append('countryId', countryId);
3519            formData.append('stateId', stateId);
3520            formData.append('cityId', cityId);
3521            formData.append('levId', levId);
3522            formData.append('seed', seed);
3523            formData.append('profsPost', JSON.stringify(profs));
3524            formData.append('widget_name', 'Add-On - Bootstrap Theme - Search - Lazy Loader');
3525            let myInit = {
3526                method: 'POST',
3527                body: formData
3528            };
3529            fetch(url, myInit)
3530                .then(function (response) {
3531                    return response.text();
3532                }).then(function (html) {
3533                let parser = new DOMParser();
3534
3535                // Parse the text
3536                let result = parser.parseFromString(html, "text/html");
3537                let newResultsHTML = result.getElementById('grabHTML__js').innerHTML;
3538                autoLoadResults =true;
3539                let amountOfClicks = result.getElementById('grabHTML__js').dataset.pages;
3540
3541                var countBefore = $('.grid-container .search_result').length;
3542
3543                if (typeof btnPositionOutside !== "undefined" && btnPositionOutside !== null) {
3544                    $('.grid-container').append(newResultsHTML);
3545                }
3546                if (typeof btnPositionInside !== "undefined" && btnPositionInside !== null || btnPositionOutside === null && dataType == 13) {
3547                    $('.clickToLoadMoreContainer').before(newResultsHTML);
3548                }
3549
3550                // Fade in only the actually new results
3551                var newCount = $('.grid-container .search_result').length - countBefore;
3552                var $allNew = $('.grid-container .search_result').slice(-newCount);
3553                $allNew.css({opacity: 0, transition: 'opacity 0.4s ease'});
3554
3555                currentBTN.innerHTML = currentHTML; // default html
3556                currentBTN.classList.remove('loadingMore');
3557
3558                if (typeof viewIcons !== 'undefined') {
3559                    applyGridClasses($allNew);
3560                    // Recalculate gridBreak classes and hide clearfix/hr between grid items
3561                    $('.gridBreak').removeClass('gridBreak');
3562                    /* Row-break stride must follow the column class actually on the page, same rule as applyGridClasses */
3563                    var bdGridFourPerRow = $('.grid-container .search_result.col-md-3.grid').length > 0;
3564                    $('.grid-container.visible > hr:nth-of-type(' + (bdGridFourPerRow ? '4n' : '3n') + ')').addClass('gridBreak');
3565                    $('.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();
3566                    if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
3567                        setTimeout(function(){
3568                            $('.grid-container').masonry('appended', $allNew);
3569                            setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
3570                            checkAllImagesLoaded();
3571                        }, 500);
3572                    } else {
3573                        setTimeout(function(){ $allNew.css('opacity', 1); }, 100);
3574                        checkAllImagesLoaded();
3575                    }
3576                } else {
3577                    setTimeout(function(){ $allNew.css('opacity', 1); }, 50);
3578                }
3579                if (typeof favoriteOn == 'function') {
3580                    favoriteOn();
3581                }
3582                if (typeof runRoyalSlider == 'function') {
3583                    runRoyalSlider();
3584                }
3585
3586                setAmountPages(currentBTN, amountOfClicks);
3587                if (typeof currentAmountText !== "undefined" && currentAmountText !== null) {
3588                    let newAmount = parseInt(currentAmountText.innerHTML) + parseInt(amountToSum);
3589                    if (newAmount >= parseInt(totalAmount)) {
3590                        newAmount = document.querySelector('.total__js').innerHTML;
3591                    }
3592                    currentAmountText.innerHTML = newAmount.toString()
3593                }
3594                if (typeof google != "undefined" && google.hasOwnProperty('maps')){
3595                    if (typeof initializeMapSR == 'function') {
3596                        initializeMapSR();
3597                    }else{
3598                        $('.mapView.activeView').click();
3599                    }
3600                }
3601            }).catch((error) => {
3602                console.error('Error:', error);
3603            });
3604        });
3605        // Check if insta_load_btn_behavior is set
3606                // Add a scroll event listener to the window
3607        window.addEventListener('scroll', function() {
3608            userStartedScrolling = true;  // Mark that user has started scrolling
3609            listenToScroll();
3610        });
3611        
3612    }
3613    if (typeof gridView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
3614        gridView.addEventListener('click', function () {
3615            gridView.classList.add('activeView');
3616            if (gridView.classList.contains('activeView')) {
3617                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
3618            } else {
3619                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
3620            }
3621        });
3622    }
3623    if (typeof listView !== "undefined" && typeof btnClickMoreContainer !== "undefined") {
3624
3625        listView.addEventListener('click', function () {
3626            listView.classList.add('activeView');
3627            if (listView.classList.contains('activeView')) {
3628                btnClickMoreContainer.classList.remove('gridBtnLazyLoad');
3629            } else {
3630                btnClickMoreContainer.classList.add('gridBtnLazyLoad');
3631            }
3632        });
3633    }
3634
3635    function setAmountPages(btn, amount) {
3636        if (!("pages" in btn.dataset)) {
3637            btn.dataset.pages = parseInt(amount) - 1; // we do -1 because the one just clicked
3638        } else {
3639            btn.dataset.pages = parseInt(btn.dataset.pages) - 1;
3640        }
3641        if (btn.dataset.pages <= 0) {
3642            removeListenToScroll();
3643            btn.remove();
3644        }
3645    }
3646
3647    function setClassLoaded() {
3648        if (flagFirstTime) {
3649            flagFirstTime = false;
3650            let images = document.querySelectorAll('.grid-container img:not(.loaded)');
3651            images.forEach(image => {
3652                image.classList.add("loaded");
3653            });
3654        }
3655    }
3656    function applyGridClasses($el) {
3657        $el.find('.img_section.col-xs-2').removeClass('col-xs-2').addClass('col-xs-12 bmargin ex-col-2');
3658        $el.find('.img_section.col-sm-3').removeClass('col-sm-3').addClass('col-sm-12 bmargin ex-col-3');
3659        $el.find('.img_section.col-sm-4').removeClass('col-sm-4').addClass('col-sm-12 bmargin ex-col-4');
3660        $el.find('.mid_section.col-sm-9').removeClass('col-sm-9').addClass('col-sm-12 ex-col-9');
3661        $el.find('.mid_section.col-sm-6').removeClass('col-sm-6').addClass('col-sm-12 ex-col-6');
3662        $el.find('.mid_section.col-sm-7').removeClass('col-sm-7').addClass('col-sm-12 nohpad ex-col-7 text-center bpad');
3663        $el.find('.mid_section.col-sm-8').removeClass('col-sm-8').addClass('col-sm-12 ex-col-8 nohpad bpad');
3664        $el.find('.mid_section .post-location-snippet').addClass('text-center');
3665        $el.find('.mid_section.ex-col-7 .sm-block').addClass('show');
3666        $el.find('.mid_section .row-fluid.bpad .col-md-8').removeClass('col-md-8').addClass('col-sm-12 bmargin');
3667        $el.find('.mid_section .row-fluid.bpad a').addClass('btn-block');
3668        $el.find('.mid_section .row-fluid.bpad').addClass('text-center');
3669        $el.find('.info_section').removeClass('col-sm-3 norpad').addClass('col-sm-12 nopad');
3670        $el.find('.mid_section > div > p').addClass('text-center');
3671        $el.find('.mid_section h2').addClass('nomargin');
3672        $el.find('.mid_section a.h3').addClass('text-center h4 tmargin');
3673        $el.find('.mid_section .view-details').removeClass('rmargin');
3674        $el.find('.mid_section .contact-member').removeClass('lmargin');
3675        $el.find('.member-search-full-name').removeClass('rmargin');
3676        $el.find('.member-search-reviews').removeClass('rmargin');
3677        $el.find('.member-search-location').removeClass('rmargin rpad');
3678        $el.find('.member-search-company').addClass('btn-block');
3679        $el.find('.view_phone_number').addClass('center-block');
3680        $el.find('.phone_number').addClass('btn-block');
3681        $el.find('.search_result_image').addClass('grid_image');
3682        $el.find('.post-search-category').removeClass('inline-block').addClass('text-center');
3683        $el.find('.post-results-star').removeClass('pull-right').addClass('text-center tmargin');
3684        /* 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) */
3685        if ($('.grid-container .search_result.col-md-3.grid').not($el).length > 0) {
3686            $el.addClass('col-xs-12 col-sm-3 col-md-3 grid').removeClass('row-fluid');
3687        } else {
3688            $el.addClass('col-xs-12 col-sm-4 col-md-4 grid').removeClass('row-fluid');
3689        }
3690        $el.find('.grid_element').addClass('well xs-center-block');
3691        $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();
3692        $el.find('h2.h3.bold > a').addClass('gridA');
3693        $el.find('.info_section .module').removeClass('module fpad');
3694    }
3695
3696    function refreshUI(){
3697        if (typeof masonry_opened !== 'undefined' && masonry_opened == 1) {
3698            $('.grid-container').masonry('layout');
3699        }
3700    }
3701    function checkAllImagesLoaded() {
3702        let images = document.querySelectorAll('.grid-container img:not(.loaded)');
3703        let countImg = 0;
3704
3705        if (images.length === 0) {
3706            refreshUI();
3707            return;
3708        }
3709
3710        images.forEach(image => {
3711            image.classList.add("loaded");
3712
3713            if (image.complete) {
3714                countImg++;
3715                if (countImg === images.length) {
3716                    refreshUI();
3717                }
3718                return;
3719            }
3720
3721            image.addEventListener('load', () => {
3722                countImg++;
3723                if (countImg === images.length) {
3724                    refreshUI()
3725                }
3726            });
3727            image.addEventListener('error', () => {
3728                countImg++;
3729                if (countImg === images.length) {
3730                    refreshUI()
3731                }
3732            });
3733        });
3734
3735    }
3736
3737    // Variables
3738    let userStartedScrolling = false;  // Flag to check if the user has started scrolling
3739    let wasPreviouslyInViewport = false;  // To track if the button was in the viewport previously
3740
3741
3742    // Function to remove the scroll event listener
3743    function removeListenToScroll(){
3744        window.removeEventListener('scroll', listenToScroll);
3745    }
3746
3747    // Function to check button visibility and load content
3748    function listenToScroll() {
3749        const isInViewport = isElementInViewport(btnClickMore);
3750
3751        // Check if the button has just entered the viewport
3752        const justEnteredViewport = !wasPreviouslyInViewport && isInViewport;
3753
3754        // If button just entered the viewport, user has started scrolling, and autoLoadResults is true
3755        if (userStartedScrolling && justEnteredViewport && autoLoadResults) {
3756            // Add a delay (2 seconds) before automatically clicking the button to load content
3757            setTimeout(function() {
3758                btnClickMore.click();
3759                autoLoadResults = false; // Set the flag too false to avoid subsequent auto-clicks
3760            }, 2000);
3761        }
3762
3763        // If the button is out of the viewport, reset autoLoadResults
3764        if (!isInViewport) {
3765            autoLoadResults = true;
3766        }
3767
3768        // Update the previous viewport status for the next check
3769        wasPreviouslyInViewport = isInViewport;
3770    }
3771
3772    // Function to determine if a DOM element is in the viewport
3773    function isElementInViewport(el) {
3774        const rect = el.getBoundingClientRect();
3775        return (
3776            rect.top >= 0 &&
3777            rect.left >= 0 &&
3778            rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
3779            rect.right <= (window.innerWidth || document.documentElement.clientWidth)
3780        );
3781    }
3782
3783</script>
vendor: 2 bytes, line 3783
3783
3784<script type="text/javascript">
3785
3786
3787
3788    //function to get url GET parameters
3789    function getUrlParameter(sParam) {
3790        var sPageURL = window.location.search.substring(1);
3791        var sURLVariables = sPageURL.split('&');
3792
3793        for (var i = 0; i < sURLVariables.length; i++) {
3794            var sParameterName = sURLVariables[i].split('=');
3795            if (sParameterName[0] == sParam) {
3796                return decodeURIComponent(sParameterName[1]);
3797            }
3798        }
3799    }
3800
3801    //stating variables for the first initialize of the sidebar map
3802    var mapSR;
3803    var geocoder;
3804    var mapSRLat = parseFloat(getUrlParameter('lat'));
3805    var mapSRLng = parseFloat(getUrlParameter('lng'));
3806    var theZoom = 8;
3807    var bounds;
3808    if (isNaN(mapSRLat) || isNaN(mapSRLng)) {
3809
3810        mapSRLat = parseFloat(42.877742);
3811        mapSRLng = parseFloat(-97.380979);
3812        theZoom = parseFloat('6');
3813    }
3814    //function that initializes the creation of the google map
3815    function setJsMapSR(element=null) {
3816        if (window['setJsMapSR_var'] ===true) {
3817            return;
3818        }
3819        if(element == null){
3820            element = document.getElementById('map-canvas');
3821            if (element === null) {
3822                element = document.querySelector('div[data-id]');
3823            }
3824        }
3825        window['setJsMapSR_var']=true;
3826        
3827        let mapDivElement = element;
3828        if (typeof mapDivElement !== undefined && mapDivElement != null) {
3829            var mapSROptions = {
3830                center: {lat: mapSRLat, lng: mapSRLng},
3831                mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']},
3832                mapTypeControl: false,
3833                zoom: theZoom,
3834                controlSize: 26,
3835                mapSRTypeControl: false,
3836                streetViewControl: false,
3837                scrollwheel: false
3838            };
3839            mapSR = new google.maps.Map(mapDivElement, mapSROptions);
3840            
3841            //This piece of code will create an autosuggest for every input with the class "googleSuggest"
3842            var counter = 1;
3843            var inputsArray = [];
3844            initializeMapSR(); // add markers
3845        }
3846    }
3847
3848    function isFloat(value) {
3849        value = parseFloat(value);
3850        if (
3851            typeof value === 'number' &&
3852            !Number.isNaN(value) &&
3853            !Number.isInteger(value)
3854        ) {
3855            return true;
3856        }
3857
3858        return false;
3859    }
3860
3861    function initializeMapSR() {
3862        //the markers process will only happen if there are spans with the class "google-pin-location"
3863        if ($('.google-pin-location:not(".marker-pin")').length > 0) {
3864            //array with all the markers
3865            var markersArray = [];
3866            // variable to close the last window
3867            var closeLastWindows = null;
3868            if (window['google_bounds'] != true) {
3869                window['google_bounds'] = true;
3870                bounds = new google.maps.LatLngBounds();
3871            }
3872            //function that will set a marker on the map for each user location
3873            $('.google-pin-location:not(".marker-pin")').each(function () {
3874                $(this).addClass('marker-pin');
3875                if( !isFloat($(this).attr("data-lat"))  ||  !isFloat($(this).attr("data-lng"))){
3876                    return;
3877                }
3878
3879                // Making the icon
3880                var iconImage = '/images/marker.png';
3881                //var markerLatLng = parseFloat($(this).attr("data-lat"))+","+parseFloat($(this).attr("data-lng"));
3882                var markerLatLng = {lat:parseFloat($(this).attr("data-lat")),lng:parseFloat($(this).attr("data-lng"))};
3883                var markerName = $(this).attr("data-name");
3884                var marker = new google.maps.Marker({
3885                    position: markerLatLng,
3886                    map: mapSR,
3887                    icon: iconImage,
3888                    title: markerName
3889                });
3890                bounds.extend(markerLatLng);
3891                var hideLink = $(this).attr('data-hideMessages');
3892                                marker['infowindow'] = new google.maps.InfoWindow({
3893                    content: `<div class="info_window feature">
3894                                    <a href=` + $(this).attr("data-filename") + `>
3895                                        <img class="img-rounded" src="` + $(this).attr("data-photo") + `">
3896                                    </a>` + `
3897                                    <a class="vmargin h5 bold" href=` + $(this).attr("data-filename") + `>`
3898                        + $(this).attr("data-name") +
3899                        `</a>` +
3900                        `<a class="btn btn-xs btn-success btn-block view_profile" href=` + $(this).attr("data-filename") + `>
3901                                        View More
3902                                    </a>` +
3903                        `</div>`
3904                });
3905                                // assuming you also want to hide the infowindow when user mouses-out
3906
3907                function closeInfoWindows() {
3908                    if (closeLastWindows != null) {
3909                        closeLastWindows.close();
3910                    }
3911                }
3912
3913                var typeOfListener = 'mouseover'; // by default for desktop
3914                                google.maps.event.addListener(marker, typeOfListener, function () {
3915                    if (window['mapCloseTimeout']) {
3916                        clearTimeout(window['mapCloseTimeout']);
3917                    }
3918                    closeInfoWindows();
3919                    closeLastWindows = this['infowindow'];
3920                    this['infowindow'].open(mapSR, this);
3921                });
3922
3923                // Close infowindow when mouse leaves the marker (desktop only)
3924                if (typeOfListener === 'mouseover') {
3925                    google.maps.event.addListener(marker, 'mouseout', function () {
3926                        var self = this;
3927                        window['mapCloseTimeout'] = setTimeout(function () {
3928                            self['infowindow'].close();
3929                            if (closeLastWindows === self['infowindow']) {
3930                                closeLastWindows = null;
3931                            }
3932                        }, 300);
3933                    });
3934                }
3935
3936            });
3937
3938            // Keep infowindow open when mouse hovers over its content (desktop only)
3939            $(document).on('mouseenter', '.gm-style-iw', function () {
3940                if (window['mapCloseTimeout']) {
3941                    clearTimeout(window['mapCloseTimeout']);
3942                }
3943            }).on('mouseleave', '.gm-style-iw', function () {
3944                if (closeLastWindows != null) {
3945                    closeLastWindows.close();
3946                    closeLastWindows = null;
3947                }
3948            });
3949
3950            mapSR.fitBounds(bounds);
3951        }
3952        if ($('#map-canvas').length > 0) {
3953            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>";
3954            $('body').append(cssHideLogo);
3955
3956        } else {
3957            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>";
3958            $('body').append(cssHideLogo);
3959        }
3960    }
3961
3962    function showPhone(elemente) {
3963  $(elemente).addClass("hide").siblings().removeClass("hide");
3964}
3965    function initGMap() {
3966		
3967			// Check if the map is loaded.
3968			const mapIconView = document.querySelector('.mapView');
3969			if (typeof mapIconView !== undefined && mapIconView != null) {
3970				mapIconView.addEventListener('click', initGMap);
3971				mapIconView.removeEventListener('click', initGMap);
3972			}
3973			const mapDivID = document.getElementById('map-canvas');
3974
3975			if (typeof google === 'object' && google.hasOwnProperty('maps')) {
3976				// Set the map source.
3977				setJsMapSR(mapDivID);
3978			} else {
3979				// If the map is not loaded, wait for it to load before setting the source.
3980				googleMapOnFormClick().then(() => {
3981					setJsMapSR(mapDivID);
3982				});
3983			}
3984
3985			    }
3986
3987    window.addEventListener('load', () => {
3988        // Get the lazy map div, either by data-id or by ID.
3989        const lazyMapDiv = document.querySelector('div[data-id]')
3990        const mapDivID = document.getElementById('map-canvas');
3991        // Add a delay to allow the map to load before initializing it.
3992        setTimeout(() => {
3993            // Check if the map div exists.
3994            if (typeof lazyMapDiv !== "undefined" && lazyMapDiv !== null) {
3995                lazyMapDiv.id = lazyMapDiv.dataset.id;
3996                let mapIconView = document.querySelector('.mapView');
3997                if (typeof mapIconView !== undefined && mapIconView != null) {
3998                    mapIconView.addEventListener('click', initGMap);
3999                    // If map view is already active, initialize immediately
4000                    if (mapIconView.classList.contains('activeView')) {
4001                        initGMap();
4002                    }
4003                }
4004            } else if (typeof mapDivID !== "undefined" || mapDivID !== null) {
4005                // Initialize the map.
4006                initGMap();
4007            }
4008        }, 500);
4009    });
4010</script>
4010    <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 4010-4011
4010
4011    <script async src="https://www.googletagmanager.com/gtag/js?id=
4011G-H5QFVWCYJM
vendor: 17 bytes, lines 4011-4012
4011"></script>
4012    
4012<script>
4013        
vendor: 154 bytes, lines 4013-4016
4013window.dataLayer = window.dataLayer || [];
4014        function gtag(){dataLayer.push(arguments);}
4015        gtag('js', new Date());
4016        gtag('config', '
4016G-H5QFVWCYJM
vendor: 9 bytes, lines 4016-4017
4016');
4017    
4017</script>
4017
4018
4019        
4019<script type="text/javascript">
4020    /* CT dissolved its county governments in 1960, so Google returns its 8 counties as
4021       colloquial_area instead of administrative_area_level_2 — they must never reach a
4022       city field. Google translates the component name to the site language, so the
4023       language-stable place_id is checked first and the word list only backs it up. */
4024    if (typeof window.bdIsColloquialCounty !== 'function') {
4025        window.bdIsColloquialCounty = function (componentName, resultPlaceId) {
4026            var countyPlaceIds = [
4027                'ChIJWRM2Nakw5okRoTCxHvz_5xw', /* Middlesex County, CT */
4028                'ChIJmeTbuDYH6IkR3xgeNvszpgg', /* Fairfield County, CT */
4029                'ChIJiT24cvvP54kR2fSPHkp0Akc', /* New Haven County, CT */
4030                'ChIJvYe7N7eQ54kRL6nZaXRwPkI', /* Litchfield County, CT */
4031                'ChIJtxC3p6qs54kRIvK-2bctar0', /* Hartford County, CT */
4032                'ChIJj-lvZQli5okRGCuGRd6xKt0', /* Tolland County, CT */
4033                'ChIJRWKqeLdi5okRLXWDlSEGeTY', /* Windham County, CT */
4034                'ChIJwTIQbvVv5okRU5_gSJczUTQ'  /* New London County, CT */
4035            ];
4036
4037            if (typeof resultPlaceId === 'string' && resultPlaceId !== ''
4038                && countyPlaceIds.indexOf(resultPlaceId) !== -1) {
4039                return true;
4040            }
4041
4042            if (typeof componentName !== 'string' || componentName === '') {
4043                return false;
4044            }
4045
4046            var name = componentName.toLowerCase();
4047
4048            /* Only unambiguous county words — generic ones (region, district) would strip
4049               legitimate colloquial areas, and their languages already match on place_id.
4050               Word-boundary matched so names like "Countyline, OK" are left alone. */
4051            var wordTokens = ['county', 'condado', 'comté', 'contea',
4052                              'comitatul', 'hrabstwo', 'megye', 'konderria'];
4053            var isAlnum = function (ch) {
4054                return (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9');
4055            };
4056
4057            for (var t = 0; t < wordTokens.length; t++) {
4058                var token = wordTokens[t];
4059                var from = 0;
4060                while (true) {
4061                    var at = name.indexOf(token, from);
4062                    if (at === -1) {
4063                        break;
4064                    }
4065                    var before = (at > 0) ? name.charAt(at - 1) : ' ';
4066                    var after = ((at + token.length) < name.length) ? name.charAt(at + token.length) : ' ';
4067                    if (!isAlnum(before) && !isAlnum(after)) {
4068                        return true;
4069                    }
4070                    from = at + 1;
4071                }
4072            }
4073
4074            /* Non-latin scripts have no alphanumeric word boundary. */
4075            var scriptTokens = ['каунти', 'کاؤنٹی', 'काउंटी', '카운티'];
4076            for (var s = 0; s < scriptTokens.length; s++) {
4077                if (name.indexOf(scriptTokens[s]) !== -1) {
4078                    return true;
4079                }
4080            }
4081
4082            return false;
4083        };
4084    }
4085
4086            // Try to load coordinates from sessionStorage on page load
4087            var vlat        = 0;
4088            var vlon        = 0;
4089            try {
4090                var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4091                var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4092                if (savedLat && savedLon) {
4093                    vlat = parseFloat(savedLat);
4094                    vlon = parseFloat(savedLon);
4095                }
4096            } catch(e) {}
4097            var isSubmit    = false;
4098            var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests
4099            
4100            // Function to save coordinates to sessionStorage
4101            function saveCoordinatesToSession(lat, lon) {
4102                try {
4103                    sessionStorage.setItem('bd_geolocation_lat', lat.toString());
4104                    sessionStorage.setItem('bd_geolocation_lon', lon.toString());
4105                } catch(e) {}
4106            }
4107            
4108            // Function to get coordinates from sessionStorage if current ones are 0
4109            function getCoordinatesFromSession() {
4110                if (vlat === 0 && vlon === 0) {
4111                    try {
4112                        var savedLat = sessionStorage.getItem('bd_geolocation_lat');
4113                        var savedLon = sessionStorage.getItem('bd_geolocation_lon');
4114                        if (savedLat && savedLon) {
4115                            vlat = parseFloat(savedLat);
4116                            vlon = parseFloat(savedLon);
4117                            return true;
4118                        }
4119                    } catch(e) {}
4120                }
4121                return false;
4122            }
4123            var cityTypes       = [
4124                'colloquial_area',
4125                'locality',
4126                'sublocality',
4127                'sublocality_level_1',
4128                'sublocality_level_2',
4129                'sublocality_level_3',
4130                'sublocality_level_4',
4131                'sublocality_level_5',
4132                'neighborhood',
4133                'ward',
4134                'postal_town'
4135            ];
4136
4137            var postalTypes = [
4138                'postal_code',
4139                'postal_code_prefix',
4140                'postal_code_suffix',
4141                'street_number',
4142                'premise',
4143                'subpremise',
4144                'route',
4145                'intersection',
4146                'street_address',
4147                'floor',
4148                'room',
4149                'post_box',
4150                'delivery_address'
4151            ];
4152
4153            var isSubmitting = false;
4154            window.cachedSelectedOption = [{ 'typed_location': '' }];
4155            window.isSubmittingMainSearch = false;
4156
4157            document.addEventListener('DOMContentLoaded', () => {
4158                let isSubmitting = false; // Add flag at the top level
4159
4160                setTimeout(()=>{
4161                    let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location');
4162                    if (typeof googleSuggestForm != "undefined") {
4163                        for (let i = 0; i < googleSuggestForm.length; i++) {
4164                            let closestForm = googleSuggestForm[i].closest('form');
4165                            if(typeof closestForm != "undefined" && closestForm != null){
4166                                closestForm.addEventListener('focusin', googleMapOnFormClick, false);
4167
4168                            }else{
4169                                googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false);
4170                            }
4171                                googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false);
4172                            }
4173                        }
4174                },200);
4175
4176                $('.website-search button[type=submit]').click(async function (e) {
4177                    e.preventDefault(); // Prevent the default submit action
4178                    var nativeForm = $(this).closest('form')[0];
4179                    if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
4180                        return false;
4181                    }
4182                    await googleMapOnFormClick();
4183                    $(this).closest('form').submit();
4184                });
4185            });
4186             window['gmapClick'] = false;
4187            function googleMapOnFormClick() {
4188                if(window.gmapClick){
4189                    return;
4190                }
4191                window.gmapClick = true;
4192                
4193                return new Promise((resolve, reject) => {
4194                    window.isSubmittingMainSearch = false;
4195                    let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location');
4196                    let mapUri = "https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places&region=US&callback=initializeG&language=en&key=AIzaSyDLfIFCadYRlPw-NNbNe3O9P4s3Kurv_Ao";
4197                    
4198                    if (typeof google !== "undefined" && google.hasOwnProperty('maps')) {
4199                        resolve('already loaded');
4200                        return;
4201                    }
4202
4203                    let loadMapScriptAsync = function (uri) {
4204                        return new Promise((resolve, reject) => {
4205                            let script = document.createElement('script');
4206                            script.type = 'text/javascript';
4207                            script.src = uri;
4208                            script.async = true;
4209                            script.onload = function () {
4210                                resolve("ok");
4211                            };
4212                            script.onerror = function () {
4213                                reject("Failed to load Google Maps script.");
4214                            };
4215                            document.head.appendChild(script);
4216                        });
4217                    };
4218
4219                        loadMapScriptAsync(mapUri)
4220                            .then(() => {
4221                                resolve();
4222                            })
4223                            .catch((error) => {
4224                                console.error(error);
4225                                reject();
4226                            });
4227                  
4228                });
4229            }
4230
4231            function initializeG() {
4232                var geocoder;
4233                //This piece of code will create an autosuggest for every input with the class "googleSuggest"
4234                var counter = 1;
4235                var inputsArray = [];
4236                window.cachedSelectedOption = [{ 'typed_location': '' }];
4237                let mapExists = document.querySelectorAll('[id^="map"]').length > 0;
4238                const functionsToInvoke = {
4239                    setJsMap: true,
4240                    setJsMapOverview: mapExists,
4241                    setJsMapSR: mapExists,
4242                    setJsMapSidebar: mapExists
4243                };
4244                if (window['maps_loaded'] !== true) {
4245                    for (let func in functionsToInvoke) {
4246                        if (typeof window[func] === 'function' && functionsToInvoke[func]) {
4247                            window['maps_loaded'] = true;
4248                            window[func]();
4249                        }
4250                    }
4251                }
4252                $(".googleSuggest").each(function () {
4253                    //get the id from the input to be the unique identifier for each autocomplete
4254                    var inputId = $(this).attr("id");
4255                    var inputElement = $(this);
4256                    inputsArray[counter] = /** @type {HTMLInputElement} */(
4257                        document.getElementById('' + inputId));
4258                    const mainCountry = '';
4259                    const inputOptions = {
4260                        fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
4261                        types: ['geocode']
4262                    }
4263                    const language = "en";
4264
4265                    if (language) {
4266                        inputOptions.language = language;
4267                    }
4268                    if (mainCountry) {
4269                        inputOptions.componentRestrictions = {country: mainCountry};
4270                        inputOptions.region = mainCountry;
4271                    }
4272
4273                    var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions);
4274                    google.maps.event.addListener(autocomplete, 'place_changed', function () {
4275                        const place = autocomplete.getPlace();
4276
4277                        cachedSelectedOption = [];
4278                        cachedSelectedOption.push(place);
4279
4280                        cachedSelectedOption[0]['typed_location'] = inputElement.val();
4281                       /* if(cachedSelectedOption[0]['adr_address']){
4282                            let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, '');
4283                            cachedSelectedOption[0]['typed_location'] = cleanLocation;
4284                            inputElement.val(cleanLocation);
4285                        }*/
4286                        if (cachedSelectedOption[0]['address_components'] == undefined) {
4287                            cachedSelectedOption = [];
4288                            var emptyObj = {
4289                                'typed_location': ''
4290                            };
4291                            cachedSelectedOption.push(emptyObj);
4292                        }
4293                    });
4294                    //the code that prevents the submition when hit enter on a google location autocomplete item
4295                    inputElement.keydown( function (e) {
4296                        if (e.keyCode == 13) {
4297                            var pacCounter = 0;
4298                            //need to run a loop to check each pac container
4299                            $('.pac-container').each(function () {
4300
4301                                if ($(this).css("display") != "none") {
4302                                    pacCounter++;
4303                                }
4304                            });
4305                            if (pacCounter > 0) {
4306                                e.preventDefault();
4307                            }
4308                        }
4309                    });
4310                    counter++;
4311                });
4312
4313                //triggers every time a form with the id website-search is trigered
4314                $('.website-search').submit(function (e) {
4315
4316                    var currentForm = $(this);
4317                    var locationInput = $(this).find(".googleLocation");
4318                    var $submitButton = currentForm.find('input[type=submit], button[type=submit]');
4319
4320
4321                    if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') {
4322
4323                        // Set submitting flag
4324                        window.isSubmittingMainSearch = true;
4325                        $submitButton.prop('disabled', true);
4326
4327                        e.preventDefault();
4328                        //this variable has the main country of the site
4329                        var form = currentForm;
4330                        var urlGET = form.serialize();
4331                        var formActionUrl = form.attr("action");
4332                        var locationValue = locationInput.val();
4333
4334
4335
4336                        const mainCountry = '';
4337                        const inputOptions = {
4338                            address:locationValue
4339                        }
4340                        const language = "en";
4341
4342                        if (language) {
4343                            inputOptions.language = language;
4344                        }
4345                        if (mainCountry) {
4346                            inputOptions.componentRestrictions = {country: mainCountry};
4347                            inputOptions.region = mainCountry;
4348                        }
4349
4350                        if (typeof cachedSelectedOption == 'undefined') {
4351                            var emptyForm = {
4352                                'typed_location': ''
4353                            };
4354                            cachedSelectedOption.push(emptyForm);
4355                        }
4356
4357                        if (locationValue != cachedSelectedOption[0]['typed_location']) {
4358                            geocoder = new google.maps.Geocoder();
4359                            geocoder.geocode(inputOptions, function (results, status) {
4360
4361                                //if the google response of the geocoding was successful it will use that info to build the url for the new search
4362                                if (status == google.maps.GeocoderStatus.OK) {
4363                                    parseInfoToSearch(results, urlGET, formActionUrl);
4364
4365                                } else {
4366                                    var urlPath = formActionUrl;
4367                                    var redirect = urlPath + "?" + urlGET;
4368                                    //will redirect the page using the new url that has been constructed
4369                                    window.location.href = redirect;
4370                                }
4371                            });
4372
4373                        } else {
4374                            parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl);
4375                        }
4376                    }
4377                });
4378
4379
4380                //check if a map has been loaded
4381                if ($('#map-canvas').length > 0) {
4382                    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>";
4383                    $('body').append(cssHideLogo);
4384                } else {
4385                    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>";
4386                    $('body').append(cssHideLogo);
4387                }
4388
4389                if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") {
4390                    populateSearchFields();
4391                }
4392
4393                if($('.googleSuggest').val() == ""){
4394                    populateSearchFields();
4395                }
4396                
4397                var geocodeVisitorsSetting = '1';
4398                var geocodingMethod = 'HTML5';
4399
4400                //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
4401
4402                var vlon = '';
4403                var vlat = '';
4404            }
4405
4406            function switchPlaceID(placeId,urlGET, formActionUrl) {
4407                let request = {
4408                    placeId: placeId,
4409                    fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'],
4410                };
4411
4412                let service = new google.maps.places.PlacesService(document.createElement('div'));
4413                service.getDetails(request, function(place, status) {
4414                    if (status === google.maps.places.PlacesServiceStatus.OK) {
4415                        let dataArray = [];
4416                        dataArray.push(place);
4417                        parseInfoToSearch(dataArray, urlGET, formActionUrl);
4418                    } else {
4419                        console.error('Place details request failed with status:', status);
4420                    }
4421                });
4422            }
4423
4424            function parseInfoToSearch(results, urlGET, formActionUrl) {
4425                var urlSearchParams = new URLSearchParams(urlGET);
4426                var parameters = {};
4427                var addressComponentsArray = [];
4428                if (results.length > 1) {
4429                    if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){
4430                        let tempResult = results[0];
4431                        results[0] = results[1];
4432                        results[1] = tempResult;
4433                    }
4434                    for (let i = 0; i < results.length; i++) {
4435                        if (results[i].types[0] === 'natural_feature' ||
4436                            results[i].types[0] === 'airport' ||
4437                            results[i].types[0] === 'point_of_interest' ||
4438                            results[i].types[0] === 'establishment' ||
4439                            results[i].types[0] === 'political' ||
4440                            results[i].types[0] === 'park') {
4441                            results.splice(i, 1);
4442                        }
4443                    }
4444                }
4445                var adComLength = results[0].address_components.length;
4446
4447                if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){
4448                    switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl);
4449                    return;
4450                }
4451                sessionStorage.setItem("google_result",JSON.stringify(results));
4452
4453                
4454                var foundPostalType     = results[0].types.find(type => postalTypes.includes(type));
4455                var foundCityType       = results[0].types.find(type => cityTypes.includes(type));
4456
4457                //loop that will build the array with the address components and will get the short name of country and administrative area level 1
4458                for (var i = 0; i < adComLength; i++) {
4459
4460                    if (results[0].address_components[i]['types'][0] == "country") {
4461                        parameters.country_sn = results[0].address_components[i]['short_name'];
4462                    }
4463                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
4464                        parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name'];
4465                    }
4466                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
4467                        parameters.stateSearchLN = results[0].address_components[i]['long_name'];
4468                    }
4469                    if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") {
4470                        /* short_name is what the service-area writer stores in
4471                           service_areas.county_sn, so the search must send the same
4472                           form or county matching breaks wherever short != long. */
4473                        parameters.county_sn = results[0].address_components[i]['short_name'];
4474                    }
4475                    if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) {
4476                        var addrType = results[0].address_components[i]['types'][0];
4477                        var addrLong = results[0].address_components[i]['long_name'];
4478                        /* CT counties come back as colloquial_area — keep them out of parameters.city. */
4479                        if (addrType !== 'colloquial_area'
4480                            || !window.bdIsColloquialCounty(addrLong, results[0].place_id)) {
4481                            parameters.city = addrLong;
4482                        }
4483                    }
4484                    if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") {
4485                        parameters.postal_code = results[0].address_components[i]['long_name'];
4486                    }
4487                }
4488
4489
4490                // Filter out 'political' from result types - use more specific type when available
4491                // Same pattern as BD-directory-maps-typePolitical (PR #5642)
4492                if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') {
4493                    results[0].types.splice(0, 1);
4494                }
4495
4496                // Pick the most specific type from results, skip "political" (too generic)
4497                parameters.location_type = results[0].types[0];
4498                for (var t = 0; t < results[0].types.length; t++) {
4499                    if (results[0].types[t] != 'political') {
4500                        parameters.location_type = results[0].types[t];
4501                        break;
4502                    }
4503                }
4504
4505                // When searching by city/locality, omit postal_code — Google returns
4506                // a partial zip prefix that doesn't match all members in the city
4507                if (parameters.location_type == 'locality' && parameters.postal_code) {
4508                    delete parameters.postal_code;
4509                }
4510
4511                if (parameters.adm_lvl_1_sn != '') {
4512                    parameters.stateSearch = parameters.adm_lvl_1_sn;
4513                }
4514                if (parameters.country_sn == "GB") {
4515                    delete parameters.adm_lvl_1_sn;
4516                }
4517
4518                //will check if the response had the bounds parameters
4519                //if it had it will add the south west and north east parameters to the new url
4520                if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) {
4521
4522                    if (results[0].geometry.hasOwnProperty('bounds')) {
4523                        var boundsResponse = results[0].geometry.bounds;
4524
4525                    } else {
4526                        var boundsResponse = results[0].geometry.viewport;
4527                    }
4528                    parameters.swlat = boundsResponse.getSouthWest
4528().lat();
4529                    parameters.nelat = boundsResponse.getNorthEast().lat();
4530                    parameters.swlng = boundsResponse.getSouthWest().lng();
4531                    parameters.nelng = boundsResponse.getNorthEast().lng();
4532
4533                    //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
4534                } else {
4535                    parameters.fsearch = "radius";
4536                }
4537                var locationCenterResponse = results[0].geometry.location;
4538                parameters.lat = locationCenterResponse.lat();
4539                parameters.lng = locationCenterResponse.lng();
4540                parameters.faddress = results[0].formatted_address;
4541                parameters.place_id = results[0].place_id;
4542                var formatParameters = $.param(parameters);
4543                urlGET = urlGET + "&" + formatParameters;
4544                var urlPath = formActionUrl;
4545                var redirect = urlPath + "?" + urlGET;
4546                //will redirect the page using the new url that has been constructed
4547                window.location.href = redirect;
4548            }
4549            function populateSearchFields() {
4550                var prePopulateLocationSetting = '1';
4551                var geolocationMethod = 'HTML5';
4552
4553                // If geolocation is in progress and we don't have coordinates yet, wait a bit
4554                if (isGettingLocation && (vlat === 0 || vlon === 0)) {
4555                    var waitStartTime = performance.now();
4556                    var waitInterval = setInterval(function() {
4557                        if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) {
4558                            clearInterval(waitInterval);
4559                            // Retry after a short delay to ensure coordinates are set
4560                            setTimeout(function() {
4561                                populateSearchFields();
4562                            }, 100);
4563                        } else if ((performance.now() - waitStartTime) > 10000) {
4564                            // Timeout after 10 seconds - try sessionStorage
4565                            clearInterval(waitInterval);
4566                            if (getCoordinatesFromSession()) {
4567                                setTimeout(function() {
4568                                    populateSearchFields();
4569                                }, 100);
4570                            }
4571                        }
4572                    }, 200);
4573                    return;
4574                }
4575
4576                // If coordinates are 0, try to get from sessionStorage
4577                if (vlat === 0 || vlon === 0) {
4578                    getCoordinatesFromSession();
4579                }
4580
4581                // Validate coordinates first
4582                var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180);
4583                
4584                if (!hasValidCoordinates) {
4585                    return;
4586                }
4587
4588                //if set to one will get the lat and lng to do reverse geocoding
4589                if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) {
4590                    var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon));
4591                    var visitorGeocoder = new google.maps.Geocoder();
4592                    var formattedAddress = [];
4593                    var preFormattedStructure = {
4594                        "locality": "long_name",
4595                        "administrative_area_level_2": "long_name",
4596                        "administrative_area_level_1": "long_name",
4597                        "country": "long_name"
4598                    };
4599                    visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) {
4600                        //if the google response of the geocoding was successful it will use that info to build the url for the new search
4601                        if (status == google.maps.GeocoderStatus.OK) {
4602                            window.cachedSelectedOption = results;
4603                            $.each(preFormattedStructure, function (findex, fvalue) {
4604                                $.each(results[0].address_components, function (rindex, rvalue) {
4605                                    if (rvalue.types[0] == findex) {
4606                                        formattedAddress.push(rvalue.long_name);
4607                                    }
4608                                });
4609                            });
4610                            $('.googleSuggest').each(function () {
4611                                if ($(this).val() == '') {
4612                                    if (formattedAddress.length > 0) {
4613                                        $(this).val(formattedAddress.join(', '));
4614                                        clearContent($(this));
4615                                    }
4616                                }
4617                            });
4618                        } else {
4619                            $('.googleSuggest').each(function () {
4620                                $(this).val('');
4621                            });
4622                        }
4623                    });
4624                }
4625            }
4626            function showError(error) {
4627                switch (error.code) {
4628                    case error.PERMISSION_DENIED:
4629                    case 1: // PERMISSION_DENIED
4630                        $('.fill_location.clicked').popover({
4631                            content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`,
4632                            container: 'body'
4633                        });
4634                        $('.fill_location.clicked').popover('toggle');
4635                        setTimeout(function () {
4636                            $('.fill_location.clicked').popover('hide');
4637                            $('.fill_location.clicked').removeClass('clicked');
4638                        }, 4000);
4639                        break;
4640                    case error.POSITION_UNAVAILABLE:
4641                    case 2: // POSITION_UNAVAILABLE
4642                        $('.fill_location.clicked').popover({
4643                            content: `Location information is unavailable. Please check your device location settings.`,
4644                            container: 'body'
4645                        });
4646                        $('.fill_location.clicked').popover('toggle');
4647                        setTimeout(function () {
4648                            $('.fill_location.clicked').popover('hide');
4649                            $('.fill_location.clicked').removeClass('clicked');
4650                        }, 4000);
4651                        break;
4652                    case error.TIMEOUT:
4653                    case 3: // TIMEOUT
4654                        $('.fill_location.clicked').popover({
4655                            content: `Location request timed out. Please ensure location services are enabled and try again.`,
4656                            container: 'body'
4657                        });
4658                        $('.fill_location.clicked').popover('toggle');
4659                        setTimeout(function () {
4660                            $('.fill_location.clicked').popover('hide');
4661                            $('.fill_location.clicked').removeClass('clicked');
4662                        }, 4000);
4663                        break;
4664                    case error.UNKNOWN_ERROR:
4665                    default:
4666                        $('.fill_location.clicked').popover({
4667                            content: `An error occurred while getting your location. Please try again.`,
4668                            container: 'body'
4669                        });
4670                        $('.fill_location.clicked').popover('toggle');
4671                        setTimeout(function () {
4672                            $('.fill_location.clicked').popover('hide');
4673                            $('.fill_location.clicked').removeClass('clicked');
4674                        }, 4000);
4675                        break;
4676                }
4677            }
4678            if (navigator.geolocation) {
4679                if ($(".googleSuggest")[0]) {
4680                    $(document).on('click', '.fill_location', function getCXPosition() {
4681                        // Prevent multiple simultaneous geolocation requests
4682                        if (isGettingLocation) {
4683                            return;
4684                        }
4685                        
4686                        var $button = $(this);
4687                        $button.addClass('clicked');
4688                        var startPos;
4689                        
4690                        // Set flag to prevent concurrent requests
4691                        isGettingLocation = true;
4692                        
4693                        // Function to actually get the position
4694                        var attemptGetPosition = function() {
4695                            // Try with shorter timeout first for faster response
4696                            var geoOptions = {
4697                                enableHighAccuracy: false, // Use false for faster response
4698                                timeout: 8000, // 8 second timeout (reduced for faster failure)
4699                                maximumAge: 300000 // Accept cached position up to 5 minutes old
4700                            };
4701                            
4702                            navigator.geolocation.getCurrentPosition(function (position) {
4703                                startPos = position;
4704                                vlat = startPos.coords.latitude;
4705                                vlon = startPos.coords.longitude;
4706                                
4707                                // Validate coordinates before proceeding
4708                                if (!vlat || !vlon || vlat === 0 || vlon === 0) {
4709                                    isGettingLocation = false;
4710                                    $button.removeClass('clicked');
4711                                    return;
4712                                }
4713                                
4714                                // Save coordinates to sessionStorage
4715                                saveCoordinatesToSession(vlat, vlon);
4716                                
4717                                $.get("/api/data/html/get/data_widgets/widget_name", {
4718                                    "vlat": vlat,
4719                                    "vlon": vlon,
4720                                    "name": "Website - Save Coordinates Session"
4721                                });
4722                                
4723                                populateSearchFields();
4724                                
4725                                // Clear flag
4726                                isGettingLocation = false;
4727                                $button.removeClass('clicked');
4728                            }, function(error) {
4729                                // Clear flag on error
4730                                isGettingLocation = false;
4731                                $button.removeClass('clicked');
4732                                
4733                                // For timeout errors, try sessionStorage as fallback
4734                                if (error.code === 3) {
4735                                    if (getCoordinatesFromSession()) {
4736                                        // Use cached coordinates
4737                                        $.get("/api/data/html/get/data_widgets/widget_name", {
4738                                            "vlat": vlat,
4739                                            "vlon": vlon,
4740                                            "name": "Website - Save Coordinates Session"
4741                                        });
4742                                        
4743                                        populateSearchFields();
4744                                        
4745                                        // Clear flag
4746                                        isGettingLocation = false;
4747                                        $button.removeClass('clicked');
4748                                    } else {
4749                                        $button.popover({
4750                                            content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`,
4751                                            container: 'body'
4752                                        });
4753                                        $button.popover('show');
4754                                        setTimeout(function() {
4755                                            $button.popover('hide');
4756                                        }, 5000);
4757                                    }
4758                                } else {
4759                                    showError(error);
4760                                }
4761                            }, geoOptions);
4762                        };
4763                        
4764                        // Check if geolocation permission is already denied (but don't block if it's prompt)
4765                        if (navigator.permissions && navigator.permissions.query) {
4766                            navigator.permissions.query({name: 'geolocation'}).then(function(result) {
4767                                if (result.state === 'denied') {
4768                                    isGettingLocation = false;
4769                                    $button.removeClass('clicked');
4770                                    showError({code: 1, message: 'Permission denied'});
4771                                    return;
4772                                } else {
4773                                    // Permission is granted or prompt - proceed with geolocation
4774                                    attemptGetPosition();
4775                                }
4776                            }).catch(function(err) {
4777                                // If permission API not supported, proceed anyway
4778                                attemptGetPosition();
4779                            });
4780                        } else {
4781                            // Permission API not available, proceed with geolocation
4782                            attemptGetPosition();
4783                        }
4784                    })
4785                }
4786            } else {
4787                console.log('Geolocation is not supported for this Browser/OS version yet.');
4788            }
4789            function getUrlParameter(sParam) {
4790                var sPageURL = window.location.search.substring(1);
4791                var sURLVariables = sPageURL.split('&');
4792
4793                for (var i = 0; i < sURLVariables.length; i++) {
4794                    var sParameterName = sURLVariables[i].split('=');
4795
4796                    if (sParameterName[0] == sParam) {
4797                        return decodeURIComponent(sParameterName[1]);
4798                    }
4799                }
4800            }
4801        </script>
4801
4802        <style>
4803/* YouTube Lazy Load Styles */
4804.youtube-lazy-container {
4805	position: relative;
4806	display: block;
4807	cursor: pointer;
4808	overflow: hidden;
4809	background: #000;
4810	margin: 0;
4811}
4812.youtube-lazy-thumbnail {
4813	display: block !important;
4814	width: 100% !important;
4815	height: 100% !important;
4816	object-fit: cover !important;
4817	position: absolute !important;
4818	top: 0 !important;
4819	left: 0 !important;
4820	transition: opacity 0.3s;
4821}
4822.youtube-lazy-container iframe {
4823	display: block !important;
4824	width: 100% !important;
4825	height: 100% !important;
4826	position: absolute !important;
4827	top: 0 !important;
4828	left: 0 !important;
4829	border: 0 !important;
4830}
4831.youtube-lazy-play {
4832	position: absolute;
4833	top: 50%;
4834	left: 50%;
4835	transform: translate(-50%, -50%);
4836	width: clamp(40px, 12vw, 68px);
4837	height: clamp(28px, 8.5vw, 48px);
4838	background: rgba(255, 0, 0, 0.8);
4839	border-radius: clamp(8px, 2vw, 12px);
4840	display: flex;
4841	align-items: center;
4842	justify-content: center;
4843	transition: background 0.2s;
4844	z-index: 1;
4845}
4846.youtube-lazy-container:hover .youtube-lazy-play {
4847	background: rgba(255, 0, 0, 1);
4848}
4849.youtube-lazy-play::before {
4850	content: '\F4F4';
4851	font-family: 'bootstrap-icons';
4852	color: white;
4853	font-size: clamp(14px, 4vw, 24px);
4854	display: flex;
4855	align-items: center;
4856	justify-content: center;
4857}
4858.fr-view .fr-video {
4859	visibility: hidden;
4860}
4861.fr-box[role="application"] .fr-video {
4862	visibility: visible !important;
4863}
4864.fr-view .fr-video.fr-dvi.fr-fvc:has(.youtube-lazy-container) {
4865	display: inline-block;
4866	position: relative;
4867	left: 50%;
4868	transform: translateX(-50%);
4869}
4870@media only screen and (max-width: 768px) {
4871	.youtube-lazy-container {
4872		aspect-ratio: 16 / 9 !important;
4873		max-width: calc(100vw - 30px) !important;
4874		padding-bottom: 56.25% !important;
4875	}
4876	.fr-video, div:not(.fr-element) p .fr-video.fr-dvi.fr-fvr {
4877		float: none !important;
4878		margin: 0 auto !important;
4879		width: 100% !important;
4880		text-align: center !important;
4881		display: block !important;
4882		max-width: 100% !important;
4883	}
4884}
4885</style>
4886<script>
4887/* YouTube Lazy Load Script */
4888(function() {
4889	/* CRITICAL: Remove src IMMEDIATELY to prevent YouTube from loading */
4890	var iframes = document.querySelectorAll('iframe[src*="youtube.com/embed"], iframe[src*="youtube-nocookie.com/embed"]');
4891	if (!iframes.length) return;
4892	var firstIframe = iframes[0];
4893	/* ULTRA-PRIORITY: Preload first thumbnail BEFORE anything else for maximum LCP speed */
4894	try {
4895		var rect = firstIframe.getBoundingClientRect();
4896		if (rect && rect.top < (window.innerHeight + 50)) {
4897			var src = firstIframe.src || firstIframe.getAttribute('data-src');
4898			if (src) {
4899				var videoId = null;
4900				var playlistMatch = src.match(/[?&]playlist=([a-zA-Z0-9_-]+)/);
4901				if (playlistMatch && playlistMatch[1]) {
4902					videoId = playlistMatch[1];
4903				} else {
4904					var embedMatch = src.match(/youtube(?:-nocookie)?\.com\/embed\/([a-zA-Z0-9_-]+)/);
4905					if (embedMatch && embedMatch[1]) {
4906						videoId = embedMatch[1];
4907					}
4908				}
4909				if (videoId && document.head) {
4910					var thumbnailUrl = 'https://img.youtube.com/vi/' + videoId + '/sddefault.jpg';
4911					var preloadLink = document.createElement('link');
4912					preloadLink.rel = 'preload';
4913					preloadLink.as = 'image';
4914					preloadLink.href = thumbnailUrl;
4915					preloadLink.fetchpriority = 'high';
4916					document.head.appendChild(preloadLink);
4917					var img = new Image();
4918					img.fetchpriority = 'high';
4919					img.src = thumbnailUrl;
4920				}
4921			}
4922		}
4923	} catch(e) {};
4924	Array.prototype.forEach.call(iframes, function(iframe) {
4925		if (!iframe.getAttribute('data-youtube-lazy')) {
4926			iframe.setAttribute('data-youtube-src', iframe.src);
4927			iframe.removeAttribute('src');
4928			iframe.setAttribute('data-youtube-lazy', 'src-removed');
4929		}
4930	});
4931	var playerPreconnected = false;
4932	var debounceTimer;
4933	/* Check if we should wait for mobile preloader */
4934	var isMobile = window.innerWidth <= 768;
4935	var hasPreloader = document.getElementById('mobile-loading-message');
4936	var shouldWaitForPreloader = isMobile && hasPreloader;
4937	/* Parse pixel values from styles */
4938	function parsePxValue(value) {
4939		if (!value) return null;
4940		var str = String(value);
4941		if (str.indexOf('%') > -1) return null;
4942		var num = parseInt(str, 10);
4943		return (num > 0) ? num : null;
4944	}
4945	/* Extract video ID from URL */
4946	function extractYouTubeVideoId(src) {
4947		if (!src) return null;
4948		/* Check for playlist param first (priority) */
4949		var playlistMatch = src.match(/[?&]playlist=([a-zA-Z0-9_-]+)/);
4950		if (playlistMatch && playlistMatch[1]) {
4951			return playlistMatch[1];
4952		}
4953		/* Fallback to embed ID */
4954		var embedMatch = src.match(/youtube(?:-nocookie)?\.com\/embed\/([a-zA-Z0-9_-]+)/);
4955		if (embedMatch && embedMatch[1]) {
4956			return embedMatch[1];
4957		}
4958		return null;
4959	}
4960	/* Preconnect to www.youtube.com on demand (for player) */
4961	function preconnectYouTube() {
4962		if (playerPreconnected) return;
4963		if (!document.head) return;
4964		playerPreconnected = true;
4965		var link = document.createElement('link');
4966		link.rel = 'preconnect';
4967		link.href = 'https://www.youtube.com';
4968		document.head.appendChild(link);
4969	}
4970	/* Handle thumbnail loading with fallback */
4971	function setThumbnailErrorHandler(thumbnail) {
4972		thumbnail.onerror = function() {
4973			thumbnail.style.background = '#333';
4974			thumbnail.onerror = null;
4975		};
4976	}
4977	/* Load thumbnail with play button */
4978	function loadThumbnail(container, videoId, iframe, width, height, parentElement) {
4979		var thumbnail = new Image();
4980		thumbnail.className = 'youtube-lazy-thumbnail img-rounded';
4981		var finalWidth = width || 640;
4982		var finalHeight = height || 360;
4983		thumbnail.width = finalWidth;
4984		thumbnail.height = finalHeight;
4985		thumbnail.style.aspectRatio = finalWidth + ' / ' + finalHeight;
4986		var iframeTitle = iframe.getAttribute('title') || iframe.getAttribute('alt');
4987		if (iframeTitle) {
4988			thumbnail.alt = iframeTitle;
4989		}
4990		var isInViewport = false;
4991		try {
4992			var rect = container.getBoundingClientRect();
4993			isInViewport = rect.top < (window.innerHeight + 50);
4994		} catch(e) {
4995			isInViewport = true;
4996		}
4997		thumbnail.loading = isInViewport ? 'eager' : 'lazy';
4998		if (isInViewport) {
4999			thumbnail.fetchPriority = 'high';
5000			thumbnail.decoding = 'sync';
5001		}
5002		if (parentElement) {
5003			var revealed = false;
5004			var revealParent = function() {
5005				if (!revealed && parentElement.style.visibility === 'hidden') {
5006					revealed = true;
5007					parentElement.style.visibility = 'visible';
5008				}
5009			};
5010			thumbnail.onload = thumbnail.onerror = revealParent;
5011			setTimeout(revealParent, 3000);
5012		}
5013		if (isInViewport) {
5014			thumbnail.src = 'https://img.youtube.com/vi/' + videoId + '/sddefault.jpg';
5015			setThumbnailErrorHandler(thumbnail);
5016			container.appendChild(thumbnail);
5017		} else {
5018			if (typeof IntersectionObserver !== 'undefined') {
5019				thumbnail.style.opacity = '0';
5020				container.appendChild(thumbnail);
5021				var observer = new IntersectionObserver(function(entries) {
5022					entries.forEach(function(entry) {
5023						if (entry.isIntersecting) {
5024							thumbnail.src = 'https://img.youtube.com/vi/' + videoId + '/sddefault.jpg';
5025							setThumbnailErrorHandler(thumbnail);
5026							thumbnail.style.transition = 'opacity 0.3s';
5027							thumbnail.style.opacity = '1';
5028							observer.unobserve(container);
5029						}
5030					});
5031				}, { rootMargin: '100px' });
5032				observer.observe(container);
5033			} else {
5034				thumbnail.src = 'https://img.youtube.com/vi/' + videoId + '/sddefault.jpg';
5035				setThumbnailErrorHandler(thumbnail);
5036				container.appendChild(thumbnail);
5037			}
5038		}
5039		/* Add play button and click handler */
5040		var playButton = document.createElement('div');
5041		playButton.className = 'youtube-lazy-play';
5042		container.appendChild(playButton);
5043		var isLoading = false;
5044		container.addEventListener('mouseenter', preconnectYouTube, { once: true });
5045		container.addEventListener('click', function() {
5046			if (isLoading) return;
5047			isLoading = true;
5048			preconnectYouTube();
5049			playButton.style.display = 'none';
5050			thumbnail.style.pointerEvents = 'none';
5051			var iframeSrc = iframe.getAttribute('data-youtube-src');
5052			if (!iframeSrc) return;
5053			/* Mobile: the tap gesture is delegated to the iframe via allow="autoplay" so playback can start unmuted */
5054			var isMobile = window.innerWidth <= 768;
5055			if (isMobile) {
5056				var allowAttr = iframe.getAttribute('allow') || '';
5057				if (allowAttr.indexOf('autoplay') === -1) {
5058					iframe.setAttribute('allow', (allowAttr ? allowAttr + '; ' : '') + 'autoplay');
5059				}
5060				iframeSrc += (iframeSrc.indexOf('?') > -1 ? '&' : '?') + 'autoplay=1&playsinline=1';
5061			} else {
5062				iframeSrc += (iframeSrc.indexOf('?') > -1 ? '&' : '?') + 'autoplay=1';
5063			}
5064			iframe.setAttribute('loading', 'lazy');
5065			iframe.src = iframeSrc;
5066			iframe.className = (iframe.className + ' img-rounded').trim();
5067			iframe.style.opacity = '0';
5068			container.appendChild(iframe);
5069			setTimeout(function() {
5070				thumbnail.style.transition = 'opacity 0.3s';
5071				thumbnail.style.opacity = '0';
5072				iframe.style.transition = 'opacity 0.3s';
5073				iframe.style.opacity = '1';
5074			}, 250);
5075		});
5076	}
5077	/* Process all YouTube iframes on page */
5078	function processYouTubeIframes() {
5079		var iframes = document.querySelectorAll('iframe[src*="youtube.com/embed"], iframe[src*="youtube-nocookie.com/embed"], iframe[data-youtube-src*="youtube.com/embed"], iframe[data-youtube-src*="youtube-nocookie.com/embed"]');
5080		Array.prototype.forEach.call(iframes, function(iframe) {
5081			var lazyState = iframe.getAttribute('data-youtube-lazy');
5082			if (lazyState === 'processed' || lazyState === 'pending') return;
5083			/* Get src - prioritize data-youtube-src over src */
5084			var originalSrc = iframe.getAttribute('data-youtube-src') || iframe.src;
5085			if (!originalSrc) return;
5086			/* Skip nolazy/forceplay iframes - check for params in URL */
5087			var hasNoLazy = originalSrc.indexOf('nolazy=1') > -1;
5088			var hasForcePlay = originalSrc.indexOf('forceplay=1') > -1;
5089			if (hasNoLazy || hasForcePlay) {
5090				var cleanSrc = originalSrc.replace(/[?&](nolazy|forceplay)=1/g, '').replace(/\?&/, '?').replace(/[&?]$/, '');
5091				if (hasForcePlay) {
5092					var separator = cleanSrc.indexOf('?') > -1 ? '&' : '?';
5093					iframe.src = cleanSrc + separator + 'autoplay=1&mute=1&playsinline=1';
5094				} else {
5095					iframe.src = cleanSrc;
5096				}
5097				iframe.className = (iframe.className + ' img-rounded').trim();
5098				/* Reveal parent fr-video span if hidden */
5099				var parentElement = iframe.parentNode;
5100				if (parentElement && parentElement.classList && parentElement.classList.contains('fr-video')) {
5101					parentElement.style.visibility = 'visible';
5102				}
5103				iframe.setAttribute('data-youtube-lazy', 'processed');
5104				return;
5105			}
5106			/* Check if iframe is in or near viewport */
5107			var rect = iframe.getBoundingClientRect();
5108			var isNearViewport = rect.top < (window.innerHeight + 200);
5109			if (!isNearViewport) {
5110				/* Below fold - mark as pending */
5111				iframe.setAttribute('data-youtube-lazy', 'pending');
5112				/* Set up IntersectionObserver to process later */
5113				var observer = new IntersectionObserver(function(entries) {
5114					entries.forEach(function(entry) {
5115						if (entry.isIntersecting) {
5116							processSingleIframe(entry.target);
5117							observer.unobserve(entry.target);
5118						}
5119					});
5120				}, { rootMargin: '200px' });
5121				observer.observe(iframe);
5122				return;
5123			}
5124			/* In/near viewport - process immediately */
5125			processSingleIframe(iframe);
5126		});
5127	}
5128	/* Process a single iframe */
5129	function processSingleIframe(iframe) {
5130		if (iframe.getAttribute('data-youtube-lazy') === 'processed') return;
5131		iframe.setAttribute('data-youtube-lazy', 'processed');
5132		var src = iframe.getAttribute('data-youtube-src');
5133		if (!src) return;
5134		var videoId = extractYouTubeVideoId(src);
5135		if (!videoId) return;
5136		/* Set title for accessibility if missing */
5137		if (!iframe.getAttribute('title')) {
5138			iframe.setAttribute('title', 'YouTube video player - ' + videoId);
5139		}
5140		/* Create container with proper dimensions */
5141		var container = document.createElement('div');
5142		container.className = 'youtube-lazy-container img-rounded';
5143		var inlineWidth = parsePxValue(iframe.style.width);
5144		var inlineHeight = parsePxValue(iframe.style.height);
5145		var attrWidth = parsePxValue(iframe.getAttribute('width'));
5146		var attrHeight = parsePxValue(iframe.getAttribute('height'));
5147		var width = inlineWidth || attrWidth || iframe.offsetWidth || null;
5148		var height = inlineHeight || attrHeight || iframe.offsetHeight || null;
5149		if (!width && !height) {
5150			width = 560;
5151			height = 315;
5152		} else if (width && !height) {
5153			height = Math.round(width * 9 / 16);
5154		} else if (!width && height) {
5155			width = Math.round(height * 16 / 9);
5156		}
5157		if (width <= 0 || height <= 0) {
5158			width = 560;
5159			height = 315;
5160		}
5161		/* Find constraining parent width (skip wrapper containers like fr-video and embed-responsive) */
5162		var parentElement = iframe.parentNode;
5163		var constrainingWidth = null;
5164		var isFrVideo = parentElement && parentElement.classList && parentElement.classList.contains('fr-video');
5165		var isEmbedResponsive = parentElement && parentElement.classList && parentElement.classList.contains('embed-responsive');
5166		if (parentElement) {
5167			if (isFrVideo) {
5168				/* For fr-video, check grandparent width, use smaller of 2 */
5169				var grandparent = parentElement.parentNode;
5170				if (grandparent) {
5171					constrainingWidth = grandparent.offsetWidth;
5172				}
5173			} else if (isEmbedResponsive) {
5174				/* For embed-responsive, check grandparent width and use it (ignore iframe dimensions) */
5175				var grandparent = parentElement.parentNode;
5176				if (grandparent) {
5177					constrainingWidth = grandparent.offsetWidth;
5178				}
5179			} else {
5180				constrainingWidth = parentElement.offsetWidth;
5181			}
5182		}
5183		/* Set responsive dimensions with padding-bottom trick */
5184		var maxWidth;
5185		if (isEmbedResponsive && constrainingWidth && constrainingWidth > 0) {
5186			/* For embed-responsive, always use grandparent width (fluid container) */
5187			maxWidth = constrainingWidth;
5188		} else {
5189			/* For fr-video and others, use smaller of: grandparent or iframe width */
5190			maxWidth = (constrainingWidth && constrainingWidth > 0 && constrainingWidth < width) ? constrainingWidth : width;
5191		}
5192		var paddingBottom = ((height / width) * 100).toFixed(2) + '%';
5193		container.style.width = '100%';
5194		container.style.paddingBottom = paddingBottom;
5195		container.style.height = '0';
5196		/* Set parent fr-video span dimensions to prevent CLS */
5197		if (isFrVideo) {
5198			parentElement.style.visibility = 'hidden';
5199			parentElement.className = (parentElement.className + ' img-rounded').trim();
5200			parentElement.style.width = '100%';
5201			parentElement.style.maxWidth = maxWidth + 'px';
5202			parentElement.style.aspectRatio = width + ' / ' + height;
5203			parentElement.setAttribute('width', maxWidth);
5204			parentElement.setAttribute('height', Math.round(maxWidth * (height / width)));
5205		}
5206		if (iframe.style.cssText) {
5207			var inlineStyles = iframe.style.cssText.split(';');
5208			for (var i = 0; i < inlineStyles.length; i++) {
5209				var style = inlineStyles[i].trim();
5210				if (style && style.indexOf('width') === -1 && style.indexOf('height') === -1) {
5211					container.style.cssText += style + ';';
5212				}
5213			}
5214		}
5215		var clonedIframe = iframe.cloneNode(true);
5216		var outerWrapper = document.createElement('div');
5217		outerWrapper.className = 'youtube-lazy-outer bmargin img-rounded';
5218		outerWrapper.style.maxWidth = maxWidth + 'px';
5219		outerWrapper.style.aspectRatio = width + ' / ' + height;
5220		outerWrapper.setAttribute('width', maxWidth);
5221		outerWrapper.setAttribute('height', Math.round(maxWidth * (height / width)));
5222		outerWrapper.appendChild(container);
5223		iframe.parentNode.replaceChild(outerWrapper, iframe);
5224		loadThumbnail(container, videoId, clonedIframe, width, height, isFrVideo ? parentElement : null);
5225	}
5226	/* Remove src from dynamically added iframes (used by MutationObserver) */
5227	function removeSrcFromAllIframes() {
5228		var iframes = document.querySelectorAll('iframe[src*="youtube.com/embed"], iframe[src*="youtube-nocookie.com/embed"]');
5229		Array.prototype.forEach.call(iframes, function(iframe) {
5230			if (!iframe.getAttribute('data-youtube-lazy')) {
5231				iframe.setAttribute('data-youtube-src', iframe.src);
5232				iframe.removeAttribute('src');
5233				iframe.setAttribute('data-youtube-lazy', 'src-removed');
5234			}
5235		});
5236	}
5237	/* Wait for preloader on mobile, then init */
5238	document.addEventListener('DOMContentLoaded', function() {
5239		if (shouldWaitForPreloader) {
5240			setTimeout(initYouTubeLazyLoad, 8000);
5241		} else {
5242			initYouTubeLazyLoad();
5243		}
5244	});
5245	/* Initialize lazy load and watch for new videos */
5246	function initYouTubeLazyLoad() {
5247		try {
5248			processYouTubeIframes();
5249			if (typeof MutationObserver !== 'undefined') {
5250				var observer = new MutationObserver(function(mutations) {
5251					clearTimeout(debounceTimer);
5252					debounceTimer = setTimeout(function() {
5253						var hasNewIframes = false;
5254						mutations.forEach(function(mutation) {
5255							if (mutation.addedNodes.length > 0) {
5256								mutation.addedNodes.forEach(function(node) {
5257									if (node.nodeType === 1) {
5258										if (node.tagName === 'IFRAME' || (node.querySelectorAll && node.querySelectorAll('iframe').length > 0)) {
5259											hasNewIframes = true;
5260										}
5261									}
5262								});
5263							}
5264						});
5265						if (hasNewIframes) {
5266							removeSrcFromAllIframes();
5267							processYouTubeIframes();
5268						}
5269					}, 100);
5270				});
5271				if (document.body) {
5272					observer.observe(document.body, {
5273						childList: true,
5274						subtree: true
5275					});
5276				}
5277			}
5278		} catch(e) {
5279			// Silently fail - prevent page breaking
5280		}
5281	}
5282})();
5283</script>
vendor: 2 bytes, line 5283
5283
5284<script>
5285/* === NON-YOUTUBE VIDEO PROVIDERS LAZY LOAD === */
5286/* Added for Vimeo, Wistia, Spotify, etc. - Independent of YouTube system */
5287(function() {
5288	try {
5289	var videoProviders = ["brightcove","dailymotion","embedly","facebook.com","giphy","imgur","instagram.com","jwplatform","khanacademy","linkedin.com","loom","pinterest.com","podcasts.apple","reddit","rumble","soundcloud","spotify.com","streamable","ted.com","tiktok","twitch","twitter.com","udemy","vimeo","vidyard","wistia","x.com"];
5290	if (!videoProviders || videoProviders.length === 0) return;
5291	/* Check if iframe domain matches provider list */
5292	function isVideoProvider(src) {
5293		if (!src) return false;
5294		var domainMatch = src.match(/^https?:\/\/([^\/\?#]+)/);
5295		if (!domainMatch) return false;
5296		var domain = domainMatch[1].toLowerCase();
5297		for (var i = 0; i < videoProviders.length; i++) {
5298			if (domain.indexOf(videoProviders[i]) > -1) return true;
5299		}
5300		return false;
5301	}
5302	/* Parse pixel values from styles */
5303	function parsePx(value) {
5304		if (!value) return null;
5305		var str = String(value);
5306		if (str.indexOf('%') > -1) return null;
5307		var num = parseInt(str, 10);
5308		return (num > 0) ? num : null;
5309	}
5310	/* Check if we should wait for mobile preloader */
5311	var isMobile = window.innerWidth <= 768;
5312	var hasPreloader = document.getElementById('mobile-loading-message');
5313	var shouldWaitForPreloader = isMobile && hasPreloader;
5314	/* Strip src from video provider iframes immediately */
5315	var iframes = document.querySelectorAll('iframe[src]');
5316	Array.prototype.forEach.call(iframes, function(iframe) {
5317		if (!iframe.getAttribute('data-video-lazy') && isVideoProvider(iframe.src)) {
5318			iframe.setAttribute('data-video-src', iframe.src);
5319			iframe.removeAttribute('src');
5320			iframe.setAttribute('data-video-lazy', 'removed');
5321		}
5322	});
5323	/* Process video iframes */
5324	function processVideoIframes() {
5325		var iframes = document.querySelectorAll('iframe[data-video-src], iframe[src]');
5326		Array.prototype.forEach.call(iframes, function(iframe) {
5327			var state = iframe.getAttribute('data-video-lazy');
5328			if (state === 'processed') return;
5329			var src = iframe.getAttribute('data-video-src') || iframe.src;
5330			if (!src || !isVideoProvider(src)) return;
5331			/* Set title for accessibility if missing (do this early for PageSpeed) */
5332			if (!iframe.getAttribute('title')) {
5333				var providerName = 'Video';
5334				for (var i = 0; i < videoProviders.length; i++) {
5335					if (src.indexOf(videoProviders[i]) > -1) {
5336						providerName = videoProviders[i].charAt(0).toUpperCase() + videoProviders[i].slice(1);
5337						break;
5338					}
5339				}
5340				iframe.setAttribute('title', providerName + ' embed player');
5341			}
5342			/* Check for nolazy/forceplay params */
5343			if (src.indexOf('nolazy=1') > -1 || src.indexOf('forceplay=1') > -1) {
5344				var cleanSrc = src.replace(/[?&](nolazy|forceplay)=1/g, '').replace(/\?&/, '?').replace(/[&?]$/, '');
5345				iframe.src = cleanSrc;
5346				iframe.setAttribute('data-video-lazy', 'processed');
5347				return;
5348			}
5349			/* Check viewport position */
5350			var rect = iframe.getBoundingClientRect();
5351			var isNearViewport = rect.top < (window.innerHeight + 200);
5352			if (!isNearViewport) {
5353				iframe.setAttribute('data-video-lazy', 'pending');
5354				if (typeof IntersectionObserver !== 'undefined') {
5355					var observer = new IntersectionObserver(function(entries) {
5356						entries.forEach(function(entry) {
5357							if (entry.isIntersecting) {
5358								loadVideoIframe(entry.target);
5359								observer.unobserve(entry.target);
5360							}
5361						});
5362					}, { rootMargin: '200px' });
5363					observer.observe(iframe);
5364				}
5365				return;
5366			}
5367			/* In viewport - load immediately */
5368			loadVideoIframe(iframe);
5369		});
5370	}
5371	/* Load iframe by restoring src */
5372	function loadVideoIframe(iframe) {
5373		if (iframe.getAttribute('data-video-lazy') === 'processed') return;
5374		iframe.setAttribute('data-video-lazy', 'processed');
5375		var src = iframe.getAttribute('data-video-src');
5376		if (!src) return;
5377		/* Check if wrapped in Froala .fr-video span */
5378		var parentElement = iframe.parentNode;
5379		var isFrVideo = parentElement && parentElement.classList && parentElement.classList.contains('fr-video');
5380		/* Check if wrapped in Bootstrap .embed-responsive container - its CSS already sizes the iframe to 100% of the container, so inline px dimensions would clobber the responsive sizing */
5381		var isEmbedResponsive = parentElement && parentElement.classList && parentElement.classList.contains('embed-responsive');
5382		/* Calculate and set dimensions to prevent CLS */
5383		var inlineWidth = parsePx(iframe.style.width);
5384		var inlineHeight = parsePx(iframe.style.height);
5385		var attrWidth = parsePx(iframe.getAttribute('width'));
5386		var attrHeight = parsePx(iframe.getAttribute('height'));
5387		var width = inlineWidth || attrWidth || iframe.offsetWidth || 640;
5388		var height = inlineHeight || attrHeight || iframe.offsetHeight || 360;
5389		if (width <= 0 || height <= 0) {
5390			width = 640;
5391			height = 360;
5392		}
5393		if (!isEmbedResponsive) {
5394			iframe.style.width = width + 'px';
5395			iframe.style.height = height + 'px';
5396			iframe.style.aspectRatio = width + ' / ' + height;
5397		}
5398		/* Reveal parent .fr-video after load or timeout */
5399		if (isFrVideo) {
5400			var revealed = false;
5401			var revealParent = function() {
5402				if (!revealed) {
5403					revealed = true;
5404					parentElement.style.visibility = 'visible';
5405				}
5406			};
5407			iframe.onload = revealParent;
5408			setTimeout(revealParent, 3000);
5409		}
5410		iframe.src = src;
5411	}
5412	/* Watch for dynamically added iframes */
5413	function removeNewIframeSrc() {
5414		var iframes = document.querySelectorAll('iframe[src]');
5415		Array.prototype.forEach.call(iframes, function(iframe) {
5416			if (!iframe.getAttribute('data-video-lazy') && isVideoProvider(iframe.src)) {
5417				iframe.setAttribute('data-video-src', iframe.src);
5418				iframe.removeAttribute('src');
5419				iframe.setAttribute('data-video-lazy', 'removed');
5420			}
5421		});
5422	}
5423	/* Initialize video iframe lazy load */
5424	function initVideoIframeLazyLoad() {
5425		processVideoIframes();
5426		if (typeof MutationObserver !== 'undefined') {
5427			var debounce;
5428			var observer = new MutationObserver(function(mutations) {
5429				clearTimeout(debounce);
5430				debounce = setTimeout(function() {
5431					var hasIframes = false;
5432					mutations.forEach(function(mutation) {
5433						if (mutation.addedNodes.length > 0) {
5434							mutation.addedNodes.forEach(function(node) {
5435								if (node.nodeType === 1 && (node.tagName === 'IFRAME' || (node.querySelectorAll && node.querySelectorAll('iframe').length > 0))) {
5436									hasIframes = true;
5437								}
5438							});
5439						}
5440					});
5441					if (hasIframes) {
5442						removeNewIframeSrc();
5443						processVideoIframes();
5444					}
5445				}, 100);
5446			});
5447			if (document.body) {
5448				observer.observe(document.body, { childList: true, subtree: true });
5449			}
5450		}
5451	}
5452	/* Wait for preloader on mobile, then init */
5453	document.addEventListener('DOMContentLoaded', function() {
5454		if (shouldWaitForPreloader) {
5455			setTimeout(initVideoIframeLazyLoad, 8000);
5456		} else {
5457			initVideoIframeLazyLoad();
5458		}
5459	});
5460	} catch(e) {
5461		// Silently fail - prevent page breaking
5462	}
5463})();
5464</script>
5464
5465    
5465<script type="text/javascript">
5466                function googleTranslateElementInit() {
5467            let spinIcon = document.getElementById('spin_remove');
5468            if (typeof spinIcon !== `undefined` && spinIcon != null) {
5469                spinIcon.remove();
5470            }
5471            new google.translate.TranslateElement({
5472                    pageLanguage: 'en',
5473                                        includedLanguages: 'af,am,ar,az,be,bg,bn,bs,ca,co,cs,cy,da,de,el,eo,es,et,eu,fa,fi,fr,fy,ga,gd,gl,gu,ha,haw,hi,hr,ht,hu,hy,id,ig,is,it,iw,ja,jw,ka,kk,km,kn,ko,ku,ky,la,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,ne,nl,no,ny,pa,pl,ps,pt,pt-PT,ro,ru,sd,si,sk,sl,sn,so,sq,sr,st,su,sv,sw,ta,te,tg,th,tl,tr,uk,ur,uz,vi,xh,yi,yo,zh-CN,zh-TW,zu',
5474                                        autoDisplay: false,
5475                    layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL
5476                },
5477                'google_translate_element');
5478            $('#google_translate_element').delay(9000).css("opacity", "1");
5479                    }
5480
5481
5482        function loadGoogleTranslate() {
5483            let head = document.getElementsByTagName('head')[0];
5484            let script = document.createElement('script');
5485            script.type = 'text/javascript';
5486            script.src = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
5487            head.appendChild(script);
5488        }
5489
5490        if (!sessionStorage.getItem("googleTranslate") == 1) {
5491            window.addEventListener('load', (e) => {
5492                let alreadyLoaded = false;
5493                let loadingByTime = setTimeout(function () {
5494                    if (!alreadyLoaded) {
5495                        alreadyLoaded = true;
5496                        loadGoogleTranslate();
5497                    }
5498                }, 8000);
5499                window.addEventListener('scroll', initOnScroll, false);
5500                function initOnScroll() {
5501                    clearTimeout(loadingByTime);
5502                    if (!alreadyLoaded) {
5503                        alreadyLoaded = true;
5504                        loadGoogleTranslate();
5505                    }
5506                    window.removeEventListener('scroll', initOnScroll,false);
5507                }
5508                if (document.cookie.indexOf('googtrans=') !== -1) {
5509                    if (!alreadyLoaded) {
5510                        alreadyLoaded = true;
5511                        loadGoogleTranslate();
5512                    }
5513                }
5514                sessionStorage.setItem("googleTranslate", "1");
5515            });
5516
5517        } else {
5518            loadGoogleTranslate()
5519        }
5520    </script>
vendor: 2 bytes, line 5520
5520
5521<script>
5522	// switchClass() is jQuery UI (Effects), which is no longer loaded on every page.
5523	// removeClass().addClass() is the same class swap, applied immediately instead of
5524	// after animateClass()'s queued 400ms default.
5525	$(document).ready(function(){
5526		$('.navbar-header .navbar-toggle.main_menu').click(function(){
5527			$('.mobile-main-menu').toggleClass('opened');
5528		});
5529		$('.mobile-main-menu .sidebar-nav').find('li').each(function(){
5530			$(this).addClass('hasChildren');
5531			if ($(this).children('ul').length > 0){
5532				$(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>');
5533				$(this).find('a').after('<div class="clearfix"></div>');
5534				$(this).find('span').after('<div class="clearfix"></div>');
5535			}
5536			$(this).append('<div class="clearfix"></div>');
5537		});
5538
5539		$('.mobile-main-menu .sidebar-nav li i').click(function(){
5540			if ($(this).parent().children('ul').length > 0){
5541				$(this).parent().toggleClass('sub_open');
5542			}
5543			if ($(this).hasClass('fa-plus')){
5544				$(this).removeClass('fa-plus').addClass('fa-minus');
5545			} else {
5546				$(this).removeClass('fa-minus').addClass('fa-plus');
5547			}
5548		});
5549	})
5550
5551	if ($(window).width() > 740 && $(window).width() < 1100) {
5552
5553		$(document).ready(function(){
5554			$('.tablet-menu .tablet-menu-ul').find('li').each(function(){
5555
5556				if ($(this).children('ul').length > 0){
5557					$(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>');
5558					$(this).find('a').after('<div class="clearfix"></div>');
5559					var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");;
5560					$(this).children('a').html(this_link);
5561					$(this).find('span').after('<div class="clearfix"></div>');
5562				}
5563				$(this).append('<div class="clearfix"></div>');
5564			});
5565
5566			$('.tablet-menu .tablet-menu-ul li i').click(function(){
5567
5568				if ($(this).parent().children('ul').length > 0){
5569					$(this).parent().toggleClass('sub_open');
5570
5571					if ($(this).siblings( "ul" ).hasClass('tablet-block')){
5572						$(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none');
5573					} else {
5574						$(this).siblings( "ul" ).addClass( "tablet-block" );
5575
5576						if ($(this).siblings( "ul" ).hasClass('tablet-none')){
5577							$(this).siblings( "ul" ).removeClass('tablet-none')
5578						}
5579
5580						if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) {
5581							$(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none');
5582							$(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus');
5583						}
5584
5585						if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) {
5586							$(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5587							$(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5588						}
5589
5590						if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) {
5591							$(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
5592							$(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
5593						}
5594
5595					}
5596
5597				}
5598
5599				if ($(this).hasClass('fa-plus')){
5600					$(this).removeClass('fa-plus').addClass('fa-minus');
5601				} else {
5602					$(this).removeClass('fa-minus').addClass('fa-plus');
5603				}
5604			});
5605		})
5606	}
5607	// Append unique ID attribute for mobile main menu links
5608	$('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" });
5609</script>
5609
5610
5611<script>
5612/* Keeps the announcement bar flush with the navbar: this widget's CSS emits static 50px
5613   offsets that are blind to the hide-menu settings, so a hidden or fixed compact-logo
5614   navbar leaves a gap or an overlap. Measure the real navbar state and own the offset. */
5615(function () {
5616    function alignAnnouncementToNavbar() {
5617        var ann = document.querySelector('.announcement-bar');
5618        if (!ann) { return; }
5619        /* above the widget's own offset breakpoints: restore stylesheet values */
5620        if (window.innerWidth > 1100) {
5621            ann.style.removeProperty('margin-top');
5622            ann.style.removeProperty('top');
5623            return;
5624        }
5625        var navbar = document.querySelector('.header nav.navbar.navbar-default');
5626        var navStyle = navbar ? window.getComputedStyle(navbar) : null;
5627        /* navbar hidden: the 50px offsets have nothing to clear, sit flush */
5628        if (!navbar || navStyle.display === 'none') {
5629            ann.style.setProperty('margin-top', '0px', 'important');
5630            ann.style.setProperty('top', '0px', 'important');
5631            return;
5632        }
5633        if (window.innerWidth >= 768) { return; }
5634        /* only act while the navbar is pinned and showing the compact logo */
5635        if (navStyle.position !== 'fixed') { return; }
5636        var logo = navbar.querySelector('.mobile_website_logo');
5637        if (!logo || window.getComputedStyle(logo).display === 'none') { return; }
5638        var navRect = navbar.getBoundingClientRect();
5639        var annRect = ann.getBoundingClientRect();
5640        var delta = Math.round(navRect.bottom - annRect.top); /* >0 overlap, <0 gap */
5641        if (delta === 0) { return; }
5642        var currentMt = parseFloat(window.getComputedStyle(ann).marginTop) || 0;
5643        var nextMt = currentMt + delta;
5644        /* a transient element above the bar during load can inflate the measure; a
5645           negative margin would pull the bar behind the navbar, so clamp at 0 */
5646        if (nextMt < 0) { nextMt = 0; }
5647        /* !important to beat the widget's "margin-top: 50px !important" rule */
5648        ann.style.setProperty('margin-top', nextMt + 'px', 'important');
5649    }
5650
5651    function run() {
5652        alignAnnouncementToNavbar();
5653        /* re-run after late layout shifts (fonts, async embeds) */
5654        window.setTimeout(alignAnnouncementToNavbar, 250);
5655        window.setTimeout(alignAnnouncementToNavbar, 1200);
5656    }
5657
5658    if (document.readyState === 'loading') {
5659        document.addEventListener('DOMContentLoaded', run);
5660    } else {
5661        run();
5662    }
5663    window.addEventListener('load', alignAnnouncementToNavbar);
5664    var resizeTimer;
5665    window.addEventListener('resize', function () {
5666        window.clearTimeout(resizeTimer);
5667        resizeTimer = window.setTimeout(alignAnnouncementToNavbar, 150);
5668    });
5669})();
5670</script>
vendor: 2 bytes, line 5670
5670
5671<script>
5672    </script>
5672<script>
5673    $('#captchaContainer').removeClass('form-control ');
5674    $(".website_url_field").keyup(function(){
5675        var fieldName = $(this).attr('name');
5676        $(this).val($(this).val().replace(/\s+/g, ''));
5677        $('#myform').formValidation('revalidateField', fieldName);
5678    });
5679</script>
vendor: 2 bytes, line 5679
5679
5680<script>
5681     $('#newsletter input[name="email"]').on('keypress', function() {
5682        $("#newsletter > .gdpr_consent_email").show();
5683    });
5684	$('#newsletter_signup_footer input[name="email"]').on('keypress', function() {
5685        $("#newsletter_signup_footer > .gdpr_consent_email").show();
5686    });
5687</script>
5687                
5687<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
5687
5688                
5688<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
5688
5689                
5689<script type="text/javascript">
5690                    function decodeHtml(html) {
5691                        var txt = document.createElement("textarea");
5692                        txt.innerHTML = html;
5693                        return txt.value;
5694                    }
5695                    
5696                    // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
5697                    $(function() {
5698                        function applyFix() {
5699                            // Check if FormValidation library and URI validator are loaded
5700                            if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
5701                                FormValidation.Validator.uri.validate = function(validator, $field, options) {
5702                                    var value = validator.getFieldValue($field, 'uri').trim();
5703                                    return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
5704                                };
5705                                return true;
5706                            }
5707                            return false;
5708                        }
5709                        
5710                        if (!applyFix()) {
5711                            setTimeout(applyFix, 50);
5712                        }
5713                    });
5714                </script>
5714
5715                        
5715<script type="text/javascript">
5716
5717        var counterSubmit = 0;
5718        $(document).ready(function() {
5719            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
5720               captcha holders that clears the wrong checkbox, so the widget the visitor solved
5721               keeps a token Google has already spent and every retry fails the security check.
5722               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
5723               an undefined id means no per-form id is known and the arg-less call is used,
5724               exactly as before. */
5725            function bdCaptchaWidgetId(formId) {
5726                if (typeof captchaHolders === "undefined" || !formId) {
5727                    return undefined;
5728                }
5729                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
5730                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
5731                   the holder element itself so the counter never has to be reconstructed. */
5732                var form = document.getElementById(formId);
5733                var holder = form && form.querySelector(".g-recaptcha");
5734                return holder ? captchaHolders[holder.id] : undefined;
5735            }
5736
5737            function bdCaptchaReset(formId) {
5738                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
5739                    return;
5740                }
5741                var widgetId = bdCaptchaWidgetId(formId);
5742                if (widgetId === undefined) {
5743                    grecaptcha.reset();
5744                } else {
5745                    grecaptcha.reset(widgetId);
5746                }
5747            }
5748
5749            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
5750            // rules for fields that are NOT rendered in this form (conditionally-rendered or
5751            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
5752            // isValid(), so an empty required field bypasses validation and submits natively.
5753            // Remove any rule whose field has no matching element before initializing.
5754            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
5755            // REMOVES rules (never adds validators, never overrides native submit, never
5756            // intercepts on capture phase, never re-validates on click) — so it cannot
5757            // reproduce the "Save button slides down / nav broken / no success message"
5758            // regression that caused #5902 to be rolled back on site 19413.
5759            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LeMhpMUAAAAAD7DrcgNFXlb8q-GA_kY5zOzxcQb","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"}}}}};
5760            var formElement = $(`form[name='newsletter_modal_signup_380']`);
5761            if(validatorConfig && validatorConfig.fields) {
5762                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
5763                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
5764                        delete validatorConfig.fields[fieldName];
5765                    }
5766                });
5767            }
5768
5769            // Scroll to the first invalid field when submit fails validation,
5770            // so the user can immediately see why the form will not submit
5771            formElement.on('err.form.fv', function(e) {
5772                var $firstError = $(e.target).find('.form-group.has-error').first();
5773                if ($firstError.length) {
5774                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
5775                }
5776            });
5777
5778            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
5779
5780                if('newsletter_modal_signup' == 'unsubscribe_email'){
5781                    return true;
5782                }
5783                // Prevent form submission
5784                e.preventDefault();
5785                $form = $(e.target),
5786                fv = $form.data('formValidation');
5787
5788                // Check HTML5 required fields that FormValidation may not know about
5789                var requiredEmpty = false;
5790                $form.find('[required]').each(function() {
5791                    var val = $(this).val();
5792                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
5793                        requiredEmpty = true;
5794                        $(this).closest('.form-group').addClass('has-error');
5795                        if ($(this).siblings('.required-error').length === 0) {
5796                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Please enter a value</small>');
5797                        }
5798                    } else {
5799                        var $reqGroup = $(this).closest('.form-group');
5800                        $(this).siblings('.required-error').remove();
5801                        // Keep has-error if another validator is still failing for this field
5802                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
5803                            $reqGroup.removeClass('has-error');
5804                        }
5805                    }
5806                });
5807                if (requiredEmpty) {
5808                    fv.disableSubmitButtons(false);
5809                    counterSubmit = 0;
5810                    // Scroll to the first field with an error (HTML5-required scan does
5811                    // not trigger err.form.fv, so handle the scroll here too)
5812                    var $firstReqError = $form.find('.form-group.has-error').first();
5813                    if ($firstReqError.length) {
5814                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
5815                    }
5816                    return false;
5817                }
5818
5819                var values = $(this).serialize();
5820
5821                
5822                var locationFieldCorrect = true;
5823
5824                if($("#newsletter_modal_signup_380 .location_required").length > 0){
5825                    $("#newsletter_modal_signup_380 .location_required").each(function (index) {
5826                        if($(this).data('state') == 1){
5827                            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() == "") {
5828                                locationFieldCorrect = false;
5829                            }
5830                        }
5831                    });
5832                }
5833
5834                if(locationFieldCorrect === false){
5835                    //check that there is a latitude or longitude
5836                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
5837                    return false;
5838                }
5839                        
5840
5841                if (!$(this).attr("action")) {
5842                    var action = '';
5843
5844                } else {
5845                    var action = $(this).attr("action");
5846                }
5847                if (!$(this).attr("method")) {
5848                    var method = 'post';
5849
5850                } else {
5851                    var method = $(this).attr("method");
5852                }
5853                if (!$(this).attr("form_action_type")) {
5854                    var form_action_type = 'notification';
5855
5856                } else {
5857                    var form_action_type = $(this).attr("form_action_type");
5858                }
5859                if (!$(this).attr("form_action_div")) {
5860                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
5861                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
5862
5863                } else {
5864                    var form_action_div = $(this).attr("form_action_div");
5865                }
5866                if (!$(this).attr("return_data_type")) {
5867                    var return_data_type = 'json';
5868
5869                } else {
5870                    var return_data_type = $(this).attr("return_data_type");
5871                }
5872                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
5873                if (!submitInFlight) {
5874                    if ($("#newsletter_modal_signup_380-notification").html() != "") {
5875                        $("#newsletter_modal_signup_380-notification").remove();
5876                    }
5877                    if ($(this).find('input[type="submit"]').length > 0) {
5878                        $(this).find('input[type="submit"]').before('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
5879
5880                    } else {
5881                        $(this).prepend('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
5882                    }
5883                }
5884                var notification = $("#newsletter_modal_signup_380-notification");
5885
5886                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
5887                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
5888                    setTimeout(function(){
5889                        fv.defaultSubmit();
5890                    }, 100);
5891                } else {
5892                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
5893                    if(!submitInFlight) {
5894                        counterSubmit++;
5895                        $form.data('bdLastSubmitAt', Date.now());
5896
5897                        var fields      = $(this).serializeArray();
5898                        var formField   = [];
5899                        var processData = true;
5900                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
5901                        
5902                        
5903
5904                        if($("#newsletter_modal_signup_380 input[type=file]").length > 0){
5905                            
5906                            var formObject  = new FormData();
5907                            processData     = false;
5908                            contentType     = false;
5909
5910                            $(fields).each(function(index,field){
5911                                formField.push(field.name+"="+field.value);
5912                            });
5913
5914                            values  = formField.join("&");
5915
5916                            $(formField).each(function(index,fieldValue){
5917                                var fieldInfo = fieldValue.split('=');
5918                                formObject.append(fieldInfo[0],fieldInfo[1]);
5919                            });
5920
5921                            $("#newsletter_modal_signup_380 input[type=file]").each(function(index,node){
5922                                var file = this.files[0];
5923                                if(typeof file != "undefined"){
5924                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
5925                                }
5926                            });
5927                        }else{
5928                            
5929                            $(fields).each(function(index,field){
5930                                formField.push(field.name+"="+encodeURIComponent(field.value));
5931                            });
5932
5933                            var formObject  = formField.join("&");
5934                        } 
5935                        
5936                        $.ajax({
5937                            url: action,
5938                            type: method,
5939                            data: formObject,
5940                            dataType: return_data_type,
5941                            processData: processData,
5942                            contentType: contentType,
5943                            success: function (data) {
5944                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
5945                                notification = $("#newsletter_modal_signup_380-notification");
5946                                if (return_data_type == "html") {
5947                                    var result = 'success';
5948
5949                                    if (!data != "") {
5950                                        var result_widget = data['result_widget'];
5951                                    }
5952
5953                                } else {
5954
5955
5956                                    if (!data['result']) {
5957                                        var result = 'error';
5958                                    } else {
5959                                        var result = data['result'];
5960                                    }
5961                                    if (!data['result_widget']) {
5962                                        var result_widget = '';
5963
5964                                    } else {
5965                                        var result_widget = data['result_widget'];
5966                                    }
5967                                }
5968                                if (result == "success") {
5969
5970                                    if (!data['message']) {
5971                                        var message = `Your information has submitted successfully!`;
5972
5973                                    } else {
5974                                        var message = data['message'];
5975                                    }
5976                                    if (!data['redirect_url']) {
5977                                        var redirect_url = '';
5978
5979                                    } else {
5980                                        var redirect_url = data['redirect_url'];
5981                                    }
5982
5983
5984
5985                                    if (form_action_type == "notification") {
5986                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
5987                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
5988                                                redirect_url = "/" + redirect_url;
5989                                            }
5990                                            if (notification.parents('.modal').length) {
5991                                                $('.modal-backdrop').hide();
5992                                                $('.modal').modal('hide');
5993                                            }
5994                                            window.location.href = redirect_url;
5995                                            fv.resetForm(true);
5996                                        } else {
5997                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
5998                                            .addClass('alert-dismissible')
5999                                            .addClass("alert-success-subtle")
6000                                            .removeClass("alert-danger-subtle")
6001                                            .removeClass("alert-warning-subtle")
6002                                        
6003                                            
6004
6005                                        if(notification.parents('.modal').length && 'newsletter_modal_signup_380' == 'whmcs_billing_address'){
6006                                            setTimeout(function(){
6007                                                notification.parents('.modal').modal('hide');
6008                                            }, 1000);
6009                                        }
6010                                        }
6011
6012                                    } else if (form_action_type == "widget") {
6013
6014                                        if (result_widget != '') {
6015
6016                                            setTimeout(function(){
6017                                                if(form_action_div != '.newsletter_modal_form_container'){
6018                                                    $("html, body").animate({ scrollTop: 0 }, 600);
6019                                                }                                                
6020                                                $(form_action_div).html(decodeHtml(result_widget)).text();
6021
6022                                            }, 1000);
6023                                        }
6024
6025                                    } else if (form_action_type == "redirect") {
6026
6027                                        if (redirect_url == "") {
6028                                            redirect_url = decodeURIComponent("");
6029                                        }
6030
6031                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6032                                            redirect_url = "/" + redirect_url;
6033                                        }
6034                                        current_location = "/digital-products";
6035                                        refresh_pages_string = "/login";
6036                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
6037                                        refresh_pages_array = refresh_pages_string.split(',');
6038                                        notification.html(message)
6039                                            .addClass("alert-success-subtle")
6040                                            .removeClass("alert-danger-subtle")
6041                                            .removeClass("alert-warning-subtle")
6042                                            .delay(2000).slideUp();
6043                                            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" )){
6044                                                                                                    window.location.href = window.location.href+'?logged';
6045                                                                                            } else {
6046                                                window.location.href = redirect_url;
6047                                            }
6048
6049                                        fv.resetForm(true);
6050                                    }
6051                                    if(form_action_div != '.newsletter_modal_form_container' && 'newsletter_modal_signup_380' != 'whmcs_billing_address'){
6052                                        $('.modal-backdrop').hide();
6053                                    }
6054                                } else {
6055                                    bdCaptchaReset(formElement.attr('id'));
6056                                    if (!data['message']) {
6057                                        var message = `You entered invali
6057d data. Please try to save again.`;
6058
6059                                    } else {
6060                                        var message = data['message'];
6061                                    }
6062                                    $("#newsletter_modal_signup_380-notification").html(message)
6063                                        .addClass("alert-danger-subtle")
6064                                        .removeClass("alert-success-subtle")
6065                                        .removeClass("alert-warning-subtle")
6066                                        .fadeIn();
6067                                    fv.disableSubmitButtons(false);
6068                                }
6069                                counterSubmit = 0;
6070                            },
6071                            error: function (e) {
6072                                
6073                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
6074                                        bdCaptchaReset(formElement.attr('id'));
6075                                        $("#newsletter_modal_signup_380-notification").html(`Recaptcha Error`);
6076                                } else {
6077                                    $("#newsletter_modal_signup_380-notification").html(`A connection error occurred while saving. Please try to save again.`);
6078                                }
6079                                $("#newsletter_modal_signup_380-notification").addClass("alert-warning-subtle")
6080                                    .removeClass("alert-success-subtle")
6081                                    .removeClass("alert-warning-subtle")
6082                                    .fadeIn();
6083                                counterSubmit = 0;
6084                            }
6085                        });/// End Ajax
6086                    }
6087                }//END else
6088            }).bind('keydown', function(event) {
6089
6090                if (event.ctrlKey || event.metaKey) {
6091
6092                    switch (String.fromCharCode(event.which).toLowerCase()) {
6093
6094                        case 's':
6095                            var nativeForm = $(this)[0];
6096                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
6097                                event.preventDefault();
6098                                return false;
6099                            }
6100                            $(this).submit();
6101                            break;
6102                    }
6103                }
6104            });
6105
6106            /// This will turn any select2 that are required in the form builder to being required elements.
6107            $('#newsletter_modal_signup_380 select').each(function (i, obj) {
6108                setTimeout(function(){
6109                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
6110                        $(obj).css("z-index","-999");
6111                        $(obj).css("height","0");
6112                        $(obj).css("width","0");
6113                        $(obj).css("display","block");  
6114                        $(obj).css("position","absolute");  
6115                    }
6116                }, 3000);
6117            });
6118
6119            // Clear required-error messages when user fills in a required field
6120            $('#newsletter_modal_signup_380').on('keyup change', '[required]', function() {
6121                var val = $(this).val();
6122                if (val !== '' && val !== null && val.trim() !== '') {
6123                    var $group = $(this).closest('.form-group');
6124                    // Remove only this handler's own required message
6125                    $(this).siblings('.required-error').remove();
6126                    // Keep has-error if another FormValidation validator is still failing
6127                    // (e.g. stringLength, regexp). has-error is shared, so removing it
6128                    // wholesale would clobber other validators' red styling.
6129                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6130                        $group.removeClass('has-error');
6131                    }
6132                }
6133            });
6134
6135        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
6136    </script>
6136
6137        <div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
6138	<div class="modal-dialog">
6139		<div class="modal-content">
6140			<div class="container-fluid">
6141				<div class="row">
6142					<div class="col-md-12">
6143						<br>
6144						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
6145							<span aria-hidden="true">&times;</span>
6146						</button>
6147						<h3 class="nomargin">
6148							Join Our Newsletter
6149						</h3>
6150						<hr>
6151						<div class="newsletter_modal_form_container">
6152							 <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="/digital-products" 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">
6153                <label for="captchaContainer">
6154            <span class="required">* </span>
6155            Answer Security Question
6156        </label>
6157        <div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
6158        <div class="g-recaptcha"  id="newsletter_modal_signup_380-google-recaptcha"></div>
6159    </div>
6160    <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>
6161    <div class="clearfix bmargin"></div>
6162    <input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
6163</div>
6164    <style>
6165        .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 {
6166            transform: scale(0.77);
6167            -webkit-transform: scale(0.77);
6168            transform-origin: 0 0;
6169            -webkit-transform-origin: 0 0;
6170            margin-bottom: -15px;
6171        }
6172
6173        .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 {
6174            transform: scale(0.77);
6175            -webkit-transform: scale(0.77);
6176            transform-origin: 0 0;
6177            -webkit-transform-origin: 0 0;
6178            margin-bottom: -15px;
6179        }
6180    </style>
6181    
6181<script type="text/javascript">
6182        if(typeof formsFound == "undefined"){
6183            var formID                  = '';
6184            var currentCaptcha          = {};
6185            var captchaHolders          = {};
6186            var formsFound              = {};
6187            var captchaApiRequested     = false;
6188            /* The forms the visitor has actually interacted with - only these get a widget. */
6189            var captchaArmedForms       = [];
6190            /* api.js stays lazy - nothing is fetched from Google until the visitor actually
6191               touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
6192               and presses Enter without ever clicking, so api.js never loaded, the captcha
6193               never rendered, and the form POSTed an empty token. */
6194            var captchaTriggerEvents    = ['click', 'keydown', 'focusin', 'touchstart'];
6195
6196            window.addEventListener('load', () => {
6197                formID = document.querySelectorAll('[name="recaptcha"]');
6198                if (typeof formID != "undefined" && formID !== null) {
6199                    for (let i = 0; i < formID.length; i++) {
6200                        let formIDForm      = formID[i].closest('form');
6201                        let captchaHolder   = formIDForm.querySelector(".g-recaptcha");
6202
6203                        if (typeof formsFound[formIDForm.id] != "undefined") {
6204                            formsFound[formIDForm.id]['counter']++;
6205                        }else{
6206                            formsFound[formIDForm.id] = {'counter' : 1};
6207                        }
6208
6209                        formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
6210                        captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
6211
6212                        if (typeof formIDForm != "undefined" && formIDForm !== null) {
6213                            captchaTriggerEvents.forEach( evt =>
6214                                formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
6215                            );
6216                        }
6217                    }
6218                }
6219            });
6220        }
6221
6222        function reCaptchaOnFormInteraction(event) {
6223            if (event && event.currentTarget) {
6224                captchaArmForm(event.currentTarget);
6225            }
6226            if (captchaApiRequested) {
6227                renderArmedCaptchas();
6228                return;
6229            }
6230            captchaApiRequested = true;
6231
6232            var head    = document.getElementsByTagName('head')[0];
6233            var script  = document.createElement('script');
6234            script.type = 'text/javascript';
6235            script.src  = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
6236            head.appendChild(script);
6237        }
6238
6239        var captchaArmForm = function (formEl) {
6240            if (!formEl) {
6241                return;
6242            }
6243            for (var a = 0; a < captchaArmedForms.length; a++) {
6244                if (captchaArmedForms[a] === formEl) {
6245                    return;
6246                }
6247            }
6248            captchaArmedForms.push(formEl);
6249        };
6250
6251        var captchaSolvedCallback = function (holder) {
6252            return function () {
6253                var formEl = holder.closest('form');
6254                if (!formEl) {
6255                    return;
6256                }
6257                $(formEl).find('.security_question_label').removeClass('has-error');
6258                $(formEl).find('#recaptcha_error').css('display', 'none');
6259                var notification = document.getElementById(formEl.id + '-notification');
6260                if (notification && notification.classList.contains('alert-danger-subtle')) {
6261                    $(notification).slideUp();
6262                }
6263            };
6264        };
6265
6266        var renderArmedCaptchas = function () {
6267            if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
6268                return;
6269            }
6270            for (var f = 0; f < captchaArmedForms.length; f++) {
6271                var holder = captchaArmedForms[f].querySelector('div[class=g-rec
6271aptcha]');
6272
6273                if (!holder || !holder.id || holder.getClientRects().length === 0) {
6274                    continue;
6275                }
6276                /* Guard a second render: grecaptcha throws on an element it already claimed. */
6277                if (typeof captchaHolders[holder.id] === "undefined") {
6278                    captchaHolders[holder.id] = grecaptcha.render(holder.id, {
6279                        'sitekey': '6LeMhpMUAAAAAD7DrcgNFXlb8q-GA_kY5zOzxcQb',
6280                        'callback': captchaSolvedCallback(holder)
6281                    });
6282                }
6283            }
6284        };
6285
6286        var onloadCallback = function (event) {
6287            renderArmedCaptchas();
6288        };
6289
6290    </script>
vendor: 1 bytes, line 6290
6290
6291<script>
6292    $(document).ready(function(){
6293        /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
6294           the submit button, so the click guard below never sees it and the form POSTed an
6295           empty token. Bound on document/capture so it runs before FormValidation's own
6296           handler on the form - at AT_TARGET the capture flag does not order listeners, so a
6297           listener on the form itself would not reliably win. Native HTMLFormElement.submit()
6298           does not dispatch 'submit', so the solved-captcha path below is unaffected. */
6299        var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
6300        if (captchaGuardedForm) {
6301            document.addEventListener('submit', function (event) {
6302                if (event.target !== captchaGuardedForm) {
6303                    return;
6304                }
6305
6306                var formId              = captchaGuardedForm.id;
6307                var captchaHolderKey    = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
6308                var captchaRendered     = typeof captchaHolders[captchaHolderKey] != "undefined";
6309
6310                if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
6311                    $("#" + formId + " .security_question_label").removeClass("has-error");
6312                    $("#" + formId + " #recaptcha_error").css("display", "none");
6313                    return;
6314                }
6315
6316                /* Unsolved, or api.js still in flight: either way there is no token to send. */
6317                event.preventDefault();
6318                event.stopImmediatePropagation();
6319                $("#" + formId + " .security_question_label").addClass("has-error");
6320                $("#" + formId + " #recaptcha_error").css("display", "block");
6321                return false;
6322            }, true);
6323        }
6324        $("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
6325        $("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
6326
6327            var formId = $(this.form).attr('id');
6328            var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
6329
6330            if (typeof captchaHolders[captchaHolderKey] != "undefined") {
6331                if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
6332                    event.preventDefault();
6333                    $("#" + formId).formValidation('validate');
6334                    $("#" + formId + " .security_question_label").addClass("has-error");
6335                    $("#" + formId + " #recaptcha_error").css("display", "block");
6336                    return false;
6337                }
6338
6339                /* Solved captcha: clear the error UI and let the click proceed untouched.
6340                   The browser then fires a REAL, button-initiated submit event, so
6341                   FormValidation runs its normal chain (success.form.fv -> AJAX modal on
6342                   checkout / native POST on login). Re-submitting here artificially broke
6343                   both ways: native form.submit() skips the FV chain (checkout rendered the
6344                   raw JSON response), and jQuery .submit() fires a synthetic submit that FV
6345                   refuses, leaving the form stuck after the first error (Bug 2). */
6346                $("#" + formId + " .security_question_label").removeClass("has-error");
6347                $("#" + formId + " #recaptcha_error").css("display", "none");
6348            }
6349        });
6350    });
6351</script>
6351</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='/digital-products'></form>
6351<script type="text/javascript">jQuery(document).ready(function() {		jQuery("#newsletter_modal_signup_380").bind("submit", function() { 
6352		});}); </script>
6352 						</div>						
6353						<br>
6354					</div>
6355				</div>
6356			</div>
6357		</div>
6358	</div>
6359</div>
6359<script type="text/javascript">
6360(function () {
6361    try {
6362        var email = new URLSearchParams(window.location.search).get('email');
6363        if (!email) { return; }
6364        email = email.trim();
6365        if (email.indexOf('@') === -1) { return; }
6366        /* Sets the input value property (never HTML) -> XSS-safe regardless of the query value. */
6367        var fill = function () {
6368            var fields = document.querySelectorAll('input[name="email_r"]');
6369            for (var i = 0; i < fields.length; i++) {
6370                if (!fields[i].value) { fields[i].value = email; }
6371            }
6372        };
6373        if (document.readyState === 'loading') {
6374            document.addEventListener('DOMContentLoaded', fill);
6375        } else {
6376            fill();
6377        }
6378    } catch (e) {}
6379})();
6380</script>
6380
6381                
6381<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
6381
6382                
6382<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
6382
6383                
6383<script type="text/javascript">
6384                    function decodeHtml(html) {
6385                        var txt = document.createElement("textarea");
6386                        txt.innerHTML = html;
6387                        return txt.value;
6388                    }
6389                    
6390                    // Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
6391                    $(function() {
6392                        function applyFix() {
6393                            // Check if FormValidation library and URI validator are loaded
6394                            if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
6395                                FormValidation.Validator.uri.validate = function(validator, $field, options) {
6396                                    var value = validator.getFieldValue($field, 'uri').trim();
6397                                    return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
6398                                };
6399                                return true;
6400                            }
6401                            return false;
6402                        }
6403                        
6404                        if (!applyFix()) {
6405                            setTimeout(applyFix, 50);
6406                        }
6407                    });
6408                </script>
6408
6409                        
6409<script type="text/javascript">
6410
6411        var counterSubmit = 0;
6412        $(document).ready(function() {
6413            /* grecaptcha.reset() with no argument always resets widget 0. On a page with two
6414               captcha holders that clears the wrong checkbox, so the widget the visitor solved
6415               keeps a token Google has already spent and every retry fails the security check.
6416               captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
6417               an undefined id means no per-form id is known and the arg-less call is used,
6418               exactly as before. */
6419            function bdCaptchaWidgetId(formId) {
6420                if (typeof captchaHolders === "undefined" || !formId) {
6421                    return undefined;
6422                }
6423                /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
6424                   so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
6425                   the holder element itself so the counter never has to be reconstructed. */
6426                var form = document.getElementById(formId);
6427                var holder = form && form.querySelector(".g-recaptcha");
6428                return holder ? captchaHolders[holder.id] : undefined;
6429            }
6430
6431            function bdCaptchaReset(formId) {
6432                if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
6433                    return;
6434                }
6435                var widgetId = bdCaptchaWidgetId(formId);
6436                if (widgetId === undefined) {
6437                    grecaptcha.reset();
6438                } else {
6439                    grecaptcha.reset(widgetId);
6440                }
6441            }
6442
6443            // Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
6444            // rules for fields that are NOT rendered in this form (conditionally-rendered or
6445            // duplicated form configs). Those phantom rules make formValidation mis-evaluate
6446            // isValid(), so an empty required field bypasses validation and submits natively.
6447            // Remove any rule whose field has no matching element before initializing.
6448            // NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
6449            // REMOVES rules (never adds validators, never overrides native submit, never
6450            // intercepts on capture phase, never re-validates on click) — so it cannot
6451            // reproduce the "Save button slides down / nav broken / no success message"
6452            // regression that caused #5902 to be rolled back on site 19413.
6453            var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LeMhpMUAAAAAD7DrcgNFXlb8q-GA_kY5zOzxcQb","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"}}}}};
6454            var formElement = $(`form[name='member_login_190']`);
6455            if(validatorConfig && validatorConfig.fields) {
6456                Object.keys(validatorConfig.fields).forEach(function(fieldName) {
6457                    if(formElement.find('[name="' + fieldName + '"]').length === 0) {
6458                        delete validatorConfig.fields[fieldName];
6459                    }
6460                });
6461            }
6462
6463            // Scroll to the first invalid field when submit fails validation,
6464            // so the user can immediately see why the form will not submit
6465            formElement.on('err.form.fv', function(e) {
6466                var $firstError = $(e.target).find('.form-group.has-error').first();
6467                if ($firstError.length) {
6468                    $('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
6469                }
6470            });
6471
6472            formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
6473
6474                if('member_login' == 'unsubscribe_email'){
6475                    return true;
6476                }
6477                // Prevent form submission
6478                e.preventDefault();
6479                $form = $(e.target),
6480                fv = $form.data('formValidation');
6481
6482                // Check HTML5 required fields that FormValidation may not know about
6483                var requiredEmpty = false;
6484                $form.find('[required]').each(function() {
6485                    var val = $(this).val();
6486                    if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
6487                        requiredEmpty = true;
6488                        $(this).closest('.form-group').addClass('has-error');
6489                        if ($(this).siblings('.required-error').length === 0) {
6490                            $(this).after('<small class="required-error help-block" style="color:#a94442;">Please enter a value</small>');
6491                        }
6492                    } else {
6493                        var $reqGroup = $(this).closest('.form-group');
6494                        $(this).siblings('.required-error').remove();
6495                        // Keep has-error if another validator is still failing for this field
6496                        if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6497                            $reqGroup.removeClass('has-error');
6498                        }
6499                    }
6500                });
6501                if (requiredEmpty) {
6502                    fv.disableSubmitButtons(false);
6503                    counterSubmit = 0;
6504                    // Scroll to the first field with an error (HTML5-required scan does
6505                    // not trigger err.form.fv, so handle the scroll here too)
6506                    var $firstReqError = $form.find('.form-group.has-error').first();
6507                    if ($firstReqError.length) {
6508                        $('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
6509                    }
6510                    return false;
6511                }
6512
6513                var values = $(this).serialize();
6514
6515                
6516                var locationFieldCorrect = true;
6517
6518                if($("#member_login_190 .location_required").length > 0){
6519                    $("#member_login_190 .location_required").each(function (index) {
6520                        if($(this).data('state') == 1){
6521                            if($('#member_login_190 input[name="lead_location"]').val() == "" || $('#member_login_190 input[name="lat"]').val() == "" || $('#member_login_190 input[name="lng"]').val() == "") {
6522                                locationFieldCorrect = false;
6523                            }
6524                        }
6525                    });
6526                }
6527
6528                if(locationFieldCorrect === false){
6529                    //check that there is a latitude or longitude
6530                    swal(`Whoops!`, `The location information is required to submit this form`, "error");
6531                    return false;
6532                }
6533                        
6534
6535                if (!$(this).attr("action")) {
6536                    var action = '';
6537
6538                } else {
6539                    var action = $(this).attr("action");
6540                }
6541                if (!$(this).attr("method")) {
6542                    var method = 'post';
6543
6544                } else {
6545                    var method = $(this).attr("method");
6546                }
6547                if (!$(this).attr("form_action_type")) {
6548                    var form_action_type = 'notification';
6549
6550                } else {
6551                    var form_action_type = $(this).attr("form_action_type");
6552                }
6553                if (!$(this).attr("form_action_div")) {
6554                    /* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
6555                    var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
6556
6557                } else {
6558                    var form_action_div = $(this).attr("form_action_div");
6559                }
6560                if (!$(this).attr("return_data_type")) {
6561                    var return_data_type = 'json';
6562
6563                } else {
6564                    var return_data_type = $(this).attr("return_data_type");
6565                }
6566                var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
6567                if (!submitInFlight) {
6568                    if ($("#member_login_190-notification").html() != "") {
6569                        $("#member_login_190-notification").remove();
6570                    }
6571                    if ($(this).find('input[type="submit"]').length > 0) {
6572                        $(this).find('input[type="submit"]').before('<div id="member_login_190-notification" class="alert"></div>');
6573
6574                    } else {
6575                        $(this).prepend('<div id="member_login_190-notification" class="alert"></div>');
6576                    }
6577                }
6578                var notification = $("#member_login_190-notification");
6579
6580                if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
6581                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6582                    setTimeout(function(){
6583                        fv.defaultSubmit();
6584                    }, 100);
6585                } else {
6586                    notification.html(`Processing Request...`).addClass("alert-warning-subtle");
6587                    if(!submitInFlight) {
6588                        counterSubmit++;
6589                        $form.data('bdLastSubmitAt', Date.now());
6590
6591                        var fields      = $(this).serializeArray();
6592                        var formField   = [];
6593                        var processData = true;
6594                        var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
6595                        
6596                        
6597
6598                        if($("#member_login_190 input[type=file]").length > 0){
6599                            
6600                            var formObject  = new FormData();
6601                            processData     = false;
6602                            contentType     = false;
6603
6604                            $(fields).each(function(index,field){
6605                                formField.push(field.name+"="+field.value);
6606                            });
6607
6608                            values  = formField.join("&");
6609
6610                            $(formField).each(function(index,fieldValue){
6611                                var fieldInfo = fieldValue.split('=');
6612                                formObject.append(fieldInfo[0],fieldInfo[1]);
6613                            });
6614
6615                            $("#member_login_190 input[type=file]").each(function(index,node){
6616                                var file = this.files[0];
6617                                if(typeof file != "undefined"){
6618                                    formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
6619                                }
6620                            });
6621                        }else{
6622                            
6623                            $(fields).each(function(index,field){
6624                                formField.push(field.name+"="+encodeURIComponent(field.value));
6625                            });
6626
6627                            var formObject  = formField.join("&");
6628                        } 
6629                        
6630                        $.ajax({
6631                            url: action,
6632                            type: method,
6633                            data: formObject,
6634                            dataType: return_data_type,
6635                            processData: processData,
6636                            contentType: contentType,
6637                            success: function (data) {
6638                                // Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
6639                                notification = $("#member_login_190-notification");
6640                                if (return_data_type == "html") {
6641                                    var result = 'success';
6642
6643                                    if (!data != "") {
6644                                        var result_widget = data['result_widget'];
6645                                    }
6646
6647                                } else {
6648
6649
6650                                    if (!data['result']) {
6651                                        var result = 'error';
6652                                    } else {
6653                                        var result = data['result'];
6654                                    }
6655                                    if (!data['result_widget']) {
6656                                        var result_widget = '';
6657
6658                                    } else {
6659                                        var result_widget = data['result_widget'];
6660                                    }
6661                                }
6662                                if (result == "success") {
6663
6664                                    if (!data['message']) {
6665                                        var message = `Your information has submitted successfully!`;
6666
6667                                    } else {
6668                                        var message = data['message'];
6669                                    }
6670                                    if (!data['redirect_url']) {
6671                                        var redirect_url = '';
6672
6673                                    } else {
6674                                        var redirect_url = data['redirect_url'];
6675                                    }
6676
6677
6678
6679                                    if (form_action_type == "notification") {
6680                                        if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
6681                                            if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6682                                                redirect_url = "/" + redirect_url;
6683                                            }
6684                                            if (notification.parents('.modal').length) {
6685                                                $('.modal-backdrop').hide();
6686                                                $('.modal').modal('hide');
6687                                            }
6688                                            window.location.href = redirect_url;
6689                                            fv.resetForm(true);
6690                                        } else {
6691                                        notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>')
6692                                            .addClass('alert-dismissible')
6693                                            .addClass("alert-success-subtle")
6694                                            .removeClass("alert-danger-subtle")
6695                                            .removeClass("alert-warning-subtle")
6696                                        
6697                                            
6698
6699                                        if(notification.parents('.modal').length && 'member_login_190' == 'whmcs_billing_address'){
6700                                            setTimeout(function(){
6701                                                notification.parents('.modal').modal('hide');
6702                                            }, 1000);
6703                                        }
6704                                        }
6705
6706                                    } else if (form_action_type == "widget") {
6707
6708                                        if (result_widget != '') {
6709
6710                                            setTimeout(function(){
6711                                                if(form_action_div != '.newsletter_modal_form_container'){
6712                                                    $("html, body").animate({ scrollTop: 0 }, 600);
6713                                                }                                                
6714                                                $(form_action_div).html(decodeHtml(result_widget)).text();
6715
6716                                            }, 1000);
6717                                        }
6718
6719                                    } else if (form_action_type == "redirect") {
6720
6721                                        if (redirect_url == "") {
6722                                            redirect_url = decodeURIComponent("");
6723                                        }
6724
6725                                        if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
6726                                            redirect_url = "/" + redirect_url;
6727                                        }
6728                                        current_location = "/digital-products";
6729                                        refresh_pages_string = "/login";
6730                                        refresh_pages_string = refresh_pages_string.replace(/ /g,'');
6731                                        refresh_pages_array = refresh_pages_string.split(',');
6732                                        notification.html(message)
6733                                            .addClass("alert-success-subtle")
6734                                            .removeClass("alert-danger-subtle")
6735                                            .removeClass("alert-warning-subtle")
6736                                            .delay(2000).slideUp();
6737                                            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" )){
6738                                                                                                    window.location.href = window.location.href+'?logged';
6739                                                                                            } else {
6740                                                window.location.href = redirect_url;
6741                                            }
6742
6743                                        fv.resetForm(true);
6744                                    }
6745                                    if(form_action_div != '.newsletter_modal_form_container' && 'member_login_190' != 'whmcs_billing_address'){
6746                                        $('.modal-backdrop').hide();
6747                                    }
6748                                } else {
6749                                    bdCaptchaReset(formElement.attr('id'));
6750                                    if (!data['message']) {
6751                                        var message = `You entered invali
6751d data. Please try to save again.`;
6752
6753                                    } else {
6754                                        var message = data['message'];
6755                                    }
6756                                    $("#member_login_190-notification").html(message)
6757                                        .addClass("alert-danger-subtle")
6758                                        .removeClass("alert-success-subtle")
6759                                        .removeClass("alert-warning-subtle")
6760                                        .fadeIn();
6761                                    fv.disableSubmitButtons(false);
6762                                }
6763                                counterSubmit = 0;
6764                            },
6765                            error: function (e) {
6766                                
6767                                if(typeof grecaptcha !== "undefined" && typeof grecaptcha.reset === "function"){
6768                                        bdCaptchaReset(formElement.attr('id'));
6769                                        $("#member_login_190-notification").html(`Recaptcha Error`);
6770                                } else {
6771                                    $("#member_login_190-notification").html(`A connection error occurred while saving. Please try to save again.`);
6772                                }
6773                                $("#member_login_190-notification").addClass("alert-warning-subtle")
6774                                    .removeClass("alert-success-subtle")
6775                                    .removeClass("alert-warning-subtle")
6776                                    .fadeIn();
6777                                counterSubmit = 0;
6778                            }
6779                        });/// End Ajax
6780                    }
6781                }//END else
6782            }).bind('keydown', function(event) {
6783
6784                if (event.ctrlKey || event.metaKey) {
6785
6786                    switch (String.fromCharCode(event.which).toLowerCase()) {
6787
6788                        case 's':
6789                            var nativeForm = $(this)[0];
6790                            if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
6791                                event.preventDefault();
6792                                return false;
6793                            }
6794                            $(this).submit();
6795                            break;
6796                    }
6797                }
6798            });
6799
6800            /// This will turn any select2 that are required in the form builder to being required elements.
6801            $('#member_login_190 select').each(function (i, obj) {
6802                setTimeout(function(){
6803                    if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
6804                        $(obj).css("z-index","-999");
6805                        $(obj).css("height","0");
6806                        $(obj).css("width","0");
6807                        $(obj).css("display","block");  
6808                        $(obj).css("position","absolute");  
6809                    }
6810                }, 3000);
6811            });
6812
6813            // Clear required-error messages when user fills in a required field
6814            $('#member_login_190').on('keyup change', '[required]', function() {
6815                var val = $(this).val();
6816                if (val !== '' && val !== null && val.trim() !== '') {
6817                    var $group = $(this).closest('.form-group');
6818                    // Remove only this handler's own required message
6819                    $(this).siblings('.required-error').remove();
6820                    // Keep has-error if another FormValidation validator is still failing
6821                    // (e.g. stringLength, regexp). has-error is shared, so removing it
6822                    // wholesale would clobber other validators' red styling.
6823                    if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
6824                        $group.removeClass('has-error');
6825                    }
6826                }
6827            });
6828
6829        });//END $('# echo $_SERVER[form_element_id]; ').formValidation(
6830    </script>
6830
6831            
6831<script>
6832        window.addEventListener('load', (event) => {
6833            setTimeout(() => {
6834                    }, 501);
6835        });
6836    </script>
vendor: 2 bytes, line 6836
6836
6837<script>
6838	function decision(message, url) {
6839		if (confirm(message)) {
6840			setTimeout(function () {
6841				window.location = url;
6842			}, 0);
6843		}
6844	}
6845</script>
vendor: 2 bytes, line 6845
6845
6846<script>
6847	// Function to add alt, width, and height attributes to <img> elements without them
6848	function addAttributesToImages() {
6849		var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])');
6850		Array.prototype.forEach.call(images, function(img) {
6851			// Skip if we've already processed this image
6852			if (img.dataset.processed === 'true') {
6853				return;
6854			}
6855			
6856			// Mark this image as being processed
6857			img.dataset.processed = 'true';
6858			
6859			// Add alt attribute if missing
6860			if (!img.hasAttribute('alt')) {
6861				var src = img.getAttribute('src') || 'image';  // Default src to 'image' if missing
6862				var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, '');
6863
6864				try {
6865					altText = decodeURIComponent(altText)
6866					.replace(/[_\-+,.:;]+/g, ' ')
6867					.replace(/\s+/g, ' ')
6868					.trim();
6869				} catch (e) {
6870					altText = 'image';  // Fallback to 'image' if decoding fails
6871				}
6872
6873				// Ensure altText is not empty, otherwise use 'image'
6874				altText = altText || 'image';
6875
6876				img.setAttribute('alt', altText);
6877			}
6878
6879			// Add width and height attributes if missing
6880			if (!img.hasAttribute('width') || !img.hasAttribute('height')) {
6881				// Handle SVG differently
6882				if (img.src && img.src.endsWith('.svg')) {
6883					// For SVG, use the viewBox to set width and height, if available
6884					fetch(img.src)
6885					.then(response => {
6886						if (!response.ok) {
6887							throw new Error('Failed to fetch SVG: ' + response.status);
6888						}
6889						return response.text();
6890					})
6891					.then(svgText => {
6892						var parser = new DOMParser();
6893						var svgDoc = parser.parseFromString(svgText, "image/svg+xml");
6894						var svgElement = svgDoc.querySelector('svg');
6895						
6896						if (svgElement) {
6897							var viewBox = svgElement.getAttribute('viewBox');
6898							if (viewBox) {
6899								var viewBoxValues = viewBox.split(' ');
6900								var width = viewBoxValues[2];
6901								var height = viewBoxValues[3];
6902
6903								if (!img.hasAttribute('width')) {
6904									img.setAttribute('width', width);
6905								}
6906								if (!img.hasAttribute('height')) {
6907									img.setAttribute('height', height);
6908								}
6909							}
6910						}
6911					})
6912					.catch(error => {
6913						// Fallback to default dimensions for SVG
6914						if (!img.hasAttribute('width')) {
6915							img.setAttribute('width', '100');
6916						}
6917						if (!img.hasAttribute('height')) {
6918							img.setAttribute('height', '100');
6919						}
6920					});
6921				} else {
6922					// For non-SVG images, use natural dimensions
6923					var tempImg = new Image();
6924					tempImg.src = img.src;
6925					
6926					tempImg.onload = function() {
6927						if (!img.hasAttribute('width')) {
6928							img.setAttribute('width', tempImg.naturalWidth);
6929						}
6930						if (!img.hasAttribute('height')) {
6931							img.setAttribute('height', tempImg.naturalHeight);
6932						}
6933					};
6934					
6935					tempImg.onerror = function() {
6936						// Fallback to default dimensions
6937						if (!img.hasAttribute('width')) {
6938							img.setAttribute('width', '100');
6939						}
6940						if (!img.hasAttribute('height')) {
6941							img.setAttribute('height', '100');
6942						}
6943					};
6944				}
6945			}
6946		});
6947	}
6948
6949	document.addEventListener('DOMContentLoaded', function() {
6950		// Run the function initially to catch images already in the DOM
6951		addAttributesToImages();
6952
6953		// Create a MutationObserver to monitor the DOM for added/changed images
6954		var observer = new MutationObserver(function(mutations) {
6955			mutations.forEach(function(mutation) {
6956				if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') {
6957					// Only process if we have new images or src attribute changes
6958					var hasNewImages = false;
6959					
6960					if (mutation.addedNodes.length > 0) {
6961						mutation.addedNodes.forEach(function(node) {
6962							if (node.nodeType === 1) { // Element node
6963								if (node.tagName === 'IMG' || node.querySelectorAll) {
6964									hasNewImages = true;
6965								}
6966							}
6967						});
6968					}
6969					
6970					if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
6971						hasNewImages = true;
6972					}
6973					
6974					if (hasNewImages) {
6975						addAttributesToImages();
6976					}
6977				}
6978			});
6979		});
6980
6981		// Start observing the document body for changes
6982		observer.observe(document.body, {
6983			childList: true, // Watch for added or removed nodes
6984			subtree: true, // Watch the entire subtree
6985			attributes: true, // Watch for attribute changes
6986			attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute
6987		});
6988	});
6989</script>
6989<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] {
6990    cursor: wait
6991}
6992select.select2-preload {
6993    line-height: initial;
6994}
6995
6996select#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"] {
6997    -webkit-appearance: none;
6998    -moz-appearance: none;
6999    appearance: none;
7000    background-image: url(https://ik.imagekit.io/limousine/limousineworldwide/images/select2ArrowDown.png) !important;
7001    background-repeat: no-repeat !important;
7002    background-size: 10px 9px !important;
7003    background-position: 99% 16px;
7004    border-radius: 6px;
7005    overflow: hidden;
7006}
7007.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"] {
7008    background-position: 98.2% 12px;
7009} </style>
7009<script>
7010    // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score
7011    $(document).ready(function() {
7012        var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness
7013
7014        // Iterate over each select element that does not have an aria-label
7015        $('select:not([aria-label])').each(function() {
7016            // Use the ID or placeholder as the base for the aria-label, stripping HTML tags
7017            var baseLabel = this.id || $(this).attr('placeholder') || 'select';
7018            baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim
7019
7020            // Ensure uniqueness of each aria-label
7021            ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1;
7022            var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel];
7023
7024            // Truncate aria-label to 100 characters
7025            ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel;
7026
7027            // Set the aria-label attribute to the unique label
7028            $(this).attr('aria-label', ariaLabel);
7029        });
7030    });
7031</script>
vendor: 2 bytes, line 7031
7031
7032<script type="application/ld+json">
7033{
7034    "@context": "https://schema.org",
7035    "@graph": [
7036        {
7037            "@type": "WebSite",
7038            "@id": "https://www.limousineworldwide.directory/#website",
7039            "name": "Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide",
7040            "url": "https://www.limousineworldwide.directory/",
7041            "inLanguage": "en-US",
7042            "potentialAction": {
7043                "@type": "SearchAction",
7044                "target": "https://www.limousineworldwide.directory/sitesearch?q={search_term_string}",
7045                "query-input": "required name=search_term_string",
7046                "name": "Search Directory: Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide"
7047            },
7048            "publisher": {
7049                "@id": "https://www.limousineworldwide.directory/#organization"
7050            }
7051        },
7052        {
7053            "@type": "Organization",
7054            "@id": "https://www.limousineworldwide.directory/#organization",
7055            "name": "Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide",
7056            "description": "Limousine Worldwide Directory: find verified limo companies, black car and chauffeur services in 100+ countries. Worldwide limo service, airport transfers and free quotes.",
7057            "url": "https://www.limousineworldwide.directory/",
7058            "mainEntityOfPage": {
7059                "@type": "WebPage",
7060                "@id": "https://www.limousineworldwide.directory/#webpage"
7061            },
7062            "contactPoint": [
7063                {
7064                    "@type": "ContactPoint",
7065                    "email": "[email protected]",
7066                    "contactType": "customer support",
7067                    "availableLanguage": [
7068                        "en"
7069                    ],
7070                    "areaServed": "US"
7071                }
7072            ],
7073            "areaServed": {
7074                "@type": "Country",
7075                "name": "US"
7076            },
7077            "telephone": "(877) 860-3388",
7078            "sameAs": [
7079                "https://www.facebook.com/LimousineWorldwideDirectory-2434010183485844/?modal=admin_todo_tour",
7080                "https://twitter.com/LimousineWorld1",
7081                "https://www.linkedin.com/company/limousine-worldwide-directory/?viewAsMember=true",
7082                "https://www.youtube.com/watch?v=WDQUdBW9OXw&list=UUQZHRCCevdhN3zYKr_kupeQ",
7083                "https://www.instagram.com/limowwd/",
7084                "https://www.limousineworldwide.directory/rss"
7085            ],
7086            "logo": {
7087                "@type": "ImageObject",
7088                "@id": "https://www.limousineworldwide.directory/#logo",
7089                "url": "https://ik.imagekit.io/limousine/limousineworldwide/images/new1-LWD-color--logo-480x80.gif"
7090            },
7091            "image": {
7092                "@type": "ImageObject",
7093                "@id": "https://www.limousineworldwide.directory/#image",
7094                "url": "https://ik.imagekit.io/limousine/limousineworldwide/images/new1-LWD-color--logo-480x80.gif"
7095            },
7096            "keywords": [
7097                "limo service",
7098                "limousine service",
7099                "limo service near me",
7100                "black car service",
7101                "chauffeur service",
7102                "airport limo service",
7103                "limo rental",
7104                "limo companies near me",
7105                "wedding limo",
7106                "corporate limousine service",
7107                "limo directory",
7108                "worldwide limousine service",
7109                "Limousine Companies | Owner Operators | Limousine Drivers Network Worldwide",
7110                "Limousine Companies | Owner Operators | Limousine Chauffeurs and Allied Businesses Worldwide | Reserve Limousine OnLine",
7111                "Limousine Companies | Limo Owner Operators and Limousine Drivers"
7112            ]
7113        }
7114    ]
7115}</script>
7115
7116
7117<script>
7118// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete
7119(function() {
7120    if (!document.querySelector('link[href*="bootstrap-icons"]')) {
7121        var link = document.createElement('link');
7122        link.rel = 'stylesheet';
7123        link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1';
7124        document.head.appendChild(link);
7125    }
7126})();
7127</script>
7127<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 7127-7128
7127
7128<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
7128GTM-T4CQXFK
vendor: 85 bytes, lines 7128-7129
7128"
7129height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
7130<!-- End Google Tag Manager (noscript) -->
7131<!--Start of Tawk.to Script-->
7132<script type="text/javascript">
7133var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
7134(function(){
7135var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
7136s1.async=true;
7137s1.src='https://embed.tawk.to/5d13efc053d10a56bd7c072c/default';
7138s1.charset='UTF-8';
7139s1.setAttribute('crossorigin','*');
7140s0.parentNode.insertBefore(s1,s0);
7141})();
7142</script>
7142
7143<!--End of Tawk.to Script-->
7144
7145<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input {
7146			border-radius: 0 8px 8px 0 !important;
7147	}
7148.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead {
7149	display: inline-block;
7150	height: 25px;
7151	position: relative;
7152	width: 100%;
7153}
7154.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) {
7155	width: inherit;
7156}
7157.normal-autosuggest .twitter-typeahead .clear_content.medium{
7158	bottom: 0px;
7159}
7160.sm-autosuggest .twitter-typeahead .clear_content.small{
7161	bottom: -4px;
7162}
7163.md-autosuggest.input-group .twitter-typeahead .clear_content.medium  {
7164    bottom: -2px;
7165}
7166.md-autosuggest .twitter-typeahead {
7167	height: 32px;
7168}
7169.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead {
7170	height: 38px;
7171	vertical-align: top;
7172}
7173.md-autosuggest-input + .clear_content.medium {
7174    bottom: 0px;
7175}
7176.large-autosuggest .twitter-typeahead {
7177	height: 40px;
7178}
7179.normal-autosuggest .twitter-typeahead{
7180	height: 38px;
7181}
7182.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint {
7183	background: #fff !important;
7184	border: 1px solid #ccc!important;
7185	border-radius: 0 8px 8px 0;
7186	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
7187	color: transparent;
7188	left: 0;
7189	padding: 4px 11px;
7190	position: absolute;
7191	top: 0;
7192	width: 100%;
7193	font-size:12px;
7194}
7195.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px}
7196.md-autosuggest .twitter-typeahead .tt-hint {
7197	height: 100%;
7198	background: #ffffff none repeat scroll 0 0 !important;
7199	border: 1px solid #cccccc !important;
7200	border-radius: 0 8px 8px 0;
7201	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important;
7202	color: rgba(0, 0, 0, 0);
7203	left: 0;
7204	padding: 6px 11px;
7205	position: absolute;
7206	top: 0;
7207	width: 100%;
7208}
7209.large-autosuggest {background: #fff !important;border-radius:10px;}
7210.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;}
7211	.input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint {
7212		border-radius: 0 10px 10px 0!important;
7213	}
7214	.large-autosuggest .twitter-typeahead .tt-hint {
7215	background: #fff !important;
7216	border: 1px solid #ccc!important;
7217	border-radius: 10px;
7218	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
7219	color: transparent;
7220	left: 0;
7221	position: absolute;
7222	top: 0;
7223	width: 100%;
7224	font-size: 18px;
7225	height: 46px;
7226	line-height: 1.33333;
7227	padding: 10px 15px;
7228}	
7229.tt-dataset .empty-message {
7230	display: none !important;
7231}
7232.twitter-typeahead .tt-query {background-color:#fff!important}
7233.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;}
7234span.tt-dropdown-menu {
7235	border: 1px solid #FCFCFC;
7236	border-radius: 5px;
7237	box-shadow: 0 5px 10px rgba(0,0,0,.2);
7238	width: 100% !important;
7239}
7240.tt-is-under-cursor a.suggest-link {
7241	background: #55ACEE;
7242}
7243
7244.tt-is-under-cursor .media-heading,
7245.tt-is-under-cursor .suggest-origin,
7246.tt-is-under-cursor .location{
7247	color:#fff!important;
7248}
7249.tt-suggestion .media .media-body .suggest-origin {
7250		color: rgba(45, 91, 137,0.9);
7251	padding: 1px 0;
7252	border-radius: 6px;
7253	font-weight: bold;
7254	line-height: 12px;
7255}
7256.tt-suggestion {
7257	background: #fff;
7258	border-bottom: 1px solid #eee;
7259	-webkit-transition: all 0.3s ease-in-out;
7260	-moz-transition: all 0.3s ease-in-out;
7261	-o-transition: all 0.3s ease-in-out;
7262	transition: all 0.3s ease-in-out;
7263}
7264body .tt-suggestions .media.br-bottom img {
7265	max-width: 45px;
7266	height: auto;
7267}
7268body .tt-suggestions .media-body span {
7269	font-size: 10px;
7270}
7271body .tt-suggestions .media-body h4 {
7272	font-size: 12px;
7273	margin: 2px 0px;
7274	text-transform: capitalize;
7275}
7276a.suggest-link {
7277	padding: 5px;
7278	display: block;
7279}
7280a.suggest-link img {
7281	border-radius: 100px;
7282	display: block;
7283	margin: 0 auto;
7284	height: 100%!important;
7285	width: 100%;
7286	object-fit: cover;
7287}
7288.left-suggest-col {
7289	display: inline-block;
7290	vertical-align: middle;
7291	width: 44px;
7292	height: 44px;
7293}
7294.right-suggest-col {
7295	display: inline-block;
7296	padding-left: 1%;
7297	text-align: left;
7298	vertical-align: middle;
7299	width: calc(100% - 1% - 50px);
7300}
7301p.media-heading {
7302	color: #333;
7303	font-size: 12px;
7304	font-weight: 600;
7305	margin-bottom: 0;
7306}
7307p.suggest-origin {
7308	font-size: 10px;
7309	color: #333;
7310	margin:0;
7311}
7312p.location {
7313	color: #333;
7314	font-size: 10px;
7315	margin: 2px 0;
7316}
7317body .tt-is-under-cursor a.suggest-link {
7318	background: #F7F7F7;
7319}
7320body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location {
7321	color: #333!important;
7322}
7323a.suggest-link[data-heading="heading"] {
7324	 pointer-events: none;
7325  	cursor: default;
7326  	text-decoration: none;
7327}
7328body .tt-is-under-cursor a.suggest-link[data-heading="heading"] {
7329	background: rgb(137, 62, 62);
7330}
7331/* --- all the novalue css --- */
7332a.suggest-link .suggest-origin[data-state="novalue"] {
7333	display: none;
7334}
7335a.suggest-link .location[data-state="novalue"] {
7336	display: none;
7337}
7338a.suggest-link img[data-state="novalue"] {
7339	display: none;
7340}
7341a.suggest-link .suggest-origin[data-state="heading"] {
7342	display: none;
7343}
7344a.suggest-link .media-heading[data-heading="heading"] {
7345	color:rgb(253, 252, 252)!important;
7346	font-weight: bold;
7347	padding: 4px;
7348	font-size: 13px;
7349}
7350.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] {
7351	display: none;
7352}
7353.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] {
7354	width: 100%;
7355}
7356a.suggest-link[href="novalue"] {
7357	cursor: default !important;
7358	pointer-events: none;
7359}
7360a.suggest-link[data-heading="heading"] {
7361	background-color: rgb(137, 62, 62);
7362}
7363div.content-shell {
7364	overflow: inherit;
7365}
7366span.tt-dropdown-menu div {
7367	float: none;
7368}
7369.tt-menu {
7370	border-radius: 0 0 6px 6px;
7371	box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
7372	overflow: hidden;
7373	width: 100%;
7374	z-index: 150 !important;
7375}
7376.tt-menu .tt-dataset {
7377    overflow-y: auto;
7378    max-height: 200px;
7379} </style>
7379<script>
7380    window.addEventListener('load', () => {
7381        let embedlyClass = document.querySelector('.fr-embedly');
7382        if (typeof embedlyClass != "undefined" && embedlyClass != null) {
7383            let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js";
7384            let head = document.getElementsByTagName("head")[0];
7385            let script = document.createElement('script');
7386            script.type = 'text/javascript';
7387            script.src = embedlyURI;
7388            script.async = true;
7389            script.onload = function() {
7390                setTimeout(function() {
7391                    if (typeof embedly !== 'undefined' && embedly.card) {
7392                        document.querySelectorAll('.embedly-card').forEach(function(card) {
7393                            embedly.card(card);
7394                        });
7395                    }
7396                }, 500);
7397            };
7398            head.appendChild(script);
7399        }
7400    });
7401</script>
7401<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
7401<script>
7402                            $(function () {
7403                                $(".lazyloader").Lazy({
7404                                    afterLoad: function(element) {
7405                                        $(".gridView.activeView").click();
7406                                    }
7407                                });
7408                                
7409                            });
7410                            $("button[class*='slick'],button[id*='slick']").click(function () {
7411                              $(this).parents(".row").find(".lazyloader").lazy({
7412                                    bind: "event",
7413                                    delay: 0
7414                                });
7415                            });
7416                            $("[class*='slick'],[id*='slick']").on("swipe",function(){
7417                              $(this).parents(".row").find(".lazyloader").lazy({
7418                                    bind: "event",
7419                                    delay: 0
7420                                });
7421                            });
7422                        </script>
7422<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
7422
7423            </body>
7424        </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.