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 <!-- Preconnect --> 8 <link rel="preconnect" href="https://www.optimizecdn.com" crossorigin> 9 <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin> 10 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 11 <link rel="apple-touch-icon" href="/images/favicon-rsp-2_1.png"> 12 <link rel="icon" type="image/png" href="/images/favicon-rsp-2_1.png"> 13 14 <!-- Site Meta Data --> 15 <title>INDIVIDUAL MEMBER Registration for non-companiesHave your say! It's FREE Account Secure Signup - Join RedSeaPages</title> 16 <meta name="description" content="Create a INDIVIDUAL MEMBER Registration for non-companiesHave your say! It's FREE account with RedSeaPages now. It's fast, secure and easy to use."> 17 <meta name="keywords" content="Red Sea Directory For El Gouna, Hurghada, Safaga, Al Qusair And Marsa Alam,Red Sea Directory For El Gouna, Hurghada, Safaga, Al Qusair And Marsa Alams,Red Sea Directory for El Gouna, Hurghada, Safaga, Al Qusair and Marsa Alam,create account,signup,sign up,RedSeaPages"> 18 <meta name="robots" content="noindex, nofollow"> 19 20 <!-- Canonical URL --> 21 <link rel="canonical" href="https://www.redseapages.com/checkout/5"> 22 <span style="position:absolute;color:transparent;width:100%;z-index:-1;height:50px;top:0;"> 23 www.redseapages.com - RedSeaPages</span> 24 25 <!-- Preload --> 26 <link rel="preload" as="style" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=04.12.24.19" importance="high"> 27 28 <!-- Non-Critical Stylesheet - Render Before Critical Styles --> 29 <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=2.1.1"> 30 <noscript> 31 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css"> 32 </noscript> 33 34 <!-- Critical Stylesheet --> 35 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=04.12.24.19"> 36 37 <!-- Google Fonts Stylesheet --> 38 <link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Quicksand:300,400,600,700,800,900&display=swap"> 39 <noscript> 40 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cabin:300,400,600,700,800,900|PT+Sans:300,400,600,700,800,900|Quicksand:300,400,600,700,800,900&display=swap"> 41 </noscript> 42 43 <!-- FontAwesome Stylesheet --> 44 <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"> 45 <noscript> 46 <link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css"> 47 </noscript> 48 49 <!-- Critical JavaScript --> 50
50<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/jquery.min.js"></script>
50 51
51<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/libraries/latest/bootstrap.min.js"></script>
51 52
52<script> 53 /* jQuery.event.special.touchstart = { 54 setup: function( _, ns, handle ) { 55 this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") }); 56 } 57 }; */ 58 jQuery.event.special.touchmove = { 59 setup: function( _, ns, handle ) { 60 this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") }); 61 } 62 }; 63 jQuery.event.special.wheel = { 64 setup: function( _, ns, handle ){ 65 this.addEventListener("wheel", handle, { passive: true }); 66 } 67 }; 68 jQuery.event.special.mousewheel = { 69 setup: function( _, ns, handle ){ 70 this.addEventListener("mousewheel", handle, { passive: true }); 71 } 72 }; 73 </script>
73 74 75 76 77 <!-- Prefetch --> 78 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script"> 79 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=0.4" as="script"> 80 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css" as="style"> 81 <link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js" as="script"> 82 83 <!-- Social Media Meta Data --> 84 <meta property="og:type" content="website"> 85 <meta property="og:url" content="https://www.redseapages.com/checkout/5"> 86 <meta property="og:site_name" content="RedSeaPages"> 87 <meta property="og:title" content="INDIVIDUAL MEMBER Registration for non-companiesHave your say! It's FREE Secure Signup - Join RedSeaPages"> 88 <meta property="og:description" content="Create a INDIVIDUAL MEMBER Registration for non-companiesHave your say! It's FREE account with RedSeaPages now. It's fast, secure and easy to use."> 89 <meta property="og:image" content="https://www.redseapages.com/images/Pages/Meta SEO Pics/Girl-on-Beach-1200x630.jpg"> 90 <!-- Custom Site-wide HEAD Content --><meta property="fb:app_id" content="1204237346663128" /> 91</head> 92 93<body class="general-session"><!-- 94IMPORTANT: 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. 95 96INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section. 97--> 98<style> 99 .upload-form-field::before { 100 content: "choose files"; 101 display: inline-block; 102 border: 1px solid #999; 103 border-radius: 3px; 104 padding: 5px 8px; 105 } 106 #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 { 107 white-space: nowrap !important; 108 } 109 /* Main Website Design */ 110 body,.modal-header,.modal-content,.modal-body,.modal-footer { 111 background: rgb(253, 253, 253); 112 color: rgb(64, 64, 66); 113 font-family: 'Cabin'; 114 font-size: 14px; 115 } 116 .select2-container .select2-choice { 117 font-family: 'Cabin'!important; 118 } 119 html{ 120 background: rgb(64, 64, 66) } 121 .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow { 122 color: #000 !important; 123 } 124 a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) { 125 color: rgb(51, 122, 183); 126 } 127 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 { 128 color: rgb(35, 82, 124); 129 } 130 .breadcrumb a{ 131 color: rgba(119, 119, 119,0.9); 132 } 133 .breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active { 134 color: rgb(119, 119, 119); 135 } 136 .help-inline, .help-block { 137 color: rgba(64, 64, 66,0.5); 138 } 139 .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { 140 font-family: 'PT Sans'; 141 } 142 /* Header Design */ 143 .header, .mobile_website_logo img { 144 background: rgb(255, 255, 255); 145 } 146 .header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span { 147 color: rgb(64, 64, 66); 148 font-size: 15px; 149 } 150 .header .mini-nav li a:not(.btn):hover { 151 color: rgba(64, 64, 66,0.95); 152 } 153 .header .btn_get_listed { 154 background-color: rgb(42, 178, 123); 155 border: 1px solid rgb(42, 178, 123); 156 color: rgb(255, 255, 255)!important; 157 } 158 .header .btn_get_listed:hover, .header .btn_get_listed:focus { 159 background-color: rgba(42, 178, 123,0.97); 160 } 161 .header .btn_search { 162 background-color: rgba(6, 127, 174,0.97); 163 border: 1px solid rgb(6, 127, 174); 164 color: rgb(255, 255, 255); 165 } 166 .header .btn_search:hover, .header .btn_search:focus { 167 background-color: rgb(6, 127, 174); 168 color: rgb(255, 255, 255); 169 } 170 171 /* Logo Design */ 172 .logo,.logo:hover,.logo:focus { 173 color: rgb(32, 80, 129); 174 font-family: 'PT Sans'; 175 } 176 .logo .slogan { 177 color: rgb(153, 153, 153); 178 } 179 .logo .fa { 180 color: rgb(32, 80, 129); 181 } 182 183 /* Main Menu Design */ 184 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 185 background: rgb(238, 238, 238); 186 position: sticky; 187 z-index: 1; 188 top: 0px; 189 } 190 /* Google Translate When Main Menu Sticky Top */ 191 @media only screen and (max-width: 1100px) { 192 .member-profile-tabs > ul, .member-profile-tabs .tabs-container { 193 top: 50px; 194 } 195 } 196 .header ul.nav.navbar-nav li ul { 197 background-color: rgb(6, 127, 174); 198 } 199 .header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span { 200 color: rgb(255, 255, 255); 201 font-weight: 400; 202 } 203 .header .navbar-default, .pagination > .active > a { 204 background-color: rgb(6, 127, 174); 205 } 206 .header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{ 207 border-left-color: rgb(255, 255, 255); 208 background: rgb(255, 255, 255); 209 color: rgb(6, 127, 174); 210 }
211 .navbar-default .navbar-toggle .icon-bar { 212 background-color: rgb(255, 255, 255); 213 } 214 .user_sidebar, .main_menu, .compact-mobile-search { 215 color: rgb(255, 255, 255); 216 } 217 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 218 color: rgb(255, 255, 255); 219 font-weight: 400; 220 } 221 .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 { 222 color: rgb(255, 255, 255); 223 } 224 .navbar-default .navbar-nav > li { 225 font-family: 'Cabin'; 226 } 227 .header nav.navbar.navbar-default {display: none;} 228 @media only screen and (max-width: 1100px) { 229 body .announcement-bar {margin-top: 0 !important;} 230 } 231 @media only screen and (max-width: 991px) { 232 .header .navbar-default .navbar-toggle.main_menu {display: none;} 233 } 234 235 #website_logo .logo-image { 236 max-width: 170px; 237 } 238 239 240 /* Footer Design */ 241 .footer { 242 background-color: rgb(64, 64, 66); 243 display: block; 244 } 245 .footer, .footer_menu a,.footer_terms a,.footer_menu .content { 246 color: rgb(239, 239, 239); 247 } 248 .footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus { 249 color: rgb(255, 255, 255); 250 } 251 .footer_menu .head { 252 color: rgb(255, 255, 255); 253 } 254 .btn_footer_get_listed { 255 background-color: rgb(42, 178, 123); 256 border: 1px solid rgb(42, 178, 123); 257 color: rgb(255, 255, 255)!important; 258 } 259 .btn_footer_get_listed:hover, .btn_footer_get_listed:focus{ 260 background-color: rgba(42, 178, 123,0.95); 261 } 262 263 /* Homepage Design */ 264 .homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 { 265 font-family: 'PT Sans'; 266 } 267 .homepage_settings h1, .homepage_map h1 { 268 color: rgb(60, 187, 222); 269 font-weight: 600; 270 text-align: center; 271 } 272 .homepage_settings h2, .homepage_map h2 { 273 color: rgb(0, 102, 153); 274 font-weight: 400; 275 text-align: center; 276 277 } 278 .homepage_settings .search_box label { 279 color: rgb(255, 255, 255); 280 } 281 .btn_home_search, .search_box input[type=submit] { 282 background-color: rgb(42, 178, 123); 283 border: 1px solid rgb(42, 178, 123); 284 color: rgb(255, 255, 255); 285 } 286 .btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus { 287 background-color: rgba(42, 178, 123,0.97); 288 color: rgb(255, 255, 255); 289 } 290 .homepage_settings .search_box { 291 padding: 10px; 292 293 background-color: rgba( 6, 127, 174, 0.6); 294 } 295 296 /* Homepage Steps Module */ 297 .homepage_steps { 298 background: none; 299 box-shadow: none; 300 padding: 0; 301 color: rgb(255, 255, 255); 302 } 303 .homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{ 304 color: rgb(255, 255, 255)!important; 305 } 306 .homepage_steps .fa { 307 color: rgb(32, 166, 217); 308 background-color: rgba(32, 166, 217,0.075); 309 } 310 .homepage_steps h2 + p { 311 opacity: .6; 312 } 313 314 /* Blog Posts Slider Settings */ 315 #myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 { 316 color: rgb(71, 71, 71); 317 } 318 #myCarousel .list-group-item { 319 background-color: rgba(245, 245, 245,0.9); 320 border-color: rgba(245, 245, 245,0.80); 321 } 322 #myCarousel .carousel-caption { 323 background-color: rgba(245, 245, 245,0.8); 324 } 325 #myCarousel .list-group, #myCarousel .carousel-inner { 326 background-color: rgb(245, 245, 245) } 327 #myCarousel .list-group .active, #myCarousel .list-group-item:hover { 328 background-color: rgb(245, 245, 245) } 329 #myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{ 330 color: rgb(71, 71, 71); 331 } 332 333 /* Additional Settings */ 334 .well blockquote { 335 background: rgb(253, 253, 253) none repeat scroll 0 0; 336 border-color: rgb(238, 238, 238); 337 color: rgb(64, 64, 66); 338 padding: 10px 20px; 339 } 340 .account-form-box form table tr td table { 341 background-color: transparent!important; 342 border: none!important; 343 } 344 345 .account-form-box form table tr td table td { 346 background-color: transparent!important; 347 color: rgb(64, 64, 66)!important; 348 border: none!important; 349 } 350 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{ 351 color: rgb(64, 64, 66)!important; 352 } 353 .table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td { 354 border-color: rgba(85, 85, 85,0.1); 355 background-color: rgb(238, 238, 238); 356 color: rgb(85, 85, 85);
357 font-weight:600; 358 border-left: none; 359 border-bottom-width: 1px; 360 } 361 .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer { 362 border-color: rgba(85, 85, 85,0.1); 363 } 364 .table > tfoot > tr > td:not(:last-child) { 365 border-right: 1px solid rgba(85, 85, 85,0.1); 366 } 367 table.dataTable.no-footer, table.dataTable { 368 border: 1px solid rgb(238, 238, 238)!important; 369 } 370 .table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div { 371 border-top:1px solid rgb(238, 238, 238); 372 } 373 .table-view .table-view-group:last-child { 374 border-bottom:1px solid rgb(238, 238, 238); 375 } 376 table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped { 377 background-color: rgb(250, 250, 250)!important; 378 } 379 .table-striped.dataTable, .table-striped, .fr-view .table-striped { 380 border: 1px solid rgba(85, 85, 85,0.15); 381 border-collapse: separate; 382 overflow: hidden; 383 } 384 table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) { 385 overflow: visible; 386 } 387 .table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) { 388 background-color: rgba(253, 253, 253,0.5)!important; 389 } 390 .nav-tabs, hr, .account-menu-title, .modal-header { 391 border-color: rgb(238, 238, 238); 392 } 393 .sidemenu_panel .list-group-item{ 394 background-color: transparent!important; 395 color: rgb(41, 41, 41)!important; 396 } 397 .img-thumbnail { 398 background-color: rgb(250, 250, 250)!important; 399 border: 1px solid rgb(238, 238, 238); 400 } 401 .member_admin_sidemenu p, .member_admin_sidemenu h3 { 402 color: rgb(41, 41, 41)!important; 403 } 404 .close { 405 color: rgb(64, 64, 66); 406 opacity: 1; 407 } 408 .member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 { 409 font-size:34px; 410 display: block; 411 } 412 .member_results_header h2, .feature_results_header h2 { 413 font-size:28px; 414 display: block; 415 } 416 .homepage_settings { 417 padding-top: 0px; 418 padding-bottom: 0px; 419 } 420 @media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}} 421 @media only screen and (max-width: 768px) { 422 .member-profile-header .favorite {float:none} 423 } 424 425 426 @media only screen and (max-width: 1100px) { 427 .header {margin-top: 0px!important;} 428 } 429 .views > i.fa.activeView, .views > i.fa:hover { 430 background-color: rgb(64, 64, 66); 431 color: rgb(253, 253, 253); 432 } 433 .views > i.fa { 434 background-color: rgba(64, 64, 66,0.1); 435 color: rgb(64, 64, 66); 436 } 437 .ui-rangeSlider-label { 438 background-color: rgb(6, 127, 174)!important; 439 color: rgb(255, 255, 255)!important; 440 } 441 .pricing_menu li .title { 442 background: rgb(6, 127, 174); 443 color: rgb(255, 255, 255); 444 } 445 p.account-tip{ 446 color: rgb(64, 64, 66); 447 } 448 .circled_number { 449 background: rgb(0, 102, 153); 450 color: rgb(255, 255, 255); 451 } 452 .pic { 453 background-color: rgba(253, 253, 253,0.8); 454 color: rgb(255, 255, 255); 455 background-repeat: no-repeat; 456 background-position: center; 457 } 458 .pic .pic-caption { 459 background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(253, 253, 253,0.85) 50%); 460 color: rgb(255, 255, 255); 461 } 462 .slick-prev-fa i, .slick-next-fa i{ 463 color: rgb(253, 253, 253); 464 } 465 .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 { 466 background-color: rgb(250, 250, 250); 467 border-color: rgb(238, 238, 238); 468 color: rgb(41, 41, 41); 469 } 470 .nav-pills > li.active a, .nav-pills > li > a:hover { 471 background-color: rgb(6, 127, 174)!important; 472 border-color: rgb(6, 127, 174)!important; 473 color: rgb(255, 255, 255)!important; 474 } 475 .sidemenu_panel .panel-heading { 476 color: rgb(41, 41, 41)!important; 477 background-color: rgb(250, 250, 250)!important; 478 } 479 .member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a { 480 background: rgba(250, 250, 250,0.5); 481 color: #707071; 482 } 483 .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 { 484 background: rgba(250, 250, 250,1); 485 color: rgb(64, 64, 66); 486 }
487 .author-snapshot .well:not(.well.bg-default) { 488 background-color: rgb(250, 250, 250)!important; 489 border-color: rgb(238, 238, 238)!important; 490 color: rgb(41, 41, 41)!important; 491 } 492 .nav-tabs>li>a, .nav-pills>li>a { 493 font-weight: 600; 494 } 495 .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{ 496 color: rgba(41, 41, 41,0.5); 497 } 498 #service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a { 499 color: rgb(41, 41, 41) !important; 500 } 501 .popover { 502 background-color: rgb(250, 250, 250); 503 border-color: rgb(250, 250, 250); 504 padding:0; 505 text-align:left; 506 } 507 .popover-title, .popover-content { 508 background-color: rgb(250, 250, 250); 509 color: rgb(41, 41, 41); 510 border-color: rgb(250, 250, 250); 511 text-align:left; 512 } 513 .popover-content { 514 background-color: rgba(41, 41, 41,.05); 515 border-radius: 4px; 516 transform: translate(-1px, -1px); 517 width: calc(100% + 2px); 518 margin-bottom: -2px; 519 } 520 .popover.left > .arrow::after { 521 border-left-color: rgb(250, 250, 250)!important; 522 } 523 .popover.right > .arrow::after { 524 border-right-color: rgb(250, 250, 250)!important; 525 } 526 .popover.bottom > .arrow::after { 527 border-bottom-color: rgb(250, 250, 250)!important; 528 } 529 .popover.top > .arrow::after { 530 border-top-color: rgb(250, 250, 250)!important; 531 } 532 .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{ 533 background-color: rgb(253, 253, 253); 534 color: rgb(64, 64, 66); 535 } 536 .module h1, .module h2, .module h3, .module h4, .module h5 { 537 color: rgb(62, 62, 62); 538 } 539 .module p:not(.fr-box.fr-basic .fr-element p) { 540 color: rgb(41, 41, 41); 541 } 542 .pagination>.active>a { 543 border-color: rgba(255, 255, 255,0.2); 544 } 545 .pagination>.active>a { 546 color: rgb(255, 255, 255); 547 } 548 .pagination > .active > a:hover, .pagination > .active > a:focus { 549 border-color: rgba(255, 255, 255,0.2); 550 background-color: rgb(6, 127, 174); 551 color: rgb(255, 255, 255); 552 } 553 .pagination > li > a { 554 color: rgb(6, 127, 174); 555 border-color: rgba(6, 127, 174,0.2); 556 background-color: rgb(255, 255, 255); 557 } 558 .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { 559 background-color: rgb(6, 127, 174); 560 border-color: rgb(6, 127, 174); 561 color: rgb(255, 255, 255); 562 } 563 564 .nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{ 565 background-color: rgb(250, 250, 250)!important; 566 color: rgb(41, 41, 41)!important; 567 } 568 .member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover { 569 background-color: rgb(240, 173, 78)!important; 570 border-color: rgb(240, 173, 78); 571 color: rgb(255, 255, 255); 572 } 573 .nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a { 574 background-color: rgb(51, 122, 183)!important; 575 color: rgb(255, 255, 255)!important; 576 } 577 .member_wizard2 li.completed a, .member_wizard2 li.completed a:hover { 578 background-color: rgb(42, 178, 123)!important; 579 border-color: rgb(42, 178, 123); 580 color: rgb(255, 255, 255); 581 } 582 583 .nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow { 584 border-color: transparent transparent transparent rgb(51, 122, 183)!important; 585 } 586 .nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{ 587 border-color: rgb(51, 122, 183) rgb(51, 122, 183) rgb(51, 122, 183) transparent!important; 588 } 589 590 li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge { 591 border-color: rgb(0, 166, 128) rgb(0, 166, 128) rgb(0, 166, 128) transparent!important; 592 } 593 594 li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge { 595 border-color: rgb(250, 250, 250) rgb(250, 250, 250) rgb(250, 250, 250) transparent!important; 596 } 597 598 .nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover { 599 background-color: rgb(0, 166, 128)!important; 600 color: rgb(255, 255, 255)!important; 601 } 602 603 .member_wizard2 li { 604 color: rgb(255, 255, 255); 605 border-right: 10px solid rgb(253, 253, 253); 606 } 607 608 li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow { 609 border-color: transparent transparent transparent rgb(0, 166, 128)!important; 610 } 611 612 li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{ 613 border-color: transparent transparent transparent rgb(250, 250, 250)!important; 614 } 615 616 /* Default Colors */ 617 .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 { 618 background-color: rgb(6, 127, 174); 619 border-color: rgb(6, 127, 174); 620 color: rgb(255, 255, 255); 621 } 622 .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 { 623 background-color: rgba(6, 127, 174,0.95); 624 border-color: rgb(6, 127, 174); 625 color: rgb(255, 255, 255); 626 } 627 .panel-primary { 628 background-color: #daecf3; 629 border-color: rgb(6, 127, 174); 630 } 631 .bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .
631well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary { 632 background-color: rgb(6, 127, 174); 633 color: rgb(255, 255, 255); 634 } 635 .bg-primary .badge { 636 background-color:rgb(255, 255, 255); 637 color: rgb(6, 127, 174); 638 } 639 .btn-primary.btn-outline { 640 background: transparent; 641 color: rgb(6, 127, 174); 642 transition: all 250ms ease-in-out 0ms; 643 } 644 .btn-primary.btn-outline:hover { 645 background: rgba(6, 127, 174,0.1); 646 color: rgb(6, 127, 174); 647 } 648 .alert-primary { 649 background-color:rgba(6, 127, 174,0.7); 650 border-color:rgba(6, 127, 174,0.2); 651 color: rgba(255, 255, 255,0.9); 652 } 653 .alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle { 654 background-color: #cde5ef; 655 border-color: #cde5ef; 656 color: rgb(6, 127, 174); 657 color: color-mix(in srgb, rgb(6, 127, 174) 50%, rgb(64, 64, 66) 50%); 658 } 659 .btn.dropdown-toggle.btn-primary *, .btn-primary a { 660 color: rgb(255, 255, 255); 661 } 662 .text-primary{ 663 color: rgb(6, 127, 174); 664 } 665 .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 { 666 background-color: rgb(91, 192, 222); 667 border-color: rgb(91, 192, 222); 668 color: rgb(255, 255, 255); 669 } 670 .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 { 671 background-color: rgba(91, 192, 222,0.95); 672 border-color: rgb(91, 192, 222); 673 color: rgb(255, 255, 255); 674 } 675 .panel-info { 676 background-color: #e6f6fa; 677 border-color: rgb(91, 192, 222); 678 } 679 .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 { 680 background-color: rgb(91, 192, 222); 681 color: rgb(255, 255, 255); 682 } 683 .bg-info .badge { 684 background-color:rgb(255, 255, 255); 685 color: rgb(91, 192, 222); 686 } 687 .btn-info.btn-outline { 688 background: transparent; 689 color: rgb(91, 192, 222); 690 transition: all 250ms ease-in-out 0ms; 691 } 692 .btn-info.btn-outline:hover { 693 background: rgba(91, 192, 222,0.1); 694 color: rgb(91, 192, 222); 695 } 696 .alert-info { 697 background-color:rgba(91, 192, 222,0.7); 698 border-color:rgba(91, 192, 222,0.2); 699 color: rgba(255, 255, 255,0.9); 700 } 701 .alert-info-subtle, .label-info-subtle, .badge-info-subtle { 702 background-color: #def2f8; 703 border-color: #def2f8; 704 color: rgb(91, 192, 222); 705 color: color-mix(in srgb, rgb(91, 192, 222) 50%, rgb(64, 64, 66) 50%); 706 } 707 .btn.dropdown-toggle.btn-info *, .btn-info a { 708 color: rgb(255, 255, 255); 709 } 710 .text-info{ 711 color: rgb(91, 192, 222); 712 } 713 .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 { 714 background-color: rgb(42, 178, 123); 715 border-color: rgb(42, 178, 123); 716 color: rgb(255, 255, 255); 717 } 718 .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 { 719 background-color: rgba(42, 178, 123,0.95); 720 border-color: rgb(42, 178, 123); 721 color: rgb(255, 255, 255); 722 } 723 .panel-success { 724 background-color: #dff3eb; 725 border-color: rgb(42, 178, 123); 726 } 727 .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 { 728 background-color: rgb(42, 178, 123); 729 color: rgb(255, 255, 255); 730 } 731 .bg-success .badge { 732 background-color: rgb(255, 255, 255); 733 color: rgb(42, 178, 123); 734 } 735 .btn-success.btn-outline { 736 background: transparent; 737 color: rgb(42, 178, 123); 738 transition: all 250ms ease-in-out 0ms; 739 } 740 .btn-success.btn-outline:hover { 741 background: rgba(42, 178, 123,0.1); 742 color: rgb(42, 178, 123); 743 } 744 .alert-success { 745 background-color:rgba(42, 178, 123,0.7); 746 border-color:rgba(42, 178, 123,0.2); 747 color: rgba(255, 255, 255,0.9); 748 } 749 .alert-success-subtle, .label-success-subtle, .badge-success-subtle { 750 background-color: #d4f0e5; 751 border-color: #d4f0e5; 752 color: rgb(42, 178, 123); 753 color: color-mix(in srgb, rgb(42, 178, 123) 50%, rgb(64, 64, 66) 50%); 754 } 755 .btn.dropdown-toggle.btn-success *, .btn-success a { 756 color: rgb(255, 255, 255); 757 } 758 .text-success{ 759 color: rgb(42, 178, 123); 760 } 761 .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 { 762 background-color: rgb(240, 173, 78); 763 border-color: rgb(240, 173, 78); 764 color: rgb(255, 255, 255); 765 } 766 .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 { 767 background-color: rgba(240, 173, 78,0.95); 768 border-color: rgb(240, 173, 78); 769 color: rgb(255, 255, 255); 770 } 771 .panel-warning { 772 background-color: #fdf3e4; 773 border-color: rgb(240, 173, 78); 774 } 775 .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 { 776 background-color: rgb(240, 173, 78); 777 color: rgb(255, 255, 255); 778 } 779 .bg-warning .badge { 780 background-color: rgb(255, 255, 255); 781 color: rgb(240, 173, 78); 782 } 783 .btn-warning.btn-outline { 784 background: transparent; 785 color: rgb(240, 173, 78); 786 transition: all 250ms ease-in-out 0ms; 787 } 788 .btn-warning.btn-outline:hover { 789 background: rgba(240, 173, 78,0.1); 790 color: rgb(240, 173, 78); 791 } 792 .alert-warning { 793 background-color:rgba(240, 173, 78,0.7); 794 border-color:rgba(240, 173, 78,0.2); 795 color: rgba(255, 255, 255,0.9); 796 } 797 .alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle { 798 background-color: #fcefdc; 799 border-color: #fcefdc; 800 color: rgb(240, 173, 78); 801 color: color-mix(in srgb, rgb(240, 173, 78) 50%, rgb(64, 64, 66) 50%); 802 } 803 .btn.dropdown-toggle.btn-warning *, .btn-warning a { 804 color: rgb(255, 255, 255); 805 } 806 .text-warning { 807 color: rgb(240, 173, 78); 808 } 809 .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 { 810 background-color: rgb(217, 83, 79); 811 border-color: rgb(217, 83, 79); 812 color: rgb(255, 255, 255); 813 } 814 .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 { 815 background-color: rgba(217, 83, 79,0.95); 816 border-color: rgb(217, 83, 79); 817 color: rgb(255, 255, 255); 818 } 819 .has-error .form-control { 820 border-color: rgb(217, 83, 79); 821 } 822 .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 { 823 background: rgb(217, 83, 79); 824 color: rgb(255, 255, 255) !important; 825 } 826 .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 { 827 color: rgb(217, 83, 79); 828 } 829 .panel-danger { 830 background-color: #f9e5e5; 831 border-color: rgb(217, 83, 79); 832 } 833 .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 { 834 background-color: rgb(217, 83, 79); 835 color: rgb(255, 255, 255); 836 } 837 .bg-danger .badge { 838 background-color: rgb(255, 255, 255); 839 color: rgb(217, 83, 79); 840 } 841 .btn-danger.btn-outline { 842 background: transparent; 843 color: rgb(217, 83, 79); 844 transition: all 250ms ease-in-out 0ms; 845 } 846 .btn-danger.btn-outline:hover { 847 background: rgba(217, 83, 79,0.1); 848 color: rgb(217, 83, 79); 849 } 850 .alert-danger { 851 background-color:rgba(217, 83, 79,0.7); 852 border-color:rgba(217, 83, 79,0.2); 853 color: rgba(255, 255, 255,0.9); 854 } 855 .alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle { 856 background-color: #f7dddc; 857 border-color: #f7dddc; 858 color: rgb(217, 83, 79); 859 color: color-mix(in srgb, rgb(217, 83, 79) 50%, rgb(64, 64, 66) 50%); 860 } 861 .btn.dropdown-toggle.btn-danger *, .btn-danger a { 862 color: rgb(255, 255, 255); 863 } 864 .text-danger{ 865 color: rgb(217, 83, 79); 866 } 867 .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
867s, 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 { 868 background-color: rgb(238, 238, 238); 869 border-color: rgb(238, 238, 238); 870 color: rgb(85, 85, 85); 871 } 872 .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 { 873 background-color: rgba(238, 238, 238,0.95); 874 border-color: rgb(238, 238, 238); 875 color: rgb(85, 85, 85); 876 } 877 .sidemenu_panel .panel-default .panel_heading { 878 background-color: rgb(238, 238, 238)!important; 879 border-color: rgb(238, 238, 238)!important; 880 color: rgb(85, 85, 85)!important; 881 } 882 .panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading { 883 884 box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset; 885 background-color: rgb(238, 238, 238); 886 } 887 .panel-default, .member_accounts .panel-default { 888 889 background-color: rgba(238, 238, 238,0.15); 890 border-color: #fdfdfd; 891 border-color: color-mix(in srgb,rgb(238, 238, 238) 100%,rgba(238, 238, 238) 10%); 892 } 893 .member_admin_sidemenu .panel-default { 894 background-color: transparent; 895 } 896 .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 { 897 background-color: rgb(238, 238, 238); 898 color: rgb(85, 85, 85); 899 } 900 .bg-default .badge { 901 background-color: rgb(85, 85, 85); 902 color: rgb(238, 238, 238); 903 } 904 .btn-default.btn-outline { 905 background: transparent; 906 color: rgb(238, 238, 238); 907 transition: all 250ms ease-in-out 0ms; 908 } 909 .btn-default.btn-outline:hover { 910 background: rgba(238, 238, 238,0.1); 911 color: rgb(238, 238, 238); 912 } 913 .alert-default { 914 background-color:rgb(238, 238, 238); 915 border-color:rgb(238, 238, 238); 916 color: rgb(85, 85, 85); 917 } 918 .alert-default-subtle, .label-default-subtle, .badge-default-subtle { 919 background-color:rgba(238, 238, 238,0.5); 920 border-color: rgba(238, 238, 238,0.5); 921 color: rgb(85, 85, 85); 922 color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(64, 64, 66) 50%); 923 } 924 .btn.dropdown-toggle.btn-default *, .btn-default a { 925 color: rgb(85, 85, 85); 926 } 927 .text-default{ 928 color: rgb(238, 238, 238); 929 } 930 .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 { 931 background-color: rgb(64, 64, 66); 932 border: 1px solid rgb(64, 64, 66); 933 color: rgb(253, 253, 253); 934 } 935 .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 {
936 background-color: rgba(64, 64, 66,0.95); 937 border-color: rgb(64, 64, 66); 938 color: rgb(253, 253, 253); 939 } 940 .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 { 941 background-color: rgb(64, 64, 66); 942 color: rgb(253, 253, 253); 943 } 944 .bg-secondary .badge { 945 background-color:rgb(253, 253, 253); 946 color: rgb(64, 64, 66); 947 } 948 .btn-secondary.btn-outline { 949 background: transparent; 950 color: rgb(64, 64, 66); 951 transition: all 250ms ease-in-out 0ms; 952 } 953 .btn-secondary.btn-outline:hover { 954 background: rgba(64, 64, 66,0.1); 955 color: rgb(64, 64, 66); 956 } 957 .panel-secondary { 958 background-color: #e2e2e3; 959 border-color: rgb(64, 64, 66); 960 } 961 .alert-secondary { 962 background-color:rgb(64, 64, 66); 963 border-color:rgb(64, 64, 66); 964 color: rgb(253, 253, 253); 965 } 966 .alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle {
967 background-color:rgba(64, 64, 66,0.8); 968 border-color: rgba(64, 64, 66,0.5); 969 color: rgb(253, 253, 253); 970 } 971 .btn-outline { 972 -webkit-backdrop-filter: blur(5px); 973 backdrop-filter: blur(5px); 974 } 975 .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 { 976 background-color: rgb(253, 253, 253); 977 border: 1px solid rgb(253, 253, 253); 978 color: rgb(64, 64, 66); 979 } 980 .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 { 981 background-color: rgba(253, 253, 253,0.95); 982 border: 1px solid rgb(253, 253, 253); 983 color: rgb(64, 64, 66); 984 } 985 .btn.btn-body.dropdown-toggle * { 986 color: rgb(64, 64, 66) 987 } 988 .btn-body.dropdown-toggle + ul li, .daterangepicker .ranges { 989 color: #333; 990 } 991 .bg-body { 992 background: rgb(253, 253, 253); 993 color: rgb(64, 64, 66); 994 } 995 .bg-content-box { 996 background: rgb(250, 250, 250); 997 color: rgb(41, 41, 41); 998 } 999 .bg-content-box-border { 1000 background: rgb(238, 238, 238); 1001 } 1002 .btn.dropdown-toggle.btn-secondary *, .btn-secondary a { 1003 color: rgb(253, 253, 253); 1004 } 1005 .text-secondary { 1006 color: rgb(64, 64, 66); 1007 } 1008 .text-body { 1009 color: rgb(253, 253, 253); 1010 } 1011 .feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary { 1012 border-radius: 10px; 1013 background-color: rgba(44, 44, 44,0.2); 1014 } 1015 1016 /* Footer Newsletter Row */ 1017 .newsletter_row .alert { 1018 color: rgb(255, 255, 255); 1019 } 1020 .newsletter_row { 1021 background-color: rgb(6, 127, 174); 1022 color: rgb(255, 255, 255); 1023 } 1024 .newsletter_row input[type="submit"],.newsletter_footer_button { 1025 background-color: rgba(42, 178, 123,0.97); 1026 color: rgb(255, 255, 255); 1027 border-color: rgb(42, 178, 123); 1028 } 1029 .newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus { 1030 background-color: rgb(42, 178, 123); 1031 color: rgb(255, 255, 255); 1032 } 1033 .newsletter_button_left { 1034 border-right: 1px solid rgba(255, 255, 255,0.2); 1035 } 1036 .newsletter_button_right { 1037 border-left: 1px solid rgba(255, 255, 255,0.2); 1038 } 1039 .newsletter_row small.help-block { 1040 background: rgb(255, 255, 255); 1041 margin-top: -5px; 1042 float: left; 1043 padding: 8px; 1044 border-radius: 1px; 1045 color: rgb(6, 127, 174); 1046 text-transform: capitalize; 1047 } 1048 .newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{ 1049 color: rgb(255, 255, 255); 1050 } 1051 @media only screen and (max-width: 767px) { 1052 .newsletter_button_right,.newsletter_button_left{ 1053 border: none; 1054 margin: 5px 0; 1055 } 1056 } 1057 1058 /* Font Sizes */ 1059 1060 .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span { 1061 font-size: 16px; 1062 } 1063 .header .logo { 1064 font-size: 36px; 1065 } 1066 .homepage_title h1, .homepage_settings h1 { 1067 letter-spacing: -1px; 1068 font-size: 71px; 1069 margin-bottom: 20px; 1070 } 1071 @media only screen and (max-width: 768px) { 1072 .homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;} 1073 } 1074 .homepage_settings h2 { 1075 font-size: 28px; 1076 } 1077 1078 .ui-rangeSlider-bar{ 1079 background: rgb(42, 178, 123)!important; 1080 } 1081 1082 1083 1084 @media only screen and (max-width: 1024px){ 1085 .modal {margin-top: 40px;} 1086 } 1087 @media only screen and (max-width: 768px){ 1088 .modal {margin-top: 60px;} 1089 } 1090 1091 /* Calendar Styles */ 1092 1093 #cal-slide-content { 1094 color: rgb(85, 85, 85)!important; 1095 background-color: rgb(238, 238, 238)!important; 1096 -webkit-box-shadow: none!important; 1097 box-shadow: none!important; 1098 } 1099 #cal-slide-content a.event-item { 1100 color: rgb(85, 85, 85)!important; 1101 font-weight:bold!important; 1102 } 1103 #cal-slide-content a.event-item small { 1104 display: inline-block; 1105 } 1106 .cal-month-box, .cal-year-box, .cal-week-box { 1107 border: 1px solid rgb(238, 238, 238)!important; 1108 } 1109 .cal-year-box .row-fluid, .cal-month-box .cal-row-fluid { 1110 border-bottom: 1px solid rgb(238, 238, 238)!important; 1111 } 1112 .cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] { 1113 border-right: 1px solid rgb(238, 238, 238)!important; 1114 } 1115 .cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) { 1116 background-color: rgb(253, 253, 253)!important; 1117 } 1118 .cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) { 1119 color: rgb(85, 85, 85)!important; 1120 } 1121 .cal-day-today span[data-cal-date] { 1122 color: rgb(64, 64, 66)!important; 1123 } 1124 .cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child { 1125 border: 0!important; 1126 } 1127 .cal-row-head { 1128 background: rgb(250, 250, 250)!important; 1129 } 1130 .day-highlight:hover, .day-highlight { 1131 background-color: rgb(238, 238, 238)!important; 1132 } 1133 .cal-event-list .event.pull-left { 1134 background-color: rgb(64, 64, 66)!important; 1135 opacity: 0.4; 1136 margin-top: 7px!important; 1137 } 1138 .cal-day-today { 1139 background-color: rgb(238, 238, 238)!important; 1140 } 1141 #cal-day-tick { 1142 border: 1px solid rgb(238, 238, 238)!important; 1143 background-color: rgb(238, 238, 238)!important; 1144 } 1145 .cal-day-weekend span[data-cal-date]{
1146 color: rgb(64, 64, 66)!important; 1147 } 1148 .rsDefault, .rsDefault .rsOverflow, .rsDefault .rsSlide, .rsDefault .rsVideoFrameHolder, .rsDefault .rsThumbs { 1149 border-radius: 10px; 1150 background: #151515!important; 1151 } 1152 .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsSlide, .img_section .no-radius-bottom + .alert-secondary .rsDefault .rsOverflow { 1153 border-radius:0; 1154 } 1155 1156 #first_container .favorite, #first_container .fa.favorite { 1157 color: rgb(170, 184, 194); 1158 background: rgb(238, 238, 238); 1159 border: 1px solid rgb(238, 238, 238); 1160 white-space:nowrap!important; 1161 height:24px; 1162 padding:0 6px; 1163 border-radius:8px; 1164 } 1165 #first_container .favorite span, #first_container .fa.favorite span { 1166 font-family: 'Cabin'; 1167 white-space:nowrap!important; 1168 } 1169 #first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) { 1170 color: rgb(226, 38, 77); 1171 } 1172 #first_container .favorite::after, #first_container .fa.favorite::after { 1173 font-family: 'Cabin'; 1174 margin-left: 3px; 1175 } 1176 #first_container .favorite span, #first_container .fa.favorite span{ 1177 padding-left: 4px; 1178 font-family: 'Cabin'; 1179 font-size: 11px; 1180 letter-spacing:.5px; 1181 top:-1px; 1182 position:relative; 1183 font-weight:700; 1184 } 1185 #first_container .favorite span:empty, #first_container .fa.favorite span:empty { 1186 padding: 0; 1187 } 1188 #first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number { 1189 padding: 1px 0; 1190 border-radius: 100px; 1191 display: inline-block; 1192 font-weight: bold; 1193 min-width: 15px; 1194 font-size: .8em; 1195 vertical-align: bottom; 1196 height: 15px; 1197 line-height: 13px; 1198 margin-left: 3px; 1199 text-align: center; 1200 } 1201 #first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number { 1202 background: rgb(226, 38, 77); 1203 color: #fff; 1204 } 1205 1206 span.checkbox_value::after { 1207 content: ', '; 1208 } 1209 1210 span.checkbox_value:last-child::after { 1211 content: ''; 1212 } 1213 1214 1215 1216 1217 /* Homepage Sections Background Color Logic */ 1218 1219 1220 .homepage-section-1 { 1221 padding: 20px 0 0px; 1222 } 1223 1224 1225 .homepage-section-1 { 1226 background: rgb(171, 229, 245); 1227 } 1228 1229 1230 .homepage-section-2 { 1231 padding: 40px 0 0px; 1232 } 1233 1234 1235 .homepage-section-3 { 1236 padding: 0px 0 0px; 1237 } 1238 1239 1240 .homepage-section-3 { 1241 background: rgb(171, 229, 245); 1242 } 1243 1244 1245 .homepage-section-4 { 1246 padding: 20px 0 0px; 1247 } 1248 1249 1250 .homepage-section-4 { 1251 background: rgb(171, 229, 245); 1252 } 1253 1254 1255 .homepage-section-5 { 1256 padding: 20px 0 40px; 1257 } 1258 1259 1260 .homepage-section-5 { 1261 background: rgb(171, 229, 245); 1262 } 1263 1264 1265 .homepage-section-6 { 1266 padding: 20px 0 0px; 1267 } 1268 1269 1270 .homepage-section-7 { 1271 padding: 20px 0 0px; 1272 } 1273 1274 1275 .homepage-section-7 { 1276 background: rgb(171, 229, 245); 1277 } 1278 1279 1280 .homepage-section-8 { 1281 padding: 40px 0 40px; 1282 } 1283 1284 1285 .homepage-section-9 { 1286 padding: 40px 0 40px; 1287 } 1288 1289 1290 .homepage-section-10 { 1291 padding: 40px 0 40px; 1292 } 1293 1294 1295 .homepage-section-11 { 1296 padding: 40px 0 40px; 1297 } 1298 1299 1300 .homepage-section-12 { 1301 padding: 40px 0 40px; 1302 } 1303 1304 1305 .homepage-section-13 { 1306 padding: 40px 0 40px; 1307 } 1308 1309 1310 .homepage-section-14 { 1311 padding: 40px 0 40px; 1312 } 1313 1314 1315 .homepage-section-15 { 1316 padding: 40px 0 40px; 1317 } 1318 1319 1320 /* Additional Settings */ 1321 1322 1323 /* Streaming Widgets Title Settings */ 1324 1325 .streaming-title { 1326 text-align: center; 1327 font-size: 30px; 1328 line-height:1.5em; 1329 font-weight: 600; 1330 font-family: 'Quicksand'; 1331 padding-bottom: 40px; 1332 } 1333 1334 @media only screen and (max-width: 990px) { 1335 .streaming-title { 1336 line-height:1.1em; 1337 } 1338 } 1339 1340 .streaming-title + hr { 1341 display: none; 1342 } 1343 1344 .homepage-join-module .module h2:first-of-type { 1345 color: rgb(62, 62, 62); 1346 } 1347 1348 .homepage-join-module .module{ 1349 background: rgb(250, 250, 250); 1350 border-color: rgb(238, 238, 238); 1351 } 1352 1353 .homepage-about-module .module h2:first-of-type { 1354 color: rgb(62, 62, 62); 1355 } 1356 1357 .homepage-about-module .module{ 1358 background: rgb(250, 250, 250); 1359 border-color: rgb(238, 238, 238); 1360 1361 } 1362 1363 .the-post-description > :is(h2, h3, h4, h5):not(:first-child) { 1364 font-weight: 600; 1365 margin-top: 20px; 1366 } 1367 1368 /* Keep: Ensure ul/ol respect padding and margins */ 1369 .the-post-description > :is(ul, ol) { 1370 display: flow-root; 1371 } 1372 .the-post-description li { 1373 margin-bottom: 8px; 1374 } 1375 1376 1377 .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 { 1378 box-shadow: 0 8px 8px -4px #0000001a,0 4px 4px -4px #0000001a; 1379 } 1380 1381 .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 { 1382 border-radius:1000px!important; 1383 } 1384 1385 .img-rounded img, img.fr-dib.img-rounded{ 1386 border-radius: 10px!important; 1387 } 1388 1389 /* Google Translate Module */ 1390 .skiptranslate{font-size:0} 1391 .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} 1392 .skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important} 1393 .goog-te-gadget .goog-te-combo{margin-bottom:-4px} 1394 .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)} 1395 @media only screen and (max-width: 1100px) { 1396 .skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px} 1397 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important} 1398 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px} 1399 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important} 1400 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important} 1401 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px} 1402 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;} 1403 } 1404 @media only screen and (max-width: 767px) { 1405 .skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important} 1406 } 1407 1408 1409 1410</style> 1411 1412<!--GOOGLE TAG MANAGER CODE--> <!-- ON-PAGE CSS FUNCTIONS --> 1413 <style type="text/css"> 1414 /* Adjust hight of text header of streaming display */ 1415.nomargin.sm-text-center.streaming-title { 1416 height: 70px; /* Adjust this value to your preference */ 1417} 1418.navbar-default { 1419 max-width: 1140px; 1420 margin: auto; 1421} 1422.non-responsive-article table { 1423 width: auto; 1424 table-layout: auto; 1425} 1426 1427.non-responsive-article td, .non-responsive-article th { 1428 white-space: nowrap; 1429} </style> 1430 <div class="header"> 1431 <div class="container"> 1432 <div class="row header-main-row"> 1433 <style type='text/css'> .logo-text:has(.logo_title:empty) { 1434 display:none 1435} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container"> 1436 <a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://www.redseapages.com" title="RedSeaPages"> 1437 <img width="300" height="100" src="/images/Brand Images/Web-Logo-new-trans
1437parent-300x100.png" alt="RedSeaPages"> 1438 </a> 1439 <div class="clearfix"></div> 1440</div> 1441 </div> 1442 </div> 1443 <style type='text/css'> .mobile-main-menu .hasChildren span a { 1444 padding: 0px; 1445} 1446 1447.user_sidebar > img { 1448 width: 32px; 1449 height: 32px; 1450 position: absolute; 1451 z-index: 10; 1452 border-radius: 100px; 1453 top: -1px; 1454 object-fit: cover; 1455 left: -10px; 1456 background: rgb(238, 238, 238); 1457} 1458#member_sidebar_toggle img+.fa { 1459 display: none; 1460} 1461.main_menu, .user_sidebar, .compact-mobile-search { 1462 padding: 5px 8px; 1463 margin-right:0; 1464 min-height: 33.0333px; 1465 min-width: 38.116px; 1466} 1467.main_menu i, .user_sidebar i { 1468 font-size: 16px; 1469} 1470.navbar-nav li { 1471 float: none!Important; 1472} 1473.navbar-default{ 1474 -webkit-transition: all .6s ease-in-out; 1475 -moz-transition: all .6s ease-in-out; 1476 -o-transition: all .6s ease-in-out; 1477 transition: all .6s ease-in-out; 1478} 1479.transparent_menu { 1480 background-color: rgba(6, 127, 174,0.95)!important; 1481} 1482@media only screen and (max-width: 991px) { 1483 #popover {display: none} 1484} 1485@media only screen and (max-width: 1100px){ 1486 .mobile-main-menu{display:block!important} 1487 .navbar-toggle {display: block} 1488 #bs-main_menu .nav {display: none!important} 1489} 1490.mobile-main-menu { 1491 position: fixed; 1492 height: calc(100% - 50px)!important; 1493 width: 250px; 1494 background: rgb(6, 127, 174); 1495 z-index: 99999; 1496 right: -250px; 1497 top: 50px; 1498 display: none; 1499 -webkit-transition: all .6s ease-in-out; 1500 -moz-transition: all .6s ease-in-out; 1501 -o-transition: all .6s ease-in-out; 1502 transition: all .6s ease-in-out; 1503 overflow-y: auto!important; 1504 overflow-x: hidden!important; 1505} 1506.mobile-main-menu ul li i { 1507 color: rgb(255, 255, 255); 1508 cursor: pointer; 1509 float: right; 1510 padding: 13px; 1511} 1512.mobile-main-menu.opened{ 1513 right: 0px!important; 1514} 1515.mobile-main-menu ul li a, .mobile-main-menu ul li span { 1516 display: inline-block; 1517 float: left; 1518 -webkit-touch-callout: none; 1519 -webkit-user-select: none; 1520 -khtml-user-select: none; 1521 -moz-user-select: none; 1522 -ms-user-select: none; 1523 user-select: none; 1524 padding: 10px 0px; 1525 width: 80%; 1526 width: calc(100% - 40px); 1527} 1528.mobile-main-menu .sidebar-nav li ul { 1529 height: 0px; 1530 overflow: hidden; 1531 list-style: none; 1532 color: rgb(255, 255, 255); 1533 padding-left: 10px; 1534} 1535.mobile-main-menu .sidebar-nav li.sub_open > ul{ 1536 height: 100%; 1537} 1538.mobile-main-menu ul.sidebar-nav { 1539 position: absolute; 1540 width: 250px; 1541 margin: 0; 1542 padding: 0; 1543 list-style: none; 1544 font-size: 14px; 1545} 1546.mobile-main-menu .sidebar-nav > li { 1547 display: block; 1548 line-height: 20px; 1549 padding: 0 15px 0 20px; 1550} 1551.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span { 1552 text-decoration: none; 1553 color: rgb(255, 255, 255); 1554 padding-left:10px; 1555} 1556.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i { 1557 display: none; 1558} 1559 1560 </style><div class="mobile-main-menu"> 1561 <ul class="sidebar-nav"> 1562 <li class=''><a href='/home' id='link320'>Home</a></li><li class=''><span id='link321'> Red Sea Directory</span><ul><li class=''><a href='/egypt' id='link328' target='_blank'>All Cities</a><ul><li class=''><a href='/egypt/dining' id='link542' target='_blank'>Dining</a></li><li class=''><a href='/egypt/entertainment' id='link331' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/environment' id='link332' target='_blank'>Environment</a></li><li class=''><a href='/egypt/health-beauty' id='link333' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/home-garden' id='link617' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/hotels-accommodation' id='link334' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/jobs-education' id='link336' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/property-real-estate' id='link338' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/services' id='link345' target='_blank'>Services</a></li><li class=''><a href='/egypt/shopping' id='link343' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/sports-activities' id='link344' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/travel' id='link346' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/hurghada' id='link326' target='_blank'>Hurghada</a><ul><li class=''>
1562<a href='/egypt/hurghada/dining' id='link330' target='_blank'>Dining</a></li><li class=''><a href='/egypt/hurghada/entertainment' id='link543' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/hurghada/environment' id='link544' target='_blank'>Environment</a></li><li class=''><a href='/egypt/hurghada/health-beauty' id='link545' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/hurghada/home-garden' id='link618' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/hurghada/hotels-accommodation' id='link546' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/hurghada/jobs-education' id='link547' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/hurghada/property-real-estate' id='link548' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/hurghada/services' id='link549' target='_blank'>Services</a></li><li class=''><a href='/egypt/hurghada/shopping' id='link550' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/hurghada/sports-activities' id='link551' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/hurghada/travel' id='link552' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/el gouna' id='link327' target='_blank'>El Gouna</a><ul><li class=''><a href='/egypt/el gouna/dining' id='link512' target='_blank'>Dining</a></li><li class=''><a href='/egypt/el gouna/entertainment' id='link534' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/el gouna/environment' id='link532' target='_blank'>Environment</a></li><li class=''><a href='/egypt/el gouna/health-beauty' id='link533' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/el gouna/home-garden' id='link619' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/el gouna/hotels-accommodation' id='link541' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/el gouna/jobs-education' id='link536' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/el gouna/property-real-estate' id='link537' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/el gouna/services' id='link538' target='_blank'>Services</a></li><li class=''><a href='/egypt/el gouna/shopping' id='link539' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/el gouna/sports-activities' id='link513' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/el gouna/travel' id='link540' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/marsa alam' id='link329' target='_blank'>Marsa Alam</a><ul><li class=''><a href='/egypt/marsa alam/dining' id='link349' target='_blank'>Dining</a></li><li class=''><a href='/egypt/marsa alam/hotels-accommodation' id='link348' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/marsa alam/sports-activities' id='link347' target='_blank'>Sports & Activities</a></li></ul></li></ul></li><li class=''><a href='/blog' id='link353'>Article Blog</a></li><li style="background-color: gold;" class=''><a href='/properties' id='link325' style="color: red;">Real Estate - Commission FREE</a></li><li class=''><span id='link427'> Important Links</span><ul><li class=''><a href='/emergencynumbers' id='link511'>Emergency Numbers</a></li><li class=''><a href='/about' id='link322'>How our site works</a></li><li class=''><a href='/all_printed_issues' id='link350' title='Red Sea Bulletin Issues'>Printed Magazines</a><ul><li class=''><a href='https://www.redseapages.com/rsb_issues_2020' id='link351' title='Red Sea Bulletin Issues'>Red Sea Bulletin 2020</a></li><li class=''><a href='https://www.redseapages.com/rsb_issues_2019' id='link352' title='Red Sea Bulletin Issues'>Red Sea Bulletin 2019</a></li></ul></li><li class=''><a href='https://www.redseapages.com/best-restaurants-el-gouna-hurghada' id='link620'>Best Restaurants El Gouna & Hurghada</a></li><li class=''><a href='https://www.redseapages.com/best-restaurants-el-gouna' id='link621'>Best Restaurants El Gouna </a></li><li class=''><a href='https://www.redseapages.com/best-restaurants-hurghada' id='link622'>Best Restaurants Hurghada</a></li></ul></li> </ul> 1563</div> 1564<nav class="navbar navbar-default "> 1565 <div class="container container-fluid"> 1566 1567 <div class="navbar-header"> 1568 <button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu"> 1569 <i class="fa fa-bars fa-fw"></i> 1570 </button> 1571 1572 1573 1574 </div> 1575 1576 1577 <div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu"> 1578 <ul class="tablet-menu-ul nav navbar-nav nav-justified"> 1579 <li class=''><a href='/home' id='link320'>Home</a></li><li class=''><span id='link321'> Red Sea Directory</span><ul><li class=''><a href='/egypt' id='link328' target='_blank'>All Cities</a><ul><li class=''><a href='/egypt/dining' id='link542' target='_blank'>Dining</a></li><li class=''><a href='/egypt/entertainment' id='link331' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/environment' id='link332' target='_blank'>Environment</a></li><li class=''><a href='/egypt/health-beauty' id='link333' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/home-garden' id='link617' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/hotels-accommodation' id='link334' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/jobs-education' id='link336' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/property-real-estate' id='link338' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/services' id='link345' target='_blank'>Services</a></li><li class=''><a href='/egypt/shopping' id='link343' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/sports-activities' id='link344' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/travel' id='link346' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/hurghada' id='link326' target='_blank'>Hurghada</a><ul><li class=''>
1579<a href='/egypt/hurghada/dining' id='link330' target='_blank'>Dining</a></li><li class=''><a href='/egypt/hurghada/entertainment' id='link543' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/hurghada/environment' id='link544' target='_blank'>Environment</a></li><li class=''><a href='/egypt/hurghada/health-beauty' id='link545' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/hurghada/home-garden' id='link618' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/hurghada/hotels-accommodation' id='link546' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/hurghada/jobs-education' id='link547' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/hurghada/property-real-estate' id='link548' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/hurghada/services' id='link549' target='_blank'>Services</a></li><li class=''><a href='/egypt/hurghada/shopping' id='link550' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/hurghada/sports-activities' id='link551' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/hurghada/travel' id='link552' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/el gouna' id='link327' target='_blank'>El Gouna</a><ul><li class=''><a href='/egypt/el gouna/dining' id='link512' target='_blank'>Dining</a></li><li class=''><a href='/egypt/el gouna/entertainment' id='link534' target='_blank'>Entertainment</a></li><li class=''><a href='/egypt/el gouna/environment' id='link532' target='_blank'>Environment</a></li><li class=''><a href='/egypt/el gouna/health-beauty' id='link533' target='_blank'>Health & Beauty</a></li><li class=''><a href='/egypt/el gouna/home-garden' id='link619' target='_blank'>Home & Garden</a></li><li class=''><a href='/egypt/el gouna/hotels-accommodation' id='link541' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/el gouna/jobs-education' id='link536' target='_blank'>Jobs & Education</a></li><li class=''><a href='/egypt/el gouna/property-real-estate' id='link537' target='_blank'>Property & Real Estate</a></li><li class=''><a href='/egypt/el gouna/services' id='link538' target='_blank'>Services</a></li><li class=''><a href='/egypt/el gouna/shopping' id='link539' target='_blank'>Shopping</a></li><li class=''><a href='/egypt/el gouna/sports-activities' id='link513' target='_blank'>Sports & Activities</a></li><li class=''><a href='/egypt/el gouna/travel' id='link540' target='_blank'>Travel</a></li></ul></li><li class=''><a href='/egypt/marsa alam' id='link329' target='_blank'>Marsa Alam</a><ul><li class=''><a href='/egypt/marsa alam/dining' id='link349' target='_blank'>Dining</a></li><li class=''><a href='/egypt/marsa alam/hotels-accommodation' id='link348' target='_blank'>Hotels & Accommodation</a></li><li class=''><a href='/egypt/marsa alam/sports-activities' id='link347' target='_blank'>Sports & Activities</a></li></ul></li></ul></li><li class=''><a href='/blog' id='link353'>Article Blog</a></li><li style="background-color: gold;" class=''><a href='/properties' id='link325' style="color: red;">Real Estate - Commission FREE</a></li><li class=''><span id='link427'> Important Links</span><ul><li class=''><a href='/emergencynumbers' id='link511'>Emergency Numbers</a></li><li class=''><a href='/about' id='link322'>How our site works</a></li><li class=''><a href='/all_printed_issues' id='link350' title='Red Sea Bulletin Issues'>Printed Magazines</a><ul><li class=''><a href='https://www.redseapages.com/rsb_issues_2020' id='link351' title='Red Sea Bulletin Issues'>Red Sea Bulletin 2020</a></li><li class=''><a href='https://www.redseapages.com/rsb_issues_2019' id='link352' title='Red Sea Bulletin Issues'>Red Sea Bulletin 2019</a></li></ul></li><li class=''><a href='https://www.redseapages.com/best-restaurants-el-gouna-hurghada' id='link620'>Best Restaurants El Gouna & Hurghada</a></li><li class=''><a href='https://www.redseapages.com/best-restaurants-el-gouna' id='link621'>Best Restaurants El Gouna </a></li><li class=''><a href='https://www.redseapages.com/best-restaurants-hurghada' id='link622'>Best Restaurants Hurghada</a></li></ul></li> </ul> 1580 </div> 1581 </div> 1582</nav> 1583<!--CSS IF MENU IS FIXED TOP--> 1584 1585</div> 1586<div class="clearfix"></div> 1587<!-- Begin Content --> 1588<main role="main" id="main-content"> 1589<div id="first_container" class="content-container fr-view"> 1590 <div class="container"> 1591 <div class="clearfix body-content"></div> 1592 <style type='text/css'> .secure { position:absolute; right:20px;top:-70px;z-index:100; } 1593.plan_header{line-height:28px;font-size:24px;font-weight:bold;margin:15px 0;text-shadow:0 0.1em 0.5em #FFFFFF;} 1594.plan_name{font-size:20px;margin-bottom:10px;text-shadow:0 0.1em 0.5em #FFFFFF;} 1595.plan_byline_price{font-size:12px;line-height:14px;margin:10px 0 15px;} 1596 1597.menu-bg {display:none;} 1598 1599div#price-page .billing-detail input.payment, div#price-page .billing-detail select.payment {background:#ffffff;} 1600div#price-page .billing-detail select.exp {background:#ffffff;} 1601div#price-page .billing-detail input.code {background:#ffffff;} 1602.offer-box ul {margin-left:60px;} 1603#mydropdown-1, .dropdown {display:none!important;} 1604.agreement { 1605clear: both; 1606text-align: center; 1607max-width: 640px; 1608} 1609h2.thanks { 1610max-width: 478px; 1611} 1612h2.thanks img { 1613vertical-align: top; 1614position: relative; 1615top: -10px; 1616} </style><div class='col-md-offset-2 col-md-8 checkout-page-body'><div class="pagehead checkout-title"> 1617 <h1> 1618 <small>Create Account</small> <span class=center-block>INDIVIDUAL MEMBER <h3><br>Registration for non-companies<br>Have your say! It's FREE</span> </h1> 1619 <div class="clearfix"></div> 1620</div> <!-- close pagehead --> 1621<div class="clearfix"></div> 1622</div> <!-- close col div --> 1623 <div class="clearfix"></div> 1624 1625 <!-- Open Sign Page Body --> 1626 <div class='col-md-offset-2 col-md-8 checkout-page-body'> <div class="well"> 1627 <style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/checkout/5" id="signup_free" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="default" form_action_div return_data_type="" name="signup_free" class=" ">
1627<input type="hidden" name="sized" value="0" id="signup_free-element-0"/><input type="hidden" name="subscription_id" value="5" id="signup_free-element-1"/><input type="hidden" name="sid" value="5" id="signup_free-element-2"/><input type="hidden" name="signup_date" value="20261002171806" id="signup_free-element-3"/><input type="hidden" name="subaction" value="createaccount" id="signup_free-element-4"/><input type="hidden" name="active" value="1" id="signup_free-element-5"/><input type="hidden" name="form" value="myform" id="signup_free-element-6"/><input type="hidden" name="formname" value="signup_free" id="signup_free-element-7"/><input type="hidden" name="dowiz" value="1" id="signup_free-element-8"/><input type="hidden" name="save" value="1" id="signup_free-element-9"/><div class="form-group"><label class="vertical-label bd-email" for="signup_free-element-10"><span class="required">* </span>Enter Email</label><input type="email" name="email" required autocomplete="off" value class="form-control" id="signup_free-element-10"/></div><div class="form-group"><label class="vertical-label bd-email" for="signup_free-element-11"><span class="required">* </span>Confirm Email</label><input type="email" name="email_confirm" required autocomplete="off" value class="form-control" id="signup_free-element-11"/></div><div class="form-group"><label class="vertical-label bd-password" for="signup_free-element-12"><span class="required">* </span>Create Password</label> 1628 <style> 1629 #togglePassword { 1630 background: none; 1631 border: none; 1632 cursor: pointer; 1633 font-weight: bold; 1634 font-size: .85em; 1635 position: absolute; 1636 right: 5px; 1637 top: 0; 1638 } 1639 </style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button> 1640
1640<script> 1641 function showPassword(node){ 1642 const parent = node.closest('.form-group'); 1643 const passwordField = parent.querySelector(`input[type='password'], input[type='text']`); 1644 const isPassword = passwordField.getAttribute('type') === 'password'; 1645 passwordField.setAttribute('type', isPassword ? 'text' : 'password'); 1646 const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`; 1647 node.innerHTML = iconHTML; 1648 } 1649 </script>
1649<input type="password" name="password" required autocomplete="off" value class="form-control" id="signup_free-element-12"/></div><div class="form-group"><label class="vertical-label bd-password" for="signup_free-element-13"><span class="required">* </span>Confirm Password</label><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button><input type="password" name="password_confirm" required autocomplete="off" value class="form-control" id="signup_free-element-13"/></div> <div class="well signup-consent-box bmargin"> 1650 <div class="form-group nomargin"> 1651 <div class="checkbox nomargin"> 1652 <label class="bmargin small"> <input type="checkbox" class="consent_history" class="checkbox" 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" /> 1653 <span class="required">* </span> By creating an account, you agree to our <a href="/about/terms" target="_blank">terms & conditions</a> </label> 1654 </div> 1655 </div> 1656 <div class="form-group nomargin"> 1657 <div class="checkbox nomargin"> 1658 <label class="bmargin small"> <input type="checkbox" class="consent_history" class="checkbox" name="consent_history[2]" autocomplete="off" value="2" required="required" data-fv-notempty="true" data-fv-notempty-message="You must agree to the GDPR consent terms" /> 1659 <span class="required">* </span> I understand that personal information I enter on this website will be stored and used to contact me in the future. I can change or remove this information at any time. </label> 1660 </div> 1661 </div> 1662 <div class="form-group nomargin"> 1663 <div class="checkbox nomargin"> 1664 <label class="bmargin small"> <input type="checkbox" class="consent_history" class="checkbox" name="consent_history[3]" autocomplete="off" value="3" required="required" data-fv-notempty="true" data-fv-notempty-message="You must agree to the GDPR consent terms" /> 1665 <span class="required">* </span> I understand that if I make any purchases on this website, billing information will be securely stored with a 3rd party payment processor. I can change or remove this information at any time. </label> 1666 </div> 1667 </div> 1668 <input type="hidden" name="consent_tools_active" value="3"> 1669 </div> 1670 <div class="clearfix"></div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control " id="signup_free-element-17"/></div><div class="form-group"><div class="form-group security_question_label"> 1671 <div id="signup_free-captchaContainer" class="control-group"> 1672 <div class="g-recaptcha" id="signup_free-google-recaptcha"></div> 1673 </div> 1674 <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> 1675 <div class="clearfix bmargin"></div> 1676 <input type="hidden" name="recaptcha" id="signup_free-rcap"> 1677</div> 1678 <style> 1679 .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 { 1680 transform: scale(0.77); 1681 -webkit-transform: scale(0.77); 1682 transform-origin: 0 0; 1683 -webkit-transform-origin: 0 0; 1684 margin-bottom: -15px; 1685 } 1686 1687 .modal #signup_free-captchaContainer, .col-md-4 #signup_free-captchaContainer, .col-md-3 #signup_free-captchaContainer, .col-lg-3 #signup_free-captchaContainer, .col-lg-4 #signup_free-captchaContainer { 1688 transform: scale(0.77); 1689 -webkit-transform: scale(0.77); 1690 transform-origin: 0 0; 1691 -webkit-transform-origin: 0 0; 1692 margin-bottom: -15px; 1693 } 1694 </style> 1695
1695<script type="text/javascript"> 1696 if(typeof formsFound == "undefined"){ 1697 var formID = ''; 1698 var currentCaptcha = {}; 1699 var captchaHolders = {}; 1700 var formsFound = {}; 1701 var captchaApiRequested = false; 1702 /* The forms the visitor has actually interacted with - only these get a widget. */ 1703 var captchaArmedForms = []; 1704 /* api.js stays lazy - nothing is fetched from Google until the visitor actually 1705 touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in 1706 and presses Enter without ever clicking, so api.js never loaded, the captcha 1707 never rendered, and the form POSTed an empty token. */ 1708 var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart']; 1709 1710 window.addEventListener('load', () => { 1711 formID = document.querySelectorAll('[name="recaptcha"]'); 1712 if (typeof formID != "undefined" && formID !== null) { 1713 for (let i = 0; i < formID.length; i++) { 1714 let formIDForm = formID[i].closest('form'); 1715 let captchaHolder = formIDForm.querySelector(".g-recaptcha"); 1716 1717 if (typeof formsFound[formIDForm.id] != "undefined") { 1718 formsFound[formIDForm.id]['counter']++; 1719 }else{ 1720 formsFound[formIDForm.id] = {'counter' : 1}; 1721 } 1722 1723 formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']); 1724 captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']); 1725 1726 if (typeof formIDForm != "undefined" && formIDForm !== null) { 1727 captchaTriggerEvents.forEach( evt => 1728 formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false) 1729 ); 1730 } 1731 } 1732 } 1733 }); 1734 } 1735 1736 function reCaptchaOnFormInteraction(event) { 1737 if (event && event.currentTarget) { 1738 captchaArmForm(event.currentTarget); 1739 } 1740 if (captchaApiRequested) { 1741 renderArmedCaptchas(); 1742 return; 1743 } 1744 captchaApiRequested = true; 1745 1746 var head = document.getElementsByTagName('head')[0]; 1747 var script = document.createElement('script'); 1748 script.type = 'text/javascript'; 1749 script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en'; 1750 head.appendChild(script); 1751 } 1752 1753 var captchaArmForm = function (formEl) { 1754 if (!formEl) { 1755 return; 1756 } 1757 for (var a = 0; a < captchaArmedForms.length; a++) { 1758 if (captchaArmedForms[a] === formEl) { 1759 return; 1760 } 1761 } 1762 captchaArmedForms.push(formEl); 1763 }; 1764 1765 var captchaSolvedCallback = function (holder) { 1766 return function () { 1767 var formEl = holder.closest('form'); 1768 if (!formEl) { 1769 return; 1770 } 1771 $(formEl).find('.security_question_label').removeClass('has-error'); 1772 $(formEl).find('#recaptcha_error').css('display', 'none'); 1773 var notification = document.getElementById(formEl.id + '-notification'); 1774 if (notification && notification.classList.contains('alert-danger-subtle')) { 1775 $(notification).slideUp(); 1776 } 1777 }; 1778 }; 1779 1780 var renderArmedCaptchas = function () { 1781 if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") { 1782 return; 1783 } 1784 for (var f = 0; f < captchaArmedForms.length; f++) { 1785 var holder = captchaArmedForms[f].querySelector('div[class=g-rec
1785aptcha]'); 1786 1787 if (!holder || !holder.id || holder.getClientRects().length === 0) { 1788 continue; 1789 } 1790 /* Guard a second render: grecaptcha throws on an element it already claimed. */ 1791 if (typeof captchaHolders[holder.id] === "undefined") { 1792 captchaHolders[holder.id] = grecaptcha.render(holder.id, { 1793 'sitekey': '6Lepy24kAAAAAK29cEclBtmt2t0x3tjR_PBuK8eu', 1794 'callback': captchaSolvedCallback(holder) 1795 }); 1796 } 1797 } 1798 }; 1799 1800 var onloadCallback = function (event) { 1801 renderArmedCaptchas(); 1802 }; 1803 1804 </script>
vendor: 1 bytes, line 1804
1804
1805<script> 1806 $(document).ready(function(){ 1807 /* Implicit submission (Enter inside a field) fires 'submit' without firing a click on 1808 the submit button, so the click guard below never sees it and the form POSTed an 1809 empty token. Bound on document/capture so it runs before FormValidation's own 1810 handler on the form - at AT_TARGET the capture flag does not order listeners, so a 1811 listener on the form itself would not reliably win. Native HTMLFormElement.submit() 1812 does not dispatch 'submit', so the solved-captcha path below is unaffected. */ 1813 var captchaGuardedForm = document.getElementById('signup_free'); 1814 if (captchaGuardedForm) { 1815 document.addEventListener('submit', function (event) { 1816 if (event.target !== captchaGuardedForm) { 1817 return; 1818 } 1819 1820 var formId = captchaGuardedForm.id; 1821 var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter'); 1822 var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined"; 1823 1824 if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") { 1825 $("#" + formId + " .security_question_label").removeClass("has-error"); 1826 $("#" + formId + " #recaptcha_error").css("display", "none"); 1827 return; 1828 } 1829 1830 /* Unsolved, or api.js still in flight: either way there is no token to send. */ 1831 event.preventDefault(); 1832 event.stopImmediatePropagation(); 1833 $("#" + formId + " .security_question_label").addClass("has-error"); 1834 $("#" + formId + " #recaptcha_error").css("display", "block"); 1835 return false; 1836 }, true); 1837 } 1838 $("#signup_free input[type=submit]").unbind('click'); 1839 $("#signup_free input[type=submit]").click(function (event) { 1840 1841 var formId = $(this.form).attr('id'); 1842 var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter'); 1843 1844 if (typeof captchaHolders[captchaHolderKey] != "undefined") { 1845 if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") { 1846 event.preventDefault(); 1847 $("#" + formId).formValidation('validate'); 1848 $("#" + formId + " .security_question_label").addClass("has-error"); 1849 $("#" + formId + " #recaptcha_error").css("display", "block"); 1850 return false; 1851 } 1852 1853 /* Solved captcha: clear the error UI and let the click proceed untouched. 1854 The browser then fires a REAL, button-initiated submit event, so 1855 FormValidation runs its normal chain (success.form.fv -> AJAX modal on 1856 checkout / native POST on login). Re-submitting here artificially broke 1857 both ways: native form.submit() skips the FV chain (checkout rendered the 1858 raw JSON response), and jQuery .submit() fires a synthetic submit that FV 1859 refuses, leaving the form stuck after the first error (Bug 2). */ 1860 $("#" + formId + " .security_question_label").removeClass("has-error"); 1861 $("#" + formId + " #recaptcha_error").css("display", "none"); 1862 } 1863 }); 1864 }); 1865</script>
1865</div><div class="form-actions"><input type="submit" value="Create My Profile" name class="btn btn-lg btn-block tmargin btn-success " id="signup_free-element-20"/></div></form>
1865<script type="text/javascript">jQuery(document).ready(function() { jQuery("#signup_free").bind("submit", function() { 1866 });}); </script>
1866 <div class="clearfix"></div> 1867 <div id="notification" class="alert alert-warning hidden"></div> 1868 </div> 1869 </div> 1870 <!-- Close Sign Page Body --> 1871 <div class="clearfix clearfix-lg"></div> 1872 <div class="clearfix"></div> 1873 </div> 1874</div> 1875</main> 1876<!-- End Content --> 1877<style type='text/css'> .scrollup { 1878 border-radius: 3px; 1879 width: 40px; 1880 height: 40px; 1881 opacity: 0.4; 1882 position: fixed; 1883 bottom: 30px; 1884 right: 30px; 1885 display: none; 1886 background: rgba(119, 119, 119, 0.8); 1887 z-index: 1000000; 1888} 1889.scrollup i { 1890 font-size: 36px; 1891 color: white; 1892 position: relative; 1893 top: 0px; 1894 left: 10px; 1895} </style> <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" 1896 data-backdrop="static" data-keyboard="false"> 1897 <div class="modal-dialog" role="document"> 1898 <div class="modal-content"> 1899 <div class="modal-body nohpad nobpad"> 1900 <button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin" 1901 data-dismiss="modal">× 1902 </button> 1903 </div> 1904 </div> 1905 </div> 1906 </div> 1907 1908 1909 1910 <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/sweetalert2.min.css"> 1911
1911<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
1911 1912
1913<script> 1914 function clearContent(thisObj){ 1915 var size; 1916 if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){ 1917 size = "small"; 1918 } else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){ 1919 size = "large"; 1920 } else { 1921 size = "medium"; 1922 } 1923 if(!thisObj.parent().hasClass('input_wrapper')){ 1924 if(thisObj.parent().hasClass('input-group-sm')){ 1925 thisObj.wrap('<span class="input-group-sm input_wrapper"></span>'); 1926 } else if (thisObj.parent().hasClass('input-group-lg')){ 1927 thisObj.wrap('<span class="input-group-lg input_wrapper"></span>'); 1928 } else { 1929 thisObj.wrap('<span class="input_wrapper"></span>'); 1930 } 1931 } 1932 if(thisObj.val() != ""){ 1933 if(thisObj.hasClass('googleSuggest')){ 1934 thisObj.parent().find('.fill_location').remove(); 1935 } 1936 if (!thisObj.parent().find('.clear_content').length){ 1937 thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`); 1938 if (thisObj.hasClass("tt-input")) { 1939 thisObj.focus(); 1940 } 1941 1942 } 1943 } 1944 } 1945 1946 $(document).on('click', '.drp-buttons .applyBtn', function(){ 1947 clearContent($(".dateRange input")); 1948 }); 1949 1950 $('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){ 1951 clearContent($(this)); 1952 }); 1953 1954 $(document).ready(function(){ 1955 $('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){ 1956 clearContent($(this)); 1957 }) 1958 }) 1959 1960 $(document).on('click', '.clear_content', function(){ 1961 $(this).parent().find('input').val(''); 1962 //tt-input its a class for typeahead auto-suggest 1963 if ($(this).parent().find('input').hasClass("tt-input")) { 1964 $(this).parent().find('input').typeahead('val',''); 1965 } 1966 clearContent($(this).parent().find('input')); 1967 $(this).remove(); 1968 }); 1969 1970 $(window).on('load', function () { 1971 setTimeout(function() { 1972 // add missing href attribute to multi-category options in search modules 1973 $('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#'); 1974 }, 2000); 1975 }); 1976</script>
1976 1977 1978 1979 1980<a href="#" class="scrollup" title="scrollup"> 1981 <i class="fa fa-caret-up" aria-hidden="true"></i> 1982</a>
1983<script> 1984 $(document).ready(function(){ 1985 // .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318. 1986 // Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an 1987 // unguarded call throws and kills the rest of this ready() handler (scrollup, crop button). 1988 if ($.fn.progressbar) { 1989 $('.progress .progress-bar').progressbar({ 1990 display_text: 'fill' 1991 }); 1992 } 1993 $(window).scroll(function(){ 1994 1995 if ($(this).scrollTop() > 600) { 1996 $('.scrollup').fadeIn(); 1997 1998 } else { 1999 $('.scrollup').fadeOut(); 2000 } 2001 }); 2002 $('.scrollup').click(function(){ 2003 $("html, body").animate({ 2004 scrollTop: 0 2005 }, 600); 2006 return false; 2007 }); 2008 $('#cropButton').click(function(){ 2009 var iframe = $("#cropiFrame"); 2010 iframe.attr("src", iframe.data("src")); 2011 }); 2012 }); 2013</script>
2013 2014 <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 2014-2015
2014 2015 <script async src="https://www.googletagmanager.com/gtag/js?id=
2015G-N29RP9Q28S
vendor: 17 bytes, lines 2015-2016
2015"></script> 2016
2016<script> 2017
vendor: 154 bytes, lines 2017-2020
2017window.dataLayer = window.dataLayer || []; 2018 function gtag(){dataLayer.push(arguments);} 2019 gtag('js', new Date()); 2020 gtag('config', '
2020G-N29RP9Q28S
vendor: 9 bytes, lines 2020-2021
2020'); 2021
2021</script>
2021 2022 2023
2023<script type="text/javascript"> 2024 /* CT dissolved its county governments in 1960, so Google returns its 8 counties as 2025 colloquial_area instead of administrative_area_level_2 â they must never reach a 2026 city field. Google translates the component name to the site language, so the 2027 language-stable place_id is checked first and the word list only backs it up. */ 2028 if (typeof window.bdIsColloquialCounty !== 'function') { 2029 window.bdIsColloquialCounty = function (componentName, resultPlaceId) { 2030 var countyPlaceIds = [ 2031 'ChIJWRM2Nakw5okRoTCxHvz_5xw', /* Middlesex County, CT */ 2032 'ChIJmeTbuDYH6IkR3xgeNvszpgg', /* Fairfield County, CT */ 2033 'ChIJiT24cvvP54kR2fSPHkp0Akc', /* New Haven County, CT */ 2034 'ChIJvYe7N7eQ54kRL6nZaXRwPkI', /* Litchfield County, CT */ 2035 'ChIJtxC3p6qs54kRIvK-2bctar0', /* Hartford County, CT */ 2036 'ChIJj-lvZQli5okRGCuGRd6xKt0', /* Tolland County, CT */ 2037 'ChIJRWKqeLdi5okRLXWDlSEGeTY', /* Windham County, CT */ 2038 'ChIJwTIQbvVv5okRU5_gSJczUTQ' /* New London County, CT */ 2039 ]; 2040 2041 if (typeof resultPlaceId === 'string' && resultPlaceId !== '' 2042 && countyPlaceIds.indexOf(resultPlaceId) !== -1) { 2043 return true; 2044 } 2045 2046 if (typeof componentName !== 'string' || componentName === '') { 2047 return false; 2048 } 2049 2050 var name = componentName.toLowerCase(); 2051 2052 /* Only unambiguous county words â generic ones (region, district) would strip 2053 legitimate colloquial areas, and their languages already match on place_id. 2054 Word-boundary matched so names like "Countyline, OK" are left alone. */ 2055 var wordTokens = ['county', 'condado', 'comté', 'contea', 2056 'comitatul', 'hrabstwo', 'megye', 'konderria']; 2057 var isAlnum = function (ch) { 2058 return (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'); 2059 }; 2060 2061 for (var t = 0; t < wordTokens.length; t++) { 2062 var token = wordTokens[t]; 2063 var from = 0; 2064 while (true) { 2065 var at = name.indexOf(token, from); 2066 if (at === -1) { 2067 break; 2068 } 2069 var before = (at > 0) ? name.charAt(at - 1) : ' '; 2070 var after = ((at + token.length) < name.length) ? name.charAt(at + token.length) : ' '; 2071 if (!isAlnum(before) && !isAlnum(after)) { 2072 return true; 2073 } 2074 from = at + 1; 2075 } 2076 } 2077 2078 /* Non-latin scripts have no alphanumeric word boundary. */ 2079 var scriptTokens = ['каÑнÑи', 'کاؤÙÙ¹Û', 'à¤à¤¾à¤à¤à¤à¥', 'ì¹´ì´í°']; 2080 for (var s = 0; s < scriptTokens.length; s++) { 2081 if (name.indexOf(scriptTokens[s]) !== -1) { 2082 return true; 2083 } 2084 } 2085 2086 return false; 2087 }; 2088 } 2089 2090 // Try to load coordinates from sessionStorage on page load 2091 var vlat = 0; 2092 var vlon = 0; 2093 try { 2094 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 2095 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 2096 if (savedLat && savedLon) { 2097 vlat = parseFloat(savedLat); 2098 vlon = parseFloat(savedLon); 2099 } 2100 } catch(e) {} 2101 var isSubmit = false; 2102 var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests 2103 2104 // Function to save coordinates to sessionStorage 2105 function saveCoordinatesToSession(lat, lon) { 2106 try { 2107 sessionStorage.setItem('bd_geolocation_lat', lat.toString()); 2108 sessionStorage.setItem('bd_geolocation_lon', lon.toString()); 2109 } catch(e) {} 2110 } 2111 2112 // Function to get coordinates from sessionStorage if current ones are 0 2113 function getCoordinatesFromSession() { 2114 if (vlat === 0 && vlon === 0) { 2115 try { 2116 var savedLat = sessionStorage.getItem('bd_geolocation_lat'); 2117 var savedLon = sessionStorage.getItem('bd_geolocation_lon'); 2118 if (savedLat && savedLon) { 2119 vlat = parseFloat(savedLat); 2120 vlon = parseFloat(savedLon); 2121 return true; 2122 } 2123 } catch(e) {} 2124 } 2125 return false; 2126 } 2127 var cityTypes = [ 2128 'colloquial_area', 2129 'locality', 2130 'sublocality', 2131 'sublocality_level_1', 2132 'sublocality_level_2', 2133 'sublocality_level_3', 2134 'sublocality_level_4', 2135 'sublocality_level_5', 2136 'neighborhood', 2137 'ward', 2138 'postal_town' 2139 ]; 2140 2141 var postalTypes = [ 2142 'postal_code', 2143 'postal_code_prefix', 2144 'postal_code_suffix', 2145 'street_number', 2146 'premise', 2147 'subpremise', 2148 'route', 2149 'intersection', 2150 'street_address', 2151 'floor', 2152 'room', 2153 'post_box', 2154 'delivery_address' 2155 ]; 2156 2157 var isSubmitting = false; 2158 window.cachedSelectedOption = [{ 'typed_location': '' }]; 2159 window.isSubmittingMainSearch = false; 2160 2161 document.addEventListener('DOMContentLoaded', () => { 2162 let isSubmitting = false; // Add flag at the top level 2163 2164 setTimeout(()=>{ 2165 let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location'); 2166 if (typeof googleSuggestForm != "undefined") { 2167 for (let i = 0; i < googleSuggestForm.length; i++) { 2168 let closestForm = googleSuggestForm[i].closest('form'); 2169 if(typeof closestForm != "undefined" && closestForm != null){ 2170 closestForm.addEventListener('focusin', googleMapOnFormClick, false); 2171 2172 }else{ 2173 googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false); 2174 } 2175 googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false); 2176 } 2177 } 2178 },200);
2179 2180 $('.website-search button[type=submit]').click(async function (e) { 2181 e.preventDefault(); // Prevent the default submit action 2182 var nativeForm = $(this).closest('form')[0]; 2183 if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) { 2184 return false; 2185 } 2186 await googleMapOnFormClick(); 2187 $(this).closest('form').submit(); 2188 }); 2189 }); 2190 window['gmapClick'] = false; 2191 function googleMapOnFormClick() { 2192 if(window.gmapClick){ 2193 return; 2194 } 2195 window.gmapClick = true; 2196 2197 return new Promise((resolve, reject) => { 2198 window.isSubmittingMainSearch = false; 2199 let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location'); 2200 let mapUri = "https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places®ion=EG&callback=initializeG&language=en&key=AIzaSyDHLeBQGDDvYKhnoLFYoWClgWwL7JxpL_U"; 2201 2202 if (typeof google !== "undefined" && google.hasOwnProperty('maps')) { 2203 resolve('already loaded'); 2204 return; 2205 } 2206 2207 let loadMapScriptAsync = function (uri) { 2208 return new Promise((resolve, reject) => { 2209 let script = document.createElement('script'); 2210 script.type = 'text/javascript'; 2211 script.src = uri; 2212 script.async = true; 2213 script.onload = function () { 2214 resolve("ok"); 2215 }; 2216 script.onerror = function () { 2217 reject("Failed to load Google Maps script."); 2218 }; 2219 document.head.appendChild(script); 2220 }); 2221 }; 2222 2223 loadMapScriptAsync(mapUri) 2224 .then(() => { 2225 resolve(); 2226 }) 2227 .catch((error) => { 2228 console.error(error); 2229 reject(); 2230 }); 2231 2232 }); 2233 } 2234 2235 function initializeG() { 2236 var geocoder; 2237 //This piece of code will create an autosuggest for every input with the class "googleSuggest" 2238 var counter = 1; 2239 var inputsArray = []; 2240 window.cachedSelectedOption = [{ 'typed_location': '' }]; 2241 let mapExists = document.querySelectorAll('[id^="map"]').length > 0; 2242 const functionsToInvoke = { 2243 setJsMap: true, 2244 setJsMapOverview: mapExists, 2245 setJsMapSR: mapExists, 2246 setJsMapSidebar: mapExists 2247 }; 2248 if (window['maps_loaded'] !== true) { 2249 for (let func in functionsToInvoke) { 2250 if (typeof window[func] === 'function' && functionsToInvoke[func]) { 2251 window['maps_loaded'] = true; 2252 window[func](); 2253 } 2254 } 2255 } 2256 $(".googleSuggest").each(function () { 2257 //get the id from the input to be the unique identifier for each autocomplete 2258 var inputId = $(this).attr("id"); 2259 var inputElement = $(this); 2260 inputsArray[counter] = /** @type {HTMLInputElement} */( 2261 document.getElementById('' + inputId)); 2262 const mainCountry = ''; 2263 const inputOptions = { 2264 fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'], 2265 types: ['geocode'] 2266 } 2267 const language = "en"; 2268 2269 if (language) { 2270 inputOptions.language = language; 2271 } 2272 if (mainCountry) { 2273 inputOptions.componentRestrictions = {country: mainCountry}; 2274 inputOptions.region = mainCountry; 2275 } 2276 2277 var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions); 2278 google.maps.event.addListener(autocomplete, 'place_changed', function () { 2279 const place = autocomplete.getPlace(); 2280 2281 cachedSelectedOption = []; 2282 cachedSelectedOption.push(place); 2283 2284 cachedSelectedOption[0]['typed_location'] = inputElement.val(); 2285 /* if(cachedSelectedOption[0]['adr_address']){ 2286 let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, ''); 2287 cachedSelectedOption[0]['typed_location'] = cleanLocation; 2288 inputElement.val(cleanLocation); 2289 }*/ 2290 if (cachedSelectedOption[0]['address_components'] == undefined) { 2291 cachedSelectedOption = []; 2292 var emptyObj = { 2293 'typed_location': '' 2294 }; 2295 cachedSelectedOption.push(emptyObj); 2296 } 2297 }); 2298 //the code that prevents the submition when hit enter on a google location autocomplete item 2299 inputElement.keydown( function (e) { 2300 if (e.keyCode == 13) { 2301 var pacCounter = 0; 2302 //need to run a loop to check each pac container 2303 $('.pac-container').each(function () { 2304 2305 if ($(this).css("display") != "none") { 2306 pacCounter++; 2307 } 2308 }); 2309 if (pacCounter > 0) { 2310 e.preventDefault(); 2311 } 2312 } 2313 }); 2314 counter++; 2315 }); 2316 2317 //triggers every time a form with the id website-search is trigered 2318 $('.website-search').submit(function (e) { 2319 2320 var currentForm = $(this); 2321 var locationInput = $(this).find(".googleLocation"); 2322 var $submitButton = currentForm.find('input[type=submit], button[type=submit]'); 2323 2324 2325 if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') { 2326 2327 // Set submitting flag 2328 window.isSubmittingMainSearch = true; 2329 $submitButton.prop('disabled', true); 2330 2331 e.preventDefault(); 2332 //this variable has the main country of the site 2333 var form = currentForm; 2334 var urlGET = form.serialize(); 2335 var formActionUrl = form.attr("action"); 2336 var locationValue = locationInput.val(); 2337 2338 2339 2340 const mainCountry = ''; 2341 const inputOptions = { 2342 address:locationValue 2343 } 2344 const language = "en"; 2345 2346 if (language) { 2347 inputOptions.language = language; 2348 } 2349 if (mainCountry) { 2350 inputOptions.componentRestrictions = {country: mainCountry}; 2351 inputOptions.region = mainCountry; 2352 } 2353 2354 if (typeof cachedSelectedOption == 'undefined') { 2355 var emptyForm = { 2356 'typed_location': '' 2357 }; 2358 cachedSelectedOption.push(emptyForm); 2359 } 2360 2361 if (locationValue != cachedSelectedOption[0]['typed_location']) { 2362 geocoder = new google.maps.Geocoder(); 2363 geocoder.geocode(inputOptions, function (results, status) { 2364 2365 //if the google response of the geocoding was successful it will use that info to build the url for the new search 2366 if (status == google.maps.GeocoderStatus.OK) { 2367 parseInfoToSearch(results, urlGET, formActionUrl); 2368 2369 } else { 2370 var urlPath = formActionUrl; 2371 var redirect = urlPath + "?" + urlGET; 2372 //will redirect the page using the new url that has been constructed 2373 window.location.href = redirect; 2374 } 2375 }); 2376 2377 } else { 2378 parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl); 2379 } 2380 } 2381 }); 2382 2383 2384 //check if a map has been loaded 2385 if ($('#map-canvas').length > 0) { 2386 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>"; 2387 $('body').append(cssHideLogo); 2388 } else { 2389 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>"; 2390 $('body').append(cssHideLogo); 2391 } 2392
2393 if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") { 2394 populateSearchFields(); 2395 } 2396 2397 if($('.googleSuggest').val() == ""){ 2398 populateSearchFields(); 2399 } 2400 2401 var geocodeVisitorsSetting = '0'; 2402 var geocodingMethod = 'HTML5'; 2403 2404 //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 2405 2406 var vlon = ''; 2407 var vlat = ''; 2408 } 2409 2410 function switchPlaceID(placeId,urlGET, formActionUrl) { 2411 let request = { 2412 placeId: placeId, 2413 fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'], 2414 }; 2415 2416 let service = new google.maps.places.PlacesService(document.createElement('div')); 2417 service.getDetails(request, function(place, status) { 2418 if (status === google.maps.places.PlacesServiceStatus.OK) { 2419 let dataArray = []; 2420 dataArray.push(place); 2421 parseInfoToSearch(dataArray, urlGET, formActionUrl); 2422 } else { 2423 console.error('Place details request failed with status:', status); 2424 } 2425 }); 2426 } 2427 2428 function parseInfoToSearch(results, urlGET, formActionUrl) { 2429 var urlSearchParams = new URLSearchParams(urlGET); 2430 var parameters = {}; 2431 var addressComponentsArray = []; 2432 if (results.length > 1) { 2433 if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){ 2434 let tempResult = results[0]; 2435 results[0] = results[1]; 2436 results[1] = tempResult; 2437 } 2438 for (let i = 0; i < results.length; i++) { 2439 if (results[i].types[0] === 'natural_feature' || 2440 results[i].types[0] === 'airport' || 2441 results[i].types[0] === 'point_of_interest' || 2442 results[i].types[0] === 'establishment' || 2443 results[i].types[0] === 'political' || 2444 results[i].types[0] === 'park') { 2445 results.splice(i, 1); 2446 } 2447 } 2448 } 2449 var adComLength = results[0].address_components.length; 2450 2451 if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){ 2452 switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl); 2453 return; 2454 } 2455 sessionStorage.setItem("google_result",JSON.stringify(results)); 2456 2457 2458 var foundPostalType = results[0].types.find(type => postalTypes.includes(type)); 2459 var foundCityType = results[0].types.find(type => cityTypes.includes(type)); 2460 2461 //loop that will build the array with the address components and will get the short name of country and administrative area level 1 2462 for (var i = 0; i < adComLength; i++) { 2463 2464 if (results[0].address_components[i]['types'][0] == "country") { 2465 parameters.country_sn = results[0].address_components[i]['short_name']; 2466 } 2467 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 2468 parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name']; 2469 } 2470 if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") { 2471 parameters.stateSearchLN = results[0].address_components[i]['long_name']; 2472 } 2473 if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") { 2474 /* short_name is what the service-area writer stores in 2475 service_areas.county_sn, so the search must send the same 2476 form or county matching breaks wherever short != long. */ 2477 parameters.county_sn = results[0].address_components[i]['short_name']; 2478 } 2479 if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) { 2480 var addrType = results[0].address_components[i]['types'][0]; 2481 var addrLong = results[0].address_components[i]['long_name']; 2482 /* CT counties come back as colloquial_area â keep them out of parameters.city. */ 2483 if (addrType !== 'colloquial_area' 2484 || !window.bdIsColloquialCounty(addrLong, results[0].place_id)) { 2485 parameters.city = addrLong; 2486 } 2487 } 2488 if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") { 2489 parameters.postal_code = results[0].address_components[i]['long_name']; 2490 } 2491 } 2492 2493 2494 // Filter out 'political' from result types - use more specific type when available 2495 // Same pattern as BD-directory-maps-typePolitical (PR #5642) 2496 if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') { 2497 results[0].types.splice(0, 1); 2498 } 2499 2500 // Pick the most specific type from results, skip "political" (too generic) 2501 parameters.location_type = results[0].types[0]; 2502 for (var t = 0; t < results[0].types.length; t++) { 2503 if (results[0].types[t] != 'political') { 2504 parameters.location_type = results[0].types[t]; 2505 break; 2506 } 2507 } 2508 2509 // When searching by city/locality, omit postal_code â Google returns 2510 // a partial zip prefix that doesn't match all members in the city 2511 if (parameters.location_type == 'locality' && parameters.postal_code) { 2512 delete parameters.postal_code; 2513 } 2514 2515 if (parameters.adm_lvl_1_sn != '') { 2516 parameters.stateSearch = parameters.adm_lvl_1_sn; 2517 } 2518 if (parameters.country_sn == "GB") { 2519 delete parameters.adm_lvl_1_sn; 2520 } 2521 2522 //will check if the response had the bounds parameters 2523 //if it had it will add the south west and north east parameters to the new url 2524 if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) { 2525 2526 if (results[0].geometry.hasOwnProperty('bounds')) { 2527 var boundsResponse = results[0].geometry.bounds; 2528 2529 } else { 2530 var boundsResponse = results[0].geometry.viewport; 2531 } 2532 parameters.swlat = boundsResponse.getSouthWest
2532().lat(); 2533 parameters.nelat = boundsResponse.getNorthEast().lat(); 2534 parameters.swlng = boundsResponse.getSouthWest().lng(); 2535 parameters.nelng = boundsResponse.getNorthEast().lng(); 2536 2537 //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 2538 } else { 2539 parameters.fsearch = "radius"; 2540 } 2541 var locationCenterResponse = results[0].geometry.location; 2542 parameters.lat = locationCenterResponse.lat(); 2543 parameters.lng = locationCenterResponse.lng(); 2544 parameters.faddress = results[0].formatted_address; 2545 parameters.place_id = results[0].place_id; 2546 var formatParameters = $.param(parameters); 2547 urlGET = urlGET + "&" + formatParameters; 2548 var urlPath = formActionUrl; 2549 var redirect = urlPath + "?" + urlGET; 2550 //will redirect the page using the new url that has been constructed 2551 window.location.href = redirect; 2552 } 2553 function populateSearchFields() { 2554 var prePopulateLocationSetting = '0'; 2555 var geolocationMethod = 'HTML5'; 2556 2557 // If geolocation is in progress and we don't have coordinates yet, wait a bit 2558 if (isGettingLocation && (vlat === 0 || vlon === 0)) { 2559 var waitStartTime = performance.now(); 2560 var waitInterval = setInterval(function() { 2561 if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) { 2562 clearInterval(waitInterval); 2563 // Retry after a short delay to ensure coordinates are set 2564 setTimeout(function() { 2565 populateSearchFields(); 2566 }, 100); 2567 } else if ((performance.now() - waitStartTime) > 10000) { 2568 // Timeout after 10 seconds - try sessionStorage 2569 clearInterval(waitInterval); 2570 if (getCoordinatesFromSession()) { 2571 setTimeout(function() { 2572 populateSearchFields(); 2573 }, 100); 2574 } 2575 } 2576 }, 200); 2577 return; 2578 } 2579 2580 // If coordinates are 0, try to get from sessionStorage 2581 if (vlat === 0 || vlon === 0) { 2582 getCoordinatesFromSession(); 2583 } 2584 2585 // Validate coordinates first 2586 var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180); 2587 2588 if (!hasValidCoordinates) { 2589 return; 2590 } 2591 2592 //if set to one will get the lat and lng to do reverse geocoding 2593 if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) { 2594 var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon)); 2595 var visitorGeocoder = new google.maps.Geocoder(); 2596 var formattedAddress = []; 2597 var preFormattedStructure = { 2598 "locality": "long_name", 2599 "administrative_area_level_2": "long_name", 2600 "administrative_area_level_1": "long_name", 2601 "country": "long_name" 2602 }; 2603 visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) { 2604 //if the google response of the geocoding was successful it will use that info to build the url for the new search 2605 if (status == google.maps.GeocoderStatus.OK) { 2606 window.cachedSelectedOption = results; 2607 $.each(preFormattedStructure, function (findex, fvalue) { 2608 $.each(results[0].address_components, function (rindex, rvalue) { 2609 if (rvalue.types[0] == findex) { 2610 formattedAddress.push(rvalue.long_name); 2611 } 2612 }); 2613 }); 2614 $('.googleSuggest').each(function () { 2615 if ($(this).val() == '') { 2616 if (formattedAddress.length > 0) { 2617 $(this).val(formattedAddress.join(', ')); 2618 clearContent($(this)); 2619 } 2620 } 2621 }); 2622 } else { 2623 $('.googleSuggest').each(function () { 2624 $(this).val(''); 2625 }); 2626 } 2627 }); 2628 } 2629 } 2630 function showError(error) { 2631 switch (error.code) { 2632 case error.PERMISSION_DENIED: 2633 case 1: // PERMISSION_DENIED 2634 $('.fill_location.clicked').popover({ 2635 content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`, 2636 container: 'body' 2637 }); 2638 $('.fill_location.clicked').popover('toggle'); 2639 setTimeout(function () { 2640 $('.fill_location.clicked').popover('hide'); 2641 $('.fill_location.clicked').removeClass('clicked'); 2642 }, 4000); 2643 break; 2644 case error.POSITION_UNAVAILABLE: 2645 case 2: // POSITION_UNAVAILABLE 2646 $('.fill_location.clicked').popover({ 2647 content: `Location information is unavailable. Please check your device location settings.`, 2648 container: 'body' 2649 }); 2650 $('.fill_location.clicked').popover('toggle'); 2651 setTimeout(function () { 2652 $('.fill_location.clicked').popover('hide'); 2653 $('.fill_location.clicked').removeClass('clicked'); 2654 }, 4000); 2655 break; 2656 case error.TIMEOUT: 2657 case 3: // TIMEOUT 2658 $('.fill_location.clicked').popover({ 2659 content: `Location request timed out. Please ensure location services are enabled and try again.`, 2660 container: 'body' 2661 }); 2662 $('.fill_location.clicked').popover('toggle'); 2663 setTimeout(function () { 2664 $('.fill_location.clicked').popover('hide'); 2665 $('.fill_location.clicked').removeClass('clicked'); 2666 }, 4000); 2667 break; 2668 case error.UNKNOWN_ERROR: 2669 default: 2670 $('.fill_location.clicked').popover({ 2671 content: `An error occurred while getting your location. Please try again.`, 2672 container: 'body' 2673 }); 2674 $('.fill_location.clicked').popover('toggle'); 2675 setTimeout(function () { 2676 $('.fill_location.clicked').popover('hide'); 2677 $('.fill_location.clicked').removeClass('clicked'); 2678 }, 4000); 2679 break; 2680 } 2681 } 2682 if (navigator.geolocation) { 2683 if ($(".googleSuggest")[0]) { 2684 $(document).on('click', '.fill_location', function getCXPosition() { 2685 // Prevent multiple simultaneous geolocation requests 2686 if (isGettingLocation) { 2687 return; 2688 } 2689 2690 var $button = $(this); 2691 $button.addClass('clicked'); 2692 var startPos; 2693 2694 // Set flag to prevent concurrent requests 2695 isGettingLocation = true; 2696 2697 // Function to actually get the position 2698 var attemptGetPosition = function() { 2699 // Try with shorter timeout first for faster response 2700 var geoOptions = {
2701 enableHighAccuracy: false, // Use false for faster response 2702 timeout: 8000, // 8 second timeout (reduced for faster failure) 2703 maximumAge: 300000 // Accept cached position up to 5 minutes old 2704 }; 2705 2706 navigator.geolocation.getCurrentPosition(function (position) { 2707 startPos = position; 2708 vlat = startPos.coords.latitude; 2709 vlon = startPos.coords.longitude; 2710 2711 // Validate coordinates before proceeding 2712 if (!vlat || !vlon || vlat === 0 || vlon === 0) { 2713 isGettingLocation = false; 2714 $button.removeClass('clicked'); 2715 return; 2716 } 2717 2718 // Save coordinates to sessionStorage 2719 saveCoordinatesToSession(vlat, vlon);
2720 2721 $.get("/api/data/html/get/data_widgets/widget_name", { 2722 "vlat": vlat, 2723 "vlon": vlon, 2724 "name": "Website - Save Coordinates Session" 2725 }); 2726 2727 populateSearchFields(); 2728 2729 // Clear flag 2730 isGettingLocation = false; 2731 $button.removeClass('clicked'); 2732 }, function(error) { 2733 // Clear flag on error 2734 isGettingLocation = false; 2735 $button.removeClass('clicked'); 2736 2737 // For timeout errors, try sessionStorage as fallback 2738 if (error.code === 3) { 2739 if (getCoordinatesFromSession()) { 2740 // Use cached coordinates 2741 $.get("/api/data/html/get/data_widgets/widget_name", { 2742 "vlat": vlat, 2743 "vlon": vlon, 2744 "name": "Website - Save Coordinates Session" 2745 }); 2746 2747 populateSearchFields(); 2748 2749 // Clear flag 2750 isGettingLocation = false; 2751 $button.removeClass('clicked'); 2752 } else { 2753 $button.popover({ 2754 content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`, 2755 container: 'body' 2756 }); 2757 $button.popover('show'); 2758 setTimeout(function() { 2759 $button.popover('hide'); 2760 }, 5000); 2761 } 2762 } else { 2763 showError(error); 2764 } 2765 }, geoOptions); 2766 }; 2767 2768 // Check if geolocation permission is already denied (but don't block if it's prompt) 2769 if (navigator.permissions && navigator.permissions.query) { 2770 navigator.permissions.query({name: 'geolocation'}).then(function(result) { 2771 if (result.state === 'denied') { 2772 isGettingLocation = false; 2773 $button.removeClass('clicked'); 2774 showError({code: 1, message: 'Permission denied'}); 2775 return; 2776 } else { 2777 // Permission is granted or prompt - proceed with geolocation 2778 attemptGetPosition(); 2779 } 2780 }).catch(function(err) { 2781 // If permission API not supported, proceed anyway 2782 attemptGetPosition(); 2783 }); 2784 } else { 2785 // Permission API not available, proceed with geolocation 2786 attemptGetPosition(); 2787 } 2788 }) 2789 } 2790 } else { 2791 console.log('Geolocation is not supported for this Browser/OS version yet.'); 2792 } 2793 function getUrlParameter(sParam) { 2794 var sPageURL = window.location.search.substring(1); 2795 var sURLVariables = sPageURL.split('&'); 2796 2797 for (var i = 0; i < sURLVariables.length; i++) { 2798 var sParameterName = sURLVariables[i].split('='); 2799 2800 if (sParameterName[0] == sParam) { 2801 return decodeURIComponent(sParameterName[1]); 2802 } 2803 } 2804 } 2805 </script>
2805 2806
2806<script> 2807 // switchClass() is jQuery UI (Effects), which is no longer loaded on every page. 2808 // removeClass().addClass() is the same class swap, applied immediately instead of 2809 // after animateClass()'s queued 400ms default. 2810 $(document).ready(function(){ 2811 $('.navbar-header .navbar-toggle.main_menu').click(function(){ 2812 $('.mobile-main-menu').toggleClass('opened'); 2813 }); 2814 $('.mobile-main-menu .sidebar-nav').find('li').each(function(){ 2815 $(this).addClass('hasChildren'); 2816 if ($(this).children('ul').length > 0){ 2817 $(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>'); 2818 $(this).find('a').after('<div class="clearfix"></div>'); 2819 $(this).find('span').after('<div class="clearfix"></div>'); 2820 } 2821 $(this).append('<div class="clearfix"></div>'); 2822 }); 2823 2824 $('.mobile-main-menu .sidebar-nav li i').click(function(){ 2825 if ($(this).parent().children('ul').length > 0){ 2826 $(this).parent().toggleClass('sub_open'); 2827 } 2828 if ($(this).hasClass('fa-plus')){ 2829 $(this).removeClass('fa-plus').addClass('fa-minus'); 2830 } else { 2831 $(this).removeClass('fa-minus').addClass('fa-plus'); 2832 } 2833 }); 2834 }) 2835 2836 if ($(window).width() > 740 && $(window).width() < 1100) { 2837 2838 $(document).ready(function(){ 2839 $('.tablet-menu .tablet-menu-ul').find('li').each(function(){ 2840 2841 if ($(this).children('ul').length > 0){ 2842 $(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>'); 2843 $(this).find('a').after('<div class="clearfix"></div>'); 2844 var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");; 2845 $(this).children('a').html(this_link); 2846 $(this).find('span').after('<div class="clearfix"></div>'); 2847 } 2848 $(this).append('<div class="clearfix"></div>'); 2849 }); 2850 2851 $('.tablet-menu .tablet-menu-ul li i').click(function(){ 2852 2853 if ($(this).parent().children('ul').length > 0){ 2854 $(this).parent().toggleClass('sub_open'); 2855 2856 if ($(this).siblings( "ul" ).hasClass('tablet-block')){ 2857 $(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none'); 2858 } else { 2859 $(this).siblings( "ul" ).addClass( "tablet-block" ); 2860 2861 if ($(this).siblings( "ul" ).hasClass('tablet-none')){ 2862 $(this).siblings( "ul" ).removeClass('tablet-none') 2863 } 2864 2865 if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) { 2866 $(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none'); 2867 $(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus'); 2868 } 2869 2870 if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) { 2871 $(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 2872 $(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 2873 } 2874 2875 if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) { 2876 $(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none'); 2877 $(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus'); 2878 } 2879 2880 } 2881 2882 } 2883 2884 if ($(this).hasClass('fa-plus')){ 2885 $(this).removeClass('fa-plus').addClass('fa-minus'); 2886 } else { 2887 $(this).removeClass('fa-minus').addClass('fa-plus'); 2888 } 2889 }); 2890 }) 2891 } 2892 // Append unique ID attribute for mobile main menu links 2893 $('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" }); 2894</script>
2894 2895
2896<script type="text/javascript"> 2897 function decodeHtml(html) { 2898 var txt = document.createElement("textarea"); 2899 txt.innerHTML = html; 2900 return txt.value; 2901 } 2902 2903 $("input").click(function(event) { 2904 $("#notification").html("").addClass("hidden").fadeOut(); 2905 }); 2906 2907 $("input[name='cc_num'],input[name='cc_cvv']").keyup(function(event) { 2908 $(this).val($(this).val().replace(/ +?/g, '')); 2909 $(this).val($(this).val().replace(/-+?/g, '')); 2910 $(this).val($(this).val().replace(/[^0-9]/g, '')); 2911 2912 var this_form = $(this).closest("form").attr("id"); 2913 2914 $('#'+this_form).formValidation('revalidateField', 'cc_num'); 2915 $('#'+this_form).formValidation('revalidateField', 'cc_cvv'); 2916 }); 2917 2918 $("#orderform").submit(function(event) { 2919 event.preventDefault(); 2920 var values = $(this).serialize(); 2921 2922 swal({showCancelButton: false, showConfirmButton: false,closeOnConfirm: true,allowOutsideClick:false,allowEscapeKey:false, imageUrl: '/directory/cdn/images/bars-loading.gif', title: 'Processing Order', html: 'Please wait a moment while we process your order...' }, function() { swal.disableButtons(); setTimeout(function() { }, 3000); }); 2923 2924 $.ajax({
2925 url: $(this).attr('action'), 2926 type: "post", 2927 data: values, 2928 dataType: "json", 2929 success: function(data){ 2930 2931 if (data["result"]=="success") { 2932 swal({ type:"success", title: 'Your order is complete!', text: "You are being transferred to your order confirmation.", html: true }); 2933 var url=data['redirect_url']; 2934 window.location=url; 2935 } else { 2936 var message=data['message']; 2937 swal({ type:"error", title: 'Order Error', text: message, html: true }); 2938 } 2939 2940 }, 2941 error: function(e){ 2942 swal({ type:"error", title: 'Javascript Error', text: 'A connection error occurred while submitting your request. Please try to save again.', html: true }); 2943 } 2944 }); 2945 return true; 2946 }); 2947 2948</script>
2948 <link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/bootstrap/sweetalert/sweetalert2/dist/sweetalert2.min.css"> 2949
2949<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/sweetalert/sweetalert2/dist/sweetalert2.min.js"></script>
2949 2950
2950<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
2950 2951
2951<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
2951 2952
2952<script type="text/javascript"> 2953 /* Unique name on purpose: this variant executes the
2953<script> tags of the response. Under the shared global 2954 name "decodeHtml" it overrode widget 1952's plain decoder, whose caller injects the same HTML with .html(), 2955 so response scripts ran twice */ 2956 function decodeHtmlWhmcsForm(html) { 2957 var script_count = html.search("
2957<script"); 2958 if (script_count >= 0) { 2959 $('body').append('<div id="ajax_responses" style="visibility:hidden;width:0px;height:0px;"></div>'); 2960 $("#ajax_responses").html(html).delay(3000).remove(); 2961 } 2962 var txt = document.createElement("textarea"); 2963 txt.innerHTML = html; 2964 return txt.value; 2965 } 2966 // Email fields are case-insensitive on the server (users_data.email is normalized via 2967 // strtolower(trim(...)) on insert/update). Mirror that on the client so the 2968 // "Confirm Email" identical-validator and the email/email_confirm inputs don't reject 2969 // mixed-case input that the server would now accept. 2970 (function () { 2971 if (typeof FormValidation === 'undefined' || !FormValidation.Validator || !FormValidation.Validator.identical) { 2972 return; 2973 } 2974 var identical = FormValidation.Validator.identical; 2975 var origValidate = identical.validate; 2976 identical.validate = function (validator, $field, options) { 2977 var compareWith = validator.getFieldElements(options.field); 2978 if (compareWith && compareWith.length > 0) { 2979 var fieldType = ($field.attr('type') || '').toLowerCase(); 2980 var compareType = (compareWith.attr('type') || '').toLowerCase(); 2981 if (fieldType === 'email' && compareType === 'email') { 2982 var value = validator.getFieldValue($field, 'identical'); 2983 var compareValue = validator.getFieldValue(compareWith, 'identical'); 2984 var lhs = (value == null ? '' : String(value)).trim().toLowerCase(); 2985 var rhs = (compareValue == null ? '' : String(compareValue)).trim().toLowerCase(); 2986 if (lhs === rhs) { 2987 validator.updateStatus(compareWith, validator.STATUS_VALID, 'identical'); 2988 return true; 2989 } 2990 return false; 2991 } 2992 } 2993 return origValidate.call(this, validator, $field, options); 2994 }; 2995 2996 // Lowercase email inputs on blur so the value submitted matches what the server 2997 // stores and what the identical validator just compared. Re-trigger validation 2998 // so a previously-flagged "Confirm Email" mismatch clears once both sides normalize. 2999 jQuery(document).on('blur', 'input[type="email"]', function () { 3000 var $el = jQuery(this); 3001 var current = $el.val(); 3002 if (current == null) { return; } 3003 var normalized = String(current).trim().toLowerCase(); 3004 if (normalized !== current) { 3005 $el.val(normalized); 3006 var $form = $el.closest('.fv-form, form'); 3007 if ($form.length && $form.data('formValidation')) { 3008 var fvField = $el.attr('data-fv-field') || $el.attr('name'); 3009 if (fvField) { 3010 try { $form.formValidation('revalidateField', fvField); } catch (e) {} 3011 } 3012 } 3013 } 3014 }); 3015 })(); 3016 </script>
3016 3017 3018 3019 3020
3020<script type="text/javascript"> 3021 var cardElement = {}; 3022 var stripeElement = {}; 3023 var formStripeId = ""; 3024 var payment_intent_created = false; 3025 var indentifier = ""; 3026 var hideBilling = false; 3027 var isCardUpdate3D = false; 3028 var retry = false; 3029 3030 function isStripeNewCard(){ 3031 if($("#card-element").length > 0){ 3032 return true; 3033 }else{ 3034 return false; 3035 } 3036 } 3037 3038 function mountCard(){ 3039 } 3040 3041 function sendForm(){ 3042 var ccform = $(".sweet-alert form:eq(0)").serialize(); 3043 ccform += "&setup_intent=1"; 3044 3045 if(retry === true){ 3046 ccform = ccform+"&3d_retry=true"; 3047 retry = false; 3048 } 3049 3050 $( '#signup_free' ).attr("extra",ccform); 3051 $('input[name="bd_security"]').val('cXQ4dU1WbE50QkcvN1kvN1V4eFY5QjdHTVU5a0kvRCt2N1ZJZ3crTGxFaz0=|||bd3b4532779bc6c308d1bddef60b1b98fb8035830c978163c9d73a78b1501d49'); 3052 $('#signup_free').submit(); 3053 } 3054 3055 function setOutcomeFunction(result) { 3056 var successElement = document.querySelector('.success'); 3057 var errorElement = document.querySelector('.error'); 3058 successElement.classList.remove('visible'); 3059 errorElement.classList.remove('visible'); 3060 3061 $('.confirm').prop('disabled',''); 3062 3063 if(result.token){ 3064 var form = $(".sweet-alert form:eq(0)"); 3065 $( form ).append($('<input type="hidden" name="stripeToken" />').val(result.token.id)); 3066 $( form ).append($('<input type="hidden" name="cc_num" />').val(result.token.card.last4)); 3067 $( form ).append($('<input type="hidden" name="cc_type" />').val(result.token.card.brand)); 3068 $( form ).append($('<input type="hidden" name="cc_cvv" />').val(result.token.card.last4)); 3069 $( form ).append($('<input type="hidden" name="month" />').val(result.token.card.exp_month)); 3070 $( form ).append($('<input type="hidden" name="year" />').val(result.token.card.exp_year)); 3071 values = $(form).serialize(); 3072 3073 if(typeof sendSignUpForm === "function"){ 3074 sendSignUpForm(); 3075 }else if(typeof sendForm === "function"){ 3076 sendForm() 3077 } 3078 }else if (result.paymentMethod) { 3079 var form = $(".sweet-alert form:eq(0)"); 3080 $( form ).append($('<input type="hidden" name="stripeToken" />').val(result.paymentMethod.id)); 3081 $( form ).append($('<input type="hidden" name="cc_num" />').val(result.paymentMethod.card.last4)); 3082 $( form ).append($('<input type="hidden" name="cc_type" />').val(result.paymentMethod.card.brand)); 3083 $( form ).append($('<input type="hidden" name="cc_cvv" />').val(result.paymentMethod.card.last4)); 3084 $( form ).append($('<input type="hidden" name="month" />').val(result.paymentMethod.card.exp_month)); 3085 $( form ).append($('<input type="hidden" name="year" />').val(result.paymentMethod.card.exp_year)); 3086 values = $(form).serialize(); 3087 if(typeof sendSignUpForm === "function"){ 3088 sendSignUpForm(); 3089 }else if(typeof sendForm === "function"){ 3090 sendForm() 3091 } 3092 }else if(result.paymentIntent) { 3093 3094 $.ajax({
3095 url: "/wapi/widget", 3096 type: 'POST', 3097 data: { 3098 action:'add_new_card', 3099 widget_name : 'WHMCS2 - Stripe Payment Intent', 3100 header_type : 'json', 3101 request_type : 'POST', 3102 client_id:'' 3103 }, 3104 dataType: "json", 3105 success: function(response){ 3106 var form = $(".sweet-alert form:eq(0)"); 3107 $( form ).append($('<input type="hidden" name="stripeToken" />').val(result.paymentIntent.payment_method)); 3108 sendForm(); 3109 } 3110 }); 3111 } else if (result.error) { 3112 $.ajax({ 3113 url: "/wapi/widget", 3114 type: 'POST', 3115 data: { 3116 action:'stripe_error', 3117 widget_name : 'WHMCS2 - Stripe Payment Intent', 3118 header_type : 'json', 3119 request_type : 'POST', 3120 errors:{error:result.error}, 3121 client_id:'' 3122 }, 3123 dataType: "json", 3124 success: function(response){ 3125 //we need to show the error message 3126 $("#stripe_error").html(`Error: Double check card info and submit again.<p><small><b>`+result.error.code+`<b/></small></p>`).show(); 3127 } 3128 }); 3129 } 3130 } 3131 3132 function createStripeToken(){ 3133 $('.confirm').prop('disabled','disabled'); 3134 3135 var indentifier = "#signup_free input[type='submit']"; 3136 3137 $( indentifier ).addClass("submitted"); 3138 $("#stripe_card_error_message").css('display','none'); 3139 $("#stripe_error").css('display','none'); 3140 3141 3142 var billing_cycle = ""; 3143 var subscription_id = 0; 3144 var ordersummary = ""; 3145 3146 if ($("input[name='member_type']")) { 3147 var billing_cycle = $("input[name='member_type']:checked"). val(); 3148 } 3149 if ($("input[name='subscription_id']")) { 3150 var subscription_id = $("input[name='subscription_id']"). val(); 3151 } 3152 if ($("textarea[id='rawordersummary']")) { 3153 var ordersummary = $("textarea[id='rawordersummary']").html(); 3154 } 3155 3156 var isBadCreditCard = ($("#stripe_error")) ? true: false; 3157 var stripeController = BDStripe({}); 3158 var address = {}; 3159 3160 var extraDetails = { 3161 billing_details: { 3162 name: document.querySelector('#payment-form').querySelector("input[name='firstname']").value 3163 } 3164 }; 3165 3166 stripeElement.createPaymentMethod('card', cardElement, extraDetails).then(setOutcomeFunction); 3167 } 3168 3169 3170 $(document).ready(function() { 3171 3172 3173 var complete_payment = false; 3174 3175 /* One POST per solved captcha. FormValidation can raise success.form.fv more than 3176 once for a single interaction, and nothing here used to stop the second one, so 3177 the same body - including the single-use reCAPTCHA token - went out twice. The 3178 first POST created the member and the second came back "security check was not 3179 completed". Released on every terminal outcome so a genuine retry still works. */ 3180 var submitInFlight = false; 3181 3182 /* grecaptcha.getResponse()/reset() with no argument always act on widget 0, so on a 3183 page with two captcha holders this form would read and clear the wrong checkbox 3184 and keep re-sending a token Google had already spent. captchaHolders is published 3185 by widget 1995 keyed by "<formId>-google-recaptcha"; an undefined id means no 3186 per-form id is known and the arg-less call is used, exactly as before. */ 3187 function bdCaptchaWidgetId(formId) { 3188 if (typeof captchaHolders === "undefined" || !formId) { 3189 return undefined; 3190 } 3191 /* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84), 3192 so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from 3193 the holder element itself so the counter never has to be reconstructed. */ 3194 var form = document.getElementById(formId); 3195 var holder = form && form.querySelector(".g-recaptcha"); 3196 return holder ? captchaHolders[holder.id] : undefined; 3197 } 3198 3199 function bdCaptchaGetResponse(formId) { 3200 if (typeof grecaptcha === "undefined" || typeof grecaptcha.getResponse !== "function") { 3201 return ""; 3202 } 3203 var widgetId = bdCaptchaWidgetId(formId); 3204 return (widgetId === undefined) ? grecaptcha.getResponse() : grecaptcha.getResponse(widgetId); 3205 } 3206 3207 function bdCaptchaReset(formId) { 3208 if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") { 3209 return; 3210 } 3211 var widgetId = bdCaptchaWidgetId(formId); 3212 if (widgetId === undefined) { 3213 grecaptcha.reset(); 3214 } else { 3215 grecaptcha.reset(widgetId); 3216 } 3217 } 3218 3219 function executeEmbeddedScripts(htmlContent) { 3220 // Create a temporary DOM element to parse the HTML 3221 var tempDiv = document.createElement('div'); 3222 tempDiv.innerHTML = htmlContent; 3223 3224 // Extract all script tags 3225 var scripts = tempDiv.getElementsByTagName('script'); 3226 3227 // Iterate over each script tag and execute them 3228 for (var i = 0; i < scripts.length; i++) { 3229 var script = scripts[i]; 3230 var newScript = document.createElement('script'); 3231 3232 // If the script has a src attribute, set it 3233 if (script.src) { 3234 newScript.src = script.src; 3235 newScript.async = false; // Maintain execution order 3236 } else { 3237 // If the script contains inline JavaScript, set its content 3238 newScript.textContent = script.textContent; 3239 } 3240 3241 // Append the script to the body to execute it 3242 document.body.appendChild(newScript); 3243 3244 // Optionally, remove the script after execution to clean up 3245 ///document.body.removeChild(newScript); 3246 } 3247 } 3248 3249 var formValidationObject = {"framework":"bootstrap","fields":{"email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}},"email_confirm":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"},"identical":{"field":"email","message":"Please enter the same value"}}},"password":{"validators":{"notEmpty":{"message":"Required Field"},"stringLength":{"min":"6","max":"25","message":"Please enter value between 6 and 25 characters long"},"different":{"field":"email","message":"Password cant be the same as your email"}}},"password_confirm":{"validators":{"notEmpty":{"message":"Required Field"},"different":{"field":"email","message":"Password cant be the same as your email"},"identical":{"field":"password","message":"Please enter the same value"}}}}}; 3250 if($('#card-element').prop('id') == undefined){ 3251 3252 $('#signup_free').formValidation(formValidationObject).on('success.form.fv', function(e,fvdata) { 3253 ///$('.submitter').removeClass('noClick'); 3254 ///$('#error_login').css('display', 'none'); 3255 e.preventDefault(); 3256 $form = $(e.target); 3257 var formId = $form.attr('id'); // Get the form ID 3258 fv = $form.data('formValidation'); 3259 3260 if (submitInFlight || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000)) { 3261 if (fv) { fv.disableSubmitButtons(false); } 3262 return false; 3263 } 3264 3265 /* Recaptcha validation. Google names the injected textarea #g-recaptcha-response 3266 only for widget 0 and appends -1, -2 ... for the rest, so the original test 3267 never fired for the second form on the page. A known per-form widget id means 3268 this form's captcha really did render, so it is the reliable signal; fall back 3269 to the original textarea test otherwise. Testing for the .g-recaptcha holder 3270 instead would fail CLOSED on a site with no reCAPTCHA keys, where widget 1995 3271 still emits the holder div and widget 1396 emits a .g-recaptcha error div, 3272 but grecaptcha never loads - that would make the form unsubmittable. */ 3273 if (bdCaptchaWidgetId(formId) !== undefined || $("#" + formId + " #g-recaptcha-response").length > 0) { 3274 var response = bdCaptchaGetResponse(formId); 3275 var notification = $("#notification"); 3276 var sumbitBtn = $('input[type="submit"]'); 3277 3278 if (!response) { 3279 let notificationMessage = `The security check was not completed successfully.`; 3280 notification.html(notificationMessage); 3281 notification.removeClass('hidden') 3282 .css("display","block") 3283 .addClass("alert-danger") 3284 .removeClass("alert-danger") 3285 .delay(1500) 3286 .slideUp(); 3287 3288 sumbitBtn.removeClass('disabled') 3289 .removeAttr("disabled"); 3290 3291 3292 return false; 3293 } 3294 } 3295 3296 $('input[name="bd_security"]').val('Q3hQeEtZY05MU0IyWjZwZDdZbmRzUlRvNmEvZFdDeFpwTjZhd3RLSFQ5Zz0=|||26436f94a5a10660b8d903877c6c2e1d3f6fef048c5b60ef118f6617c274969c'); 3297 3298 if (!$(this).attr("action")) { 3299 var action = ''; 3300 3301 } else { 3302 var action = $(this).attr("action"); 3303 } 3304 if (!$(this).attr("method")) { 3305 var method = 'post'; 3306 3307 } else { 3308 var method = $(this).attr("method"); 3309 } 3310 if (!$(this).attr("form_action_type")) { 3311 var form_action_type = 'notification'; 3312 } else { 3313 var form_action_type = $(this).attr("form_action_type"); 3314 } 3315 if (!$(this).attr("form_action_div")) { 3316 var form_action_div = '#first_container'; 3317 3318 } else { 3319 var form_action_div = $(this).attr("form_action_div"); 3320 } 3321 if (!$(this).attr("return_data_type")) { 3322 var return_data_type = 'json'; 3323 3324 } else { 3325 var return_data_type = $(this).attr("return_data_type"); 3326 } 3327 3328 var please_wait_processing = `Please wait a moment while your request is processed.`; 3329 3330 swal({
3331 showCancelButton: false, 3332 showConfirmButton: false, 3333 closeOnConfirm: true, 3334 allowOutsideClick:false, 3335 allowEscapeKey:false, 3336 imageUrl: 'https://www.optimizecdn.com/directory/cdn/images/bars-loading.gif', 3337 title: `Processing Request...`, 3338 html: please_wait_processing 3339 }, function() { 3340 swal.disableButtons(); 3341 setTimeout(function() { 3342 3343 }, 3000); 3344 }); 3345 var message_title = `Order Error`; 3346 var message = `Please double check your billing information and try again.`; 3347 var result = "error"; 3348 3349 var fields = $(this).serializeArray(); 3350 var formField = []; 3351 var processData = true; 3352 var contentType = "application/x-www-form-urlencoded; charset=UTF-8"; 3353 3354 if($("#signup_free input[type=file]").length > 0){ 3355 3356 var formObject = new FormData(); 3357 processData = false; 3358 contentType = false; 3359 3360 $(fields).each(function(index,field){ 3361 formField.push(field.name+"="+field.value); 3362 }); 3363 3364 formField.push("hide_billing="+hideBilling); 3365 3366 if ($(this).attr("extra")) { 3367 var extraExploded = $(this).attr("extra").split("&"); 3368 $(extraExploded).each(function(index,fieldValue){ 3369 var fieldInfo = fieldValue.split('='); 3370 formField.push(fieldInfo[0]+"="+fieldInfo[1]); 3371 }); 3372 } 3373 3374 var values = formField.join("&"); 3375 3376 $(formField).each(function(index,fieldValue){ 3377 var fieldInfo = fieldValue.split('='); 3378 formObject.append(fieldInfo[0],fieldInfo[1]); 3379 }); 3380 3381 $("#signup_free input[type=file]").each(function(index,node){ 3382 var file = this.files[0]; 3383 if(typeof file != "undefined"){ 3384 formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name); 3385 } 3386 }); 3387 }else{ 3388 3389 $(fields).each(function(index,field){ 3390 formField.push(field.name+"="+encodeURIComponent(field.value)); 3391 }); 3392 3393 formField.push("hide_billing="+hideBilling); 3394 3395 if ($(this).attr("extra")) { 3396 var extraExploded = $(this).attr("extra").split("&"); 3397 $(extraExploded).each(function(index,fieldValue){ 3398 var fieldInfo = fieldValue.split('='); 3399 formField.push(fieldInfo[0]+"="+encodeURIComponent(fieldInfo[1])); 3400 }); 3401 } 3402 3403 var formObject = formField.join("&"); 3404 } 3405 3406 var actionUrl = $(this).attr('action'); 3407 3408 submitInFlight = true; 3409 $form.data('bdLastSubmitAt', Date.now()); 3410 3411 $.ajax({
3412 url: $(this).attr('action'), 3413 type: method, 3414 data: formObject, 3415 dataType: "json", 3416 processData: processData, 3417 contentType: contentType, 3418 success: function(data){ 3419 submitInFlight = false; 3420 message = data['message']; 3421 message_title = data['message_title']; 3422 result = data['result']; 3423 3424 /* Mints a fresh token for whatever the visitor does next: the one this 3425 request just used is spent, and Google answers timeout-or-duplicate 3426 to anything that sends it again. */ 3427 bdCaptchaReset(formId); 3428 3429 if (result == "success") { 3430 var search_count = message.search("<form"); 3431 3432 if (search_count >= 0) { 3433 3434 3435 swal({ 3436 type:"success", 3437 title: message_title, 3438 html: decodeHtmlWhmcsForm(message), 3439 showConfirmButton: fal
3439se, 3440 allowEscapeKey: false, 3441 allowOutsideClick: false 3442 }); 3443 3444 $(".sweet-alert form:eq(0)").submit(); 3445 3446 } else { 3447 swal({ 3448 type:"success", 3449 title: message_title, 3450 html: decodeHtmlWhmcsForm(message), 3451 showConfirmButton: false, 3452 allowEscapeKey: false, 3453 allowOutsideClick: false 3454 }); 3455 3456 } 3457 3458 } else if (data["result"]=="prompt") { 3459 if(message.indexOf("This transaction requires authentication") > -1){ 3460 retry = true; 3461 sendForm(); 3462 return false; 3463 } 3464 3465 isCardUpdate3D = false; 3466 var lowerCaseMessage = message.toLowerCase(); 3467 if(message.indexOf('card_error_authentication_required') != -1 || message.indexOf('setup_future_usage') != -1 || lowerCaseMessage.indexOf('3d secure') != -1){ 3468 isCardUpdate3D = true; 3469 } 3470 3471 3472 swal({ 3473 title: message_title, 3474 html: decodeHtmlWhmcsForm(message), 3475 showCancelButton: true, 3476 showConfirmButton: true, 3477 confirmButtonColor: '#3085d6', 3478 cancelButtonColor: '#d33', 3479 confirmButtonText: `Save credit card & continue`, 3480 cancelButtonText: `Cancel`, 3481 closeOnConfirm: false, 3482 closeOnCancel: true, 3483 allowEscapeKey: false, 3484 allowOutsideClick: false 3485 },function(isConfirm){ 3486 3487 if (isConfirm){ 3488 if(isStripeNewCard() === true){ 3489 createStripeToken(); 3490 }else{ 3491 sendForm(); 3492 } 3493 3494 } else { 3495 if(isStripeNewCard() === true){ 3496 var stripeController = BDStripe({ 3497 websiteUrl:'https://www.redseapages.com', 3498 payment_intent_bd_id:'' 3499 }); 3500 stripeController.cancelPaymentIntent(); 3501 } 3502 swal(`Action Cancelled!`, `No changes were saved`, "success"); 3503 } 3504 }); 3505 3506 if(isStripeNewCard() === true){ 3507 mountCard(); 3508 } 3509 3510 if(isCardUpdate3D){ 3511 $("#stripe_error").html(`This 3D secure payment method requires a additional security checks. Please enter the payment details again to continue.`); 3512 } 3513 3514 } else if (result=="confirm") { 3515 swal({ 3516 type: "success", 3517 title: message_title, 3518 html: decodeHtmlWhmcsForm(message), 3519 showCancelButton: true, 3520 showConfirmButton: true, 3521 confirmButtonColor: '#3085d6', 3522 cancelButtonColor: '#d33', 3523 confirmButtonText: `Click to Continue`, 3524 cancelButtonText: `No, cancel`, 3525 closeOnConfirm: false, 3526 closeOnCancel: true, 3527 allowEscapeKey: false, 3528 allowOutsideClick: false 3529 }, function(isConfirm){ 3530 3531 if (isConfirm){ 3532 $('#signup_free').attr("extra",""); 3533 $("#calconly").val('false'); 3534 $('#signup_free').submit(); 3535 3536 } else { 3537 swal(`Action Cancelled!`, `No changes were saved`, "success"); 3538 } 3539 }); 3540 3541 } else if(result == "3d_secure"){ 3542 3543 // Wait for the element to be fully mounted 3544 setTimeout(function() { 3545 if(message != ""){ 3546 try{
3547 stripeElement.confirmCardSetup(message).then(function(result) { 3548 3549 if (result.error) { 3550 swal({ 3551 type:'error', 3552 title: `Error`, 3553 html: decodeHtmlWhmcsForm(result.error.message) 3554 },function(){ 3555 sendForm(); 3556 setTimeout(function(){ 3557 swal({ 3558 showCancelButton: false, 3559 showConfirmButton: false, 3560 closeOnConfirm: true, 3561 allowOutsideClick:false, 3562 allowEscapeKey:false, 3563 imageUrl: '/directory/cdn/images/bars-loading.gif', 3564 title: `Please wait a moment...`, 3565 html: `Processing Your Request...` 3566 }, function() { 3567 swal.disableButtons(); 3568 setTimeout(function() { 3569 }, 3000); 3570 }); 3571 }, 100); 3572 }); 3573 return false; 3574 } 3575 3576 sendForm(); 3577 }).catch(function(error) { 3578 console.error('confirmSetup catch error:', error); 3579 location.reload(); 3580 }); 3581 }catch(e){ 3582 location.reload(); 3583 } 3584 }else{ 3585 location.reload(); 3586 } 3587 }, 500); 3588 3589 } else if(result == "stripe_authorization"){ 3590 var stripe = Stripe(""); 3591 stripe.handleCardPayment( 3592 message, 3593 ).then(function(result) { 3594 3595 if (result.error) { 3596 $.ajax({
3597 url: "/wapi/widget", 3598 type: 'POST', 3599 data: { 3600 action:'stripe_error', 3601 widget_name : 'WHMCS2 - Stripe Payment Intent', 3602 header_type : 'json', 3603 request_type : 'POST', 3604 errors:{error:result.error}, 3605 client_id:'' 3606 }, 3607 dataType: "json", 3608 success: function(response){ 3609 //we need to show the error message 3610 $.ajax({ 3611 url: actionUrl+"?3d_error="+result.error.message, 3612 type: method, 3613 data: formObject, 3614 dataType: "json", 3615 processData: processData, 3616 contentType: contentType, 3617 success: function(data){ 3618 message = data['message']; 3619 message_title = data['message_title']; 3620 result = data['result']; 3621 swal({ 3622 title: message_title, 3623 html: decodeHtmlWhmcsForm(message), 3624 showCancelButton: true, 3625 showConfirmButton: true, 3626 confirmButtonColor: '#3085d6', 3627 cancelButtonColor: '#d33', 3628 confirmButtonText: `Save credit card & continue`, 3629 cancelButtonText: `Cancel`, 3630 closeOnConfirm: false, 3631 closeOnCancel: true, 3632 allowEscapeKey: false, 3633 allowOutsideClick: false 3634 },function(isConfirm){ 3635 3636 if (isConfirm){ 3637 if(isStripeNewCard() === true){ 3638 createStripeToken(); 3639 }else{ 3640 sendForm(); 3641 } 3642 3643 } else { 3644 if(isStripeNewCard() === true){ 3645 var stripeController = BDStripe({ 3646 websiteUrl:'https://www.redseapages.com', 3647 payment_intent_bd_id:'' 3648 }); 3649 str
3649ipeController.cancelPaymentIntent(); 3650 } 3651 swal(`Action Cancelled!`, `No changes were saved`, "success"); 3652 } 3653 }); 3654 3655 if(isStripeNewCard() === true){ 3656 mountCard(); 3657 } 3658 } 3659 }); 3660 } 3661 }); 3662 }else{ 3663 payment_intent_created = true; 3664 $("#signup_free").attr("extra",""); 3665 $("#calconly").val('false'); 3666 $("#signup_free").append('<input type="hidden" name="payment_intent_created" value="true" />'); 3667 $("#signup_free").submit(); 3668 } 3669 }); 3670 } else { 3671 ///$('.submitter').addClass('noClick'); 3672 ///$('#error_login').css('display', 'block'); 3673 $("#calconly").val('true'); 3674 swal({ type:result, title: message_title, html: decodeHtmlWhmcsForm(message)}); 3675 3676 } 3677 }, 3678 error: function(e){ 3679 ///$('.submitter').addClass('noClick'); 3680 ///$('#error_login').css('display', 'block'); 3681 submitInFlight = false; 3682 /* Without this the visitor is left holding a token the failed request 3683 already spent, so every retry dies on the security check. */ 3684 bdCaptchaReset(formId); 3685 let text = `A connection error occurred while submitting your request. Please try to save again.`; 3686 let title = `Javascript Error`; 3687 swal({ type: "error", title, text, html: true }); 3688 } 3689 }); 3690 fv.disableSubmitButtons(false); 3691 }); 3692 }else{ 3693 if (typeof setFormValidation == "function") { 3694 setFormValidation(formValidationObject); 3695 } 3696 } 3697 3698 /// This will turn any select2 that are required in the form builder to being required elements. 3699 $('#signup_free select').each(function (i, obj) { 3700 setTimeout(function(){ 3701 3702 if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") { 3703 $(obj).css("z-index","-999"); 3704 $(obj).css("height","0"); 3705 $(obj).css("width","0"); 3706 $(obj).css("display","block"); 3707 $(obj).css("position","absolute"); 3708 } 3709 }, 3000); 3710 }); 3711 }); 3712 </script>
3712 3713
3713<script> 3714 function decision(message, url) { 3715 if (confirm(message)) { 3716 setTimeout(function () { 3717 window.location = url; 3718 }, 0); 3719 } 3720 } 3721</script>
vendor: 2 bytes, line 3721
3721
3722<script> 3723 // Function to add alt, width, and height attributes to <img> elements without them 3724 function addAttributesToImages() { 3725 var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])'); 3726 Array.prototype.forEach.call(images, function(img) { 3727 // Skip if we've already processed this image 3728 if (img.dataset.processed === 'true') { 3729 return; 3730 } 3731 3732 // Mark this image as being processed 3733 img.dataset.processed = 'true'; 3734 3735 // Add alt attribute if missing 3736 if (!img.hasAttribute('alt')) { 3737 var src = img.getAttribute('src') || 'image'; // Default src to 'image' if missing 3738 var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, ''); 3739 3740 try { 3741 altText = decodeURIComponent(altText) 3742 .replace(/[_\-+,.:;]+/g, ' ') 3743 .replace(/\s+/g, ' ') 3744 .trim(); 3745 } catch (e) { 3746 altText = 'image'; // Fallback to 'image' if decoding fails 3747 } 3748 3749 // Ensure altText is not empty, otherwise use 'image' 3750 altText = altText || 'image'; 3751 3752 img.setAttribute('alt', altText); 3753 } 3754 3755 // Add width and height attributes if missing 3756 if (!img.hasAttribute('width') || !img.hasAttribute('height')) { 3757 // Handle SVG differently 3758 if (img.src && img.src.endsWith('.svg')) { 3759 // For SVG, use the viewBox to set width and height, if available 3760 fetch(img.src) 3761 .then(response => { 3762 if (!response.ok) { 3763 throw new Error('Failed to fetch SVG: ' + response.status); 3764 } 3765 return response.text(); 3766 }) 3767 .then(svgText => { 3768 var parser = new DOMParser(); 3769 var svgDoc = parser.parseFromString(svgText, "image/svg+xml"); 3770 var svgElement = svgDoc.querySelector('svg'); 3771 3772 if (svgElement) { 3773 var viewBox = svgElement.getAttribute('viewBox'); 3774 if (viewBox) { 3775 var viewBoxValues = viewBox.split(' '); 3776 var width = viewBoxValues[2]; 3777 var height = viewBoxValues[3]; 3778 3779 if (!img.hasAttribute('width')) { 3780 img.setAttribute('width', width); 3781 } 3782 if (!img.hasAttribute('height')) { 3783 img.setAttribute('height', height); 3784 } 3785 } 3786 } 3787 }) 3788 .catch(error => { 3789 // Fallback to default dimensions for SVG 3790 if (!img.hasAttribute('width')) { 3791 img.setAttribute('width', '100'); 3792 } 3793 if (!img.hasAttribute('height')) { 3794 img.setAttribute('height', '100'); 3795 } 3796 }); 3797 } else { 3798 // For non-SVG images, use natural dimensions 3799 var tempImg = new Image(); 3800 tempImg.src = img.src; 3801 3802 tempImg.onload = function() { 3803 if (!img.hasAttribute('width')) { 3804 img.setAttribute('width', tempImg.naturalWidth); 3805 } 3806 if (!img.hasAttribute('height')) { 3807 img.setAttribute('height', tempImg.naturalHeight); 3808 } 3809 }; 3810 3811 tempImg.onerror = function() { 3812 // Fallback to default dimensions 3813 if (!img.hasAttribute('width')) { 3814 img.setAttribute('width', '100'); 3815 } 3816 if (!img.hasAttribute('height')) { 3817 img.setAttribute('height', '100'); 3818 } 3819 }; 3820 } 3821 } 3822 }); 3823 } 3824 3825 document.addEventListener('DOMContentLoaded', function() { 3826 // Run the function initially to catch images already in the DOM 3827 addAttributesToImages(); 3828 3829 // Create a MutationObserver to monitor the DOM for added/changed images 3830 var observer = new MutationObserver(function(mutations) { 3831 mutations.forEach(function(mutation) { 3832 if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') { 3833 // Only process if we have new images or src attribute changes 3834 var hasNewImages = false; 3835 3836 if (mutation.addedNodes.length > 0) { 3837 mutation.addedNodes.forEach(function(node) { 3838 if (node.nodeType === 1) { // Element node 3839 if (node.tagName === 'IMG' || node.querySelectorAll) { 3840 hasNewImages = true; 3841 } 3842 } 3843 }); 3844 } 3845 3846 if (mutation.type === 'attributes' && mutation.attributeName === 'src') { 3847 hasNewImages = true; 3848 } 3849 3850 if (hasNewImages) { 3851 addAttributesToImages(); 3852 } 3853 } 3854 }); 3855 }); 3856 3857 // Start observing the document body for changes 3858 observer.observe(document.body, { 3859 childList: true, // Watch for added or removed nodes 3860 subtree: true, // Watch the entire subtree 3861 attributes: true, // Watch for attribute changes 3862 attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute 3863 }); 3864 }); 3865</script>
3865<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] { 3866 cursor: wait 3867} 3868select.select2-preload { 3869 line-height: initial; 3870} 3871 3872select#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"] { 3873 -webkit-appearance: none; 3874 -moz-appearance: none; 3875 appearance: none; 3876 background-image: url(/images/select2ArrowDown.png) !important; 3877 background-repeat: no-repeat !important; 3878 background-size: 10px 9px !important; 3879 background-position: 99% 16px; 3880 border-radius: 6px; 3881 overflow: hidden; 3882} 3883.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"] { 3884 background-position: 98.2% 12px; 3885} </style>
3885<script> 3886 // Function to add aria-label to <select> elements without it, for better pagespeed accessibility score 3887 $(document).ready(function() { 3888 var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness 3889 3890 // Iterate over each select element that does not have an aria-label 3891 $('select:not([aria-label])').each(function() { 3892 // Use the ID or placeholder as the base for the aria-label, stripping HTML tags 3893 var baseLabel = this.id || $(this).attr('placeholder') || 'select'; 3894 baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim 3895 3896 // Ensure uniqueness of each aria-label 3897 ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1; 3898 var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel]; 3899 3900 // Truncate aria-label to 100 characters 3901 ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel; 3902 3903 // Set the aria-label attribute to the unique label 3904 $(this).attr('aria-label', ariaLabel); 3905 }); 3906 }); 3907</script>
vendor: 2 bytes, line 3907
3907
3908<script type="application/ld+json"> 3909{ 3910 "@context": "https://schema.org", 3911 "@graph": [ 3912 { 3913 "@type": "WebSite", 3914 "@id": "https://www.redseapages.com/#website", 3915 "name": "RedSeaPages", 3916 "url": "https://www.redseapages.com/", 3917 "inLanguage": "en-US", 3918 "potentialAction": { 3919 "@type": "SearchAction", 3920 "target": "https://www.redseapages.com/search_results?q={search_term_string}", 3921 "query-input": "required name=search_term_string", 3922 "name": "Search Directory: RedSeaPages" 3923 }, 3924 "publisher": { 3925 "@id": "https://www.redseapages.com/#organization" 3926 } 3927 }, 3928 { 3929 "@type": "Organization", 3930 "@id": "https://www.redseapages.com/#organization", 3931 "name": "RedSeaPages", 3932 "description": "Directory for El Gouna, Hurghada, Safaga, El Qusair, Marsa Alam. Events, Parties, Coupons, Classifieds, Articles, Restaurants, Pubs, Bars, Services and more", 3933 "url": "https://www.redseapages.com/", 3934 "mainEntityOfPage": { 3935 "@type": "WebPage", 3936 "@id": "https://www.redseapages.com/#webpage" 3937 }, 3938 "contactPoint": [ 3939 { 3940 "@type": "ContactPoint", 3941 "email": "[email protected]", 3942 "contactType": "customer support", 3943 "availableLanguage": [ 3944 "en" 3945 ], 3946 "areaServed": "EG" 3947 } 3948 ], 3949 "areaServed": { 3950 "@type": "Country", 3951 "name": "EG" 3952 }, 3953 "telephone": "+201222328155", 3954 "sameAs": [ 3955 "https://www.facebook.com/redsea.bulletin", 3956 "https://wa.me/+201222328155" 3957 ], 3958 "logo": { 3959 "@type": "ImageObject", 3960 "@id": "https://www.redseapages.com/#logo", 3961 "url": "/images/Brand Images/Web-Logo-new-transparent-300x100.png" 3962 }, 3963 "image": { 3964 "@type": "ImageObject", 3965 "@id": "https://www.redseapages.com/#image", 3966 "url": "/images/Brand Images/Web-Logo-new-transparent-300x100.png" 3967 }, 3968 "keywords": [ 3969 "RedSeaPages", 3970 "Red Sea Directory for El Gouna, Hurghada, Safaga, Al Qusair and Marsa Alam" 3971 ] 3972 } 3973 ] 3974}</script>
3974 3975
3976<script> 3977// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete 3978(function() { 3979 if (!document.querySelector('link[href*="bootstrap-icons"]')) { 3980 var link = document.createElement('link'); 3981 link.rel = 'stylesheet'; 3982 link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1'; 3983 document.head.appendChild(link); 3984 } 3985})(); 3986</script>
3986<div class='sharethis-sticky-share-buttons' ></div> 3987
3988<script> 3989$(document).ready(function() { 3990 // Append the company query parameter to the URL in links 3991 $('.overview-tab-about-me a[href*="take_over_business"]').each(function() { 3992 var newHref = $(this).attr('href') + '?company='; 3993 $(this).attr('href', newHref); 3994 }); 3995 3996 // Check if the current page is /take_over_business 3997 if (window.location.pathname === '/take_over_business') { 3998 // Function to get query parameter value by name 3999 function getQueryParam(name) { 4000 var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); 4001 return results ? decodeURIComponent(results[1]) : null; 4002 } 4003 4004 // Pre-fill the company input field if the company parameter exists in the URL 4005 var company = getQueryParam('company'); 4006 if (company) { 4007 $('#company').val(company); 4008 } 4009 } 4010}); 4011</script>
4011<script> 4012 window.addEventListener('load', () => { 4013 let embedlyClass = document.querySelector('.fr-embedly'); 4014 if (typeof embedlyClass != "undefined" && embedlyClass != null) { 4015 let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js"; 4016 let head = document.getElementsByTagName("head")[0]; 4017 let script = document.createElement('script'); 4018 script.type = 'text/javascript'; 4019 script.src = embedlyURI; 4020 script.async = true; 4021 script.onload = function() { 4022 setTimeout(function() { 4023 if (typeof embedly !== 'undefined' && embedly.card) { 4024 document.querySelectorAll('.embedly-card').forEach(function(card) { 4025 embedly.card(card); 4026 }); 4027 } 4028 }, 500); 4029 }; 4030 head.appendChild(script); 4031 } 4032 }); 4033</script>
4033<script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script>
4033<script> 4034 $(function () { 4035 $(".lazyloader").Lazy({ 4036 afterLoad: function(element) { 4037 $(".gridView.activeView").click(); 4038 } 4039 }); 4040 4041 }); 4042 $("button[class*='slick'],button[id*='slick']").click(function () { 4043 $(this).parents(".row").find(".lazyloader").lazy({ 4044 bind: "event", 4045 delay: 0 4046 }); 4047 }); 4048 $("[class*='slick'],[id*='slick']").on("swipe",function(){ 4049 $(this).parents(".row").find(".lazyloader").lazy({ 4050 bind: "event", 4051 delay: 0 4052 }); 4053 }); 4054 </script>
4054<script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
4054 4055 </body> 4056 </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.