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">×</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 © 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">× 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®ion=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">×</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">×</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">×</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.