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