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