https://helpsellmyfsbo.com/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author
Fetched just now. Pages with a query string or a login look are never saved.
Compare, Screenshot and Explain work on saved pages only.
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, user-scalable=1">
<!-- Preconnect -->
<link rel="preconnect" href="https://www.optimizecdn.com" crossorigin>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="apple-touch-icon" href="/images/31947560_976398835868905_4181488960050036736_n.png">
<link rel="icon" type="image/png" href="/images/31947560_976398835868905_4181488960050036736_n.png">
<!-- Site Meta Data -->
<title>VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority - For Sale By Owner Blog Article By </title>
<meta name="description" content="Blog Article posted by on HELP Sell My FSBO.">
<meta name="keywords" content="Blog Article,For Sale By Owner,FSBO,FSBOs, ">
<meta name="robots" content="index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large">
<!-- Canonical URL -->
<link rel="canonical" href="https://helpsellmyfsbo.com/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author">
<!-- Social Media Meta Data -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://helpsellmyfsbo.com/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author">
<meta property="og:site_name" content="HELP Sell My FSBO">
<meta property="og:title" content="VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority">
<meta property="og:description" content="Blog Article posted by on HELP Sell My FSBO.">
<meta property="og:image" content="https://helpsellmyfsbo.com/uploads/news-pictures/69190--blog-post-image-20241127055101.webp">
<script>
var siteInfoSpan=document.createElement('span');
siteInfoSpan.style.cssText='position:absolute;color:transparent;width:100%;z-index:-1;height:50px;top:0;';
siteInfoSpan.textContent='www.helpsellmyfsbo.com - HELP Sell My FSBO';
document.documentElement.appendChild(siteInfoSpan);
</script>
<!-- Preload -->
<link rel="preload" as="style" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" fetchpriority="high" crossorigin>
<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap" fetchpriority="high">
<link rel="preload" href="/uploads/news-pictures/69190--blog-post-image-20241127055101.webp" as="image" fetchpriority="high">
<!-- Non-Critical Stylesheet - Render Before Critical Styles -->
<link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css?v=3.3.0" crossorigin>
<noscript>
<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/non-critical-styles.pkgd.min.css" crossorigin>
</noscript>
<!-- Critical Stylesheet -->
<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/css/critical-styles.pkgd.min.css?v=09.05.26" crossorigin>
<!-- Google Fonts Stylesheet -->
<link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap">
<noscript>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800,900|Ubuntu:300,400,600,700,800,900&display=swap">
</noscript>
<!-- FontAwesome Stylesheet -->
<link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
<noscript>
<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/font-awesome/css/font-awesome.min.css" crossorigin>
</noscript>
<!-- Bootstrap Icons Stylesheet -->
<link rel="stylesheet" media="print" onload="this.onload=null;this.removeAttribute('media');" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
<noscript>
<link rel="stylesheet" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1" crossorigin>
</noscript>
<!-- Critical JavaScript -->
<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/jquery.min.js"></script>
<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/bootstrap-3.3.5.min.js"></script>
<script>
/* jQuery.event.special.touchstart = {
setup: function( _, ns, handle ) {
this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
}
}; */
jQuery.event.special.touchmove = {
setup: function( _, ns, handle ) {
this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
}
};
jQuery.event.special.wheel = {
setup: function( _, ns, handle ){
this.addEventListener("wheel", handle, { passive: true });
}
};
jQuery.event.special.mousewheel = {
setup: function( _, ns, handle ){
this.addEventListener("mousewheel", handle, { passive: true });
}
};
</script>
<!-- Prefetch -->
<link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js" as="script">
<link rel="prefetch" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0" as="script">
<script>
function g() {
window.addEventListener('load', () => {
if (typeof initializeG === 'function') {
initializeG();
} else if (typeof initializeGoogleMaps === 'function') {
initializeGoogleMaps();
}
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places®ion=US&callback=g&language=en&key=AIzaSyCdH1MRyFfi3bIGGDsyCnMbfAchnDNQ7zU"></script>
</head>
<body class="general-session"><!--
IMPORTANT: 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.
INSTEAD: If custom CSS rules are needed, add them directly into the DESIGN SETTINGS > CUSTOM CSS section.
-->
<style>
.upload-form-field::before {
content: "choose files";
display: inline-block;
border: 1px solid #999;
border-radius: 3px;
padding: 5px 8px;
}
#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 {
white-space: nowrap !important;
}
/* Main Website Design */
body,.modal-header,.modal-content,.modal-body,.modal-footer {
background: rgb(244, 244, 244);
color: rgb(92, 89, 84);
font-family: 'Open Sans';
font-size: 14px;
}
.select2-container .select2-choice {
font-family: 'Open Sans'!important;
}
html{
background: rgb(61, 79, 90) }
.bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) a, .bootstrap-datetimepicker-widget *:not(.active,[data-action="togglePeriod"]) td,.datepicker th.picker-switch,.datepicker .dow {
color: #000 !important;
}
a,a.h1,a.h2,a.h3,a.h4,a.h5,a.h6,.pricing_menu li ul li a:not(.btn) {
color: rgb(81, 150, 64);
}
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 {
color: rgb(254, 102, 13);
}
.breadcrumb a{
color: rgba(92, 89, 84,0.9);
}
.breadcrumb a:hover, .breadcrumb a:focus,.breadcrumb > .active {
color: rgb(92, 89, 84);
}
.help-inline, .help-block {
color: rgba(92, 89, 84,0.5);
}
.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
font-family: 'Open Sans';
}
/* Header Design */
.header, .mobile_website_logo img {
background: rgb(255, 255, 255);
}
.header .mini-nav li a:not(.btn):not(.network-icon), .header .mini-nav span {
color: rgb(61, 69, 72);
}
.header .mini-nav li a:not(.btn):hover {
color: rgba(61, 69, 72,0.95);
}
.header .btn_get_listed {
background-color: rgb(254, 102, 13);
border: 1px solid rgb(254, 102, 13);
color: rgb(255, 255, 255)!important;
}
.header .btn_get_listed:hover, .header .btn_get_listed:focus {
background-color: rgba(254, 102, 13,0.97);
}
.header .btn_search {
background-color: rgba(254, 102, 13,0.97);
border: 1px solid rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.header .btn_search:hover, .header .btn_search:focus {
background-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
/* Logo Design */
.logo,.logo:hover,.logo:focus {
color: rgb(93, 112, 124);
font-family: 'Ubuntu';
}
.logo .slogan {
color: rgb(93, 112, 124);
}
.logo .fa {
color: rgb(254, 102, 13);
}
/* Main Menu Design */
.member-profile-tabs > ul, .member-profile-tabs .tabs-container {
background: rgb(247, 247, 247);
position: sticky;
z-index: 1;
top: 0px;
}
/* Google Translate When Main Menu Sticky Top */
@media only screen and (max-width: 1100px) {
.member-profile-tabs > ul, .member-profile-tabs .tabs-container {
top: 50px;
}
}
.header ul.nav.navbar-nav li ul {
background-color: #fafafa;
}
.header ul.nav.navbar-nav li ul li a, .header ul.nav.navbar-nav li ul li span {
color: rgb(64, 64, 66);
font-weight: 400;
}
.header .navbar-default, .pagination > .active > a {
background-color: rgb(254, 102, 13);
}
.header ul.nav.navbar-nav li ul li a:hover, .header ul.nav.navbar-nav li ul li a:focus{
border-left-color: rgb(64, 64, 66);
background: rgb(64, 64, 66);
color: #fafafa;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: rgb(255, 255, 255);
}
.user_sidebar, .main_menu, .compact-mobile-search {
color: rgb(255, 255, 255);
}
.navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span {
color: rgb(255, 255, 255);
font-weight: 400;
}
.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 {
color: rgb(255, 255, 255);
}
.navbar-default .navbar-nav > li {
font-family: 'Open Sans';
}
/* Footer Design */
.footer {
background-color: rgb(61, 79, 90);
display: block;
}
.footer, .footer_menu a,.footer_terms a,.footer_menu .content {
color: rgb(255, 255, 255);
}
.footer_menu a:hover, .footer_terms a:hover, .footer_menu a:focus, .footer_terms a:focus {
color: rgb(233, 226, 218);
}
.footer_menu .head {
color: rgb(255, 255, 255);
}
.btn_footer_get_listed {
background-color: rgb(254, 102, 13);
border: 1px solid rgb(254, 102, 13);
color: rgb(255, 255, 255)!important;
}
.btn_footer_get_listed:hover, .btn_footer_get_listed:focus{
background-color: rgba(254, 102, 13,0.95);
}
/* Homepage Design */
.homepage_settings h1, .homepage_settings h2, .homepage_map h1, .homepage_map h2 {
font-family: 'Open Sans';
}
.homepage_settings h1, .homepage_map h1 {
color: rgb(255, 255, 255);
text-align: left;
}
.homepage_settings h2, .homepage_map h2 {
color: rgb(254, 102, 13);
text-align: left;
}
.homepage_settings .search_box label {
color: rgb(92, 89, 84);
}
.btn_home_search, .search_box input[type=submit] {
background-color: rgb(81, 150, 64);
border: 1px solid rgb(81, 150, 64);
color: rgb(255, 255, 255);
}
.btn_home_search:hover, .btn_home_search:focus, .search_box input[type=submit]:hover, .search_box input[type=submit]:focus {
background-color: rgba(81, 150, 64,0.97);
color: rgb(255, 255, 255);
}
.homepage_settings .search_box {
background-color: rgba( 255, 255, 255, 0.8);
}
/* Homepage Steps Module */
.homepage_steps {
background: rgb(248, 247, 241);
color: rgb(254, 102, 13);
}
.homepage_steps a.homepage_step_link,.homepage_steps a.homepage_step_link:hover,.homepage_steps a.homepage_step_link:active{
color: rgb(254, 102, 13)!important;
}
.homepage_steps .fa {
color: rgb(254, 102, 13);
background-color: rgba(254, 102, 13,0.075);
}
.homepage_steps h2 + p {
opacity: .6;
}
/* Blog Posts Slider Settings */
#myCarousel h2 a, .carousel-caption p,#myCarousel .list-group-item h2, #myCarousel li.list-group-item h4 {
color: rgb(255, 255, 255);
}
#myCarousel .list-group-item {
background-color: rgba(254, 102, 13,0.9);
border-color: rgba(254, 102, 13,0.80);
}
#myCarousel .carousel-caption {
background-color: rgba(254, 102, 13,0.8);
}
#myCarousel .list-group, #myCarousel .carousel-inner {
background-color: rgb(254, 102, 13) }
#myCarousel .list-group .active, #myCarousel .list-group-item:hover {
background-color: rgba(0,0,0,0.3);
}
#myCarousel .list-group .active h2, #myCarousel .list-group-item:hover h2{
color: rgb(255, 255, 255);
}
/* Additional Settings */
.well blockquote {
background: rgb(244, 244, 244) none repeat scroll 0 0;
border-color: rgb(247, 247, 247);
color: rgb(92, 89, 84);
padding: 10px 20px;
}
.account-form-box form table tr td table {
background-color: transparent!important;
border: none!important;
}
.account-form-box form table tr td table td {
background-color: transparent!important;
color: rgb(92, 89, 84)!important;
border: none!important;
}
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{
color: rgb(92, 89, 84)!important;
}
.table.dataTable > thead > tr > th, .table > thead > tr > th, .fr-view table th, .fr-view table tfoot td {
border-color: rgba(85, 85, 85,0.1);
background-color: rgb(255, 255, 255);
color: rgb(85, 85, 85);
font-weight:600;
border-left: none;
border-bottom-width: 1px;
}
.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, table.dataTable.no-footer {
border-color: rgba(85, 85, 85,0.1);
}
.table > tfoot > tr > td:not(:last-child) {
border-right: 1px solid rgba(85, 85, 85,0.1);
}
table.dataTable.no-footer, table.dataTable {
border: 1px solid rgb(247, 247, 247)!important;
}
.table-view li:not(.table-display-about_me li, .froala-data li), .table-view .table-view-group > div {
border-top:1px solid rgb(247, 247, 247);
}
.table-view .table-view-group:last-child {
border-bottom:1px solid rgb(247, 247, 247);
}
table.dataTable tbody tr, .table-striped.dataTable, .table-striped, .fr-view .table-striped {
background-color: rgb(255, 255, 255)!important;
}
.table-striped.dataTable, .table-striped, .fr-view .table-striped {
border: 1px solid rgba(85, 85, 85,0.15);
border-collapse: separate;
overflow: hidden;
}
table#feature-body-datatable:has(.dropdown.open),table#digital-products-transactions:has(.dropdown.open), table#example:has(.dropdown.open) {
overflow: visible;
}
.table-striped.dataTable tbody > tr:nth-of-type(2n+1),.table-striped > tbody > tr:nth-of-type(2n+1) {
background-color: rgba(244, 244, 244,0.5)!important;
}
.nav-tabs, hr, .account-menu-title, .modal-header {
border-color: rgb(247, 247, 247);
}
.sidemenu_panel .list-group-item{
background-color: transparent!important;
color: rgb(41, 41, 41)!important;
}
.img-thumbnail {
background-color: rgb(255, 255, 255)!important;
border: 1px solid rgb(247, 247, 247);
}
.member_admin_sidemenu p, .member_admin_sidemenu h3 {
color: rgb(41, 41, 41)!important;
}
.close {
color: rgb(92, 89, 84);
opacity: 1;
}
.member_results_header h1, .content_w_sidebar.feature-search h1, .feature_results_header h1 {
font-size:36px;
display: block;
}
.member_results_header h2, .feature_results_header h2 {
font-size:30px;
display: block;
}
.homepage_settings {
padding-top: 60px;
padding-bottom: 160px;
}
@media (max-width: 768px) { .mobile_website_logo .visible-xs {display: block !important;}}
@media only screen and (max-width: 768px) {
.member-profile-header .favorite {float:none}
}
@media only screen and (max-width: 1100px) {
}
.views > i.fa.activeView, .views > i.fa:hover {
background-color: rgb(92, 89, 84);
color: rgb(244, 244, 244);
}
.views > i.fa {
background-color: rgba(92, 89, 84,0.1);
color: rgb(92, 89, 84);
}
.ui-rangeSlider-label {
background-color: rgb(254, 102, 13)!important;
color: rgb(255, 255, 255)!important;
}
.pricing_menu li .title {
background: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
p.account-tip{
color: rgb(92, 89, 84);
}
.circled_number {
background: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.pic {
background-color: rgba(254, 102, 13,0.8);
color: rgb(255, 255, 255);
background-repeat: no-repeat;
background-position: center;
}
.pic .pic-caption {
background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%,rgba(254, 102, 13,0.85) 50%);
color: rgb(255, 255, 255);
}
.slick-prev-fa i, .slick-next-fa i{
color: rgb(254, 102, 13);
}
.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 {
background-color: rgb(255, 255, 255);
border-color: rgb(247, 247, 247);
color: rgb(41, 41, 41);
}
.nav-pills > li.active a, .nav-pills > li > a:hover {
background-color: rgb(254, 102, 13)!important;
border-color: rgb(254, 102, 13)!important;
color: rgb(255, 255, 255)!important;
}
.sidemenu_panel .panel-heading {
color: rgb(41, 41, 41)!important;
background-color: rgb(255, 255, 255)!important;
}
.member-profile-tabs .nav-tabs > li:not(.active) > a, .login-register-tabs.nav-tabs > li:not(.active) > a, .nav-tabs > li:not(.active) > a {
background: rgba(255, 255, 255,0.5);
color: #85837f;
}
.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 {
background: rgba(255, 255, 255,1);
color: rgb(92, 89, 84);
}
.author-snapshot .well:not(.well.bg-default) {
background-color: rgb(255, 255, 255)!important;
border-color: rgb(247, 247, 247)!important;
color: rgb(41, 41, 41)!important;
}
.nav-tabs>li>a, .nav-pills>li>a {
font-weight: 600;
}
.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{
color: rgba(41, 41, 41,0.5);
}
#service_areas_table td,#service_areas_table_wrapper label, #service_areas_table_info, #service_areas_table_paginate > a {
color: rgb(41, 41, 41) !important;
}
.popover {
background-color: rgb(255, 255, 255);
border-color: rgb(255, 255, 255);
padding:0;
text-align:left;
}
.popover-title, .popover-content {
background-color: rgb(255, 255, 255);
color: rgb(41, 41, 41);
border-color: rgb(255, 255, 255);
text-align:left;
}
.popover-content {
background-color: rgba(41, 41, 41,.05);
border-radius: 4px;
transform: translate(-1px, -1px);
width: calc(100% + 2px);
margin-bottom: -2px;
}
.popover.left > .arrow::after {
border-left-color: rgb(255, 255, 255)!important;
}
.popover.right > .arrow::after {
border-right-color: rgb(255, 255, 255)!important;
}
.popover.bottom > .arrow::after {
border-bottom-color: rgb(255, 255, 255)!important;
}
.popover.top > .arrow::after {
border-top-color: rgb(255, 255, 255)!important;
}
.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{
background-color: rgb(244, 244, 244);
color: rgb(92, 89, 84);
}
.module h1, .module h2, .module h3, .module h4, .module h5 {
color: rgb(62, 62, 62);
}
.module p:not(.fr-box.fr-basic .fr-element p) {
color: rgb(41, 41, 41);
}
.pagination>.active>a {
border-color: rgba(255, 255, 255,0.2);
}
.pagination>.active>a {
color: rgb(255, 255, 255);
}
.pagination > .active > a:hover, .pagination > .active > a:focus {
border-color: rgba(255, 255, 255,0.2);
background-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.pagination > li > a {
color: rgb(254, 102, 13);
border-color: rgba(254, 102, 13,0.2);
background-color: rgb(255, 255, 255);
}
.pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover {
background-color: rgb(254, 102, 13);
border-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.nav-pills.nav-wizard > li a, .nav-pills.nav-wizard > li a:hover{
background-color: rgb(250, 250, 250)!important;
color: rgb(41, 41, 41)!important;
}
.member_wizard2 li.incomplete a, .member_wizard2 li.incomplete a:hover {
background-color: rgb(40, 146, 198)!important;
border-color: rgb(40, 146, 198);
color: rgb(255, 254, 254);
}
.nav-pills.nav-wizard > li.active a, .nav-pills.member_wizard > li.active:hover a {
background-color: rgb(0, 116, 228)!important;
color: rgb(255, 255, 255)!important;
}
.member_wizard2 li.completed a, .member_wizard2 li.completed a:hover {
background-color: rgb(83, 194, 186)!important;
border-color: rgb(83, 194, 186);
color: rgb(255, 255, 255);
}
.nav-pills.nav-wizard > li.active .nav-arrow, .nav-pills.nav-wizard > li.active:hover .nav-arrow {
border-color: transparent transparent transparent rgb(0, 116, 228)!important;
}
.nav-pills.nav-wizard > li.active .nav-wedge, .nav-pills.nav-wizard > li.active:hover .nav-wedge{
border-color: rgb(0, 116, 228) rgb(0, 116, 228) rgb(0, 116, 228) transparent!important;
}
li.completed .nav-wedge, .nav-pills.nav-wizard > li.completed:hover .nav-wedge {
border-color: rgb(81, 150, 64) rgb(81, 150, 64) rgb(81, 150, 64) transparent!important;
}
li.incomplete .nav-wedge, .nav-pills.nav-wizard > li.incomplete:hover .nav-wedge {
border-color: rgb(250, 250, 250) rgb(250, 250, 250) rgb(250, 250, 250) transparent!important;
}
.nav-pills.member_wizard > li.completed a, .nav-pills.member_wizard > li.completed a:hover {
background-color: rgb(81, 150, 64)!important;
color: rgb(255, 255, 255)!important;
}
.member_wizard2 li {
color: rgb(255, 255, 255);
border-right: 10px solid rgb(244, 244, 244);
}
li.completed .nav-arrow, .nav-pills.nav-wizard > li.completed:hover .nav-arrow {
border-color: transparent transparent transparent rgb(81, 150, 64)!important;
}
li.incomplete .nav-arrow, .nav-pills.nav-wizard > li.incomplete:hover .nav-arrow{
border-color: transparent transparent transparent rgb(250, 250, 250)!important;
}
/* Default Colors */
.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 {
background-color: rgb(254, 102, 13);
border-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.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 {
background-color: rgba(254, 102, 13,0.95);
border-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.panel-primary {
background-color: #ffe8db;
border-color: rgb(254, 102, 13);
}
.bg-primary,.progress-bar-primary,.module p.bg-primary,.label-primary,.badge-primary,.pricing_menu .title.bg-primary, .well .well.bg-primary, .module .well.bg-primary, .well .module.bg-primary,.tab-content .module.bg-primary,.tab-content .well.bg-primary {
background-color: rgb(254, 102, 13);
color: rgb(255, 255, 255);
}
.bg-primary .badge {
background-color:rgb(255, 255, 255);
color: rgb(254, 102, 13);
}
.btn-primary.btn-outline {
background: transparent;
color: rgb(254, 102, 13);
transition: all 250ms ease-in-out 0ms;
}
.btn-primary.btn-outline:hover {
background: rgba(254, 102, 13,0.1);
color: rgb(254, 102, 13);
}
.alert-primary {
background-color:rgba(254, 102, 13,0.7);
border-color:rgba(254, 102, 13,0.2);
color: rgba(255, 255, 255,0.9);
}
.alert-primary-subtle, .label-primary-subtle, .badge-primary-subtle {
background-color: #ffe0cf;
border-color: #ffe0cf;
color: rgb(254, 102, 13);
color: color-mix(in srgb, rgb(254, 102, 13) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-primary *, .btn-primary a {
color: rgb(255, 255, 255);
}
.text-primary{
color: rgb(254, 102, 13);
}
.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 {
background-color: rgb(81, 150, 64);
border-color: rgb(81, 150, 64);
color: rgb(255, 255, 255);
}
.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 {
background-color: rgba(81, 150, 64,0.95);
border-color: rgb(81, 150, 64);
color: rgb(255, 255, 255);
}
.panel-info {
background-color: #e5efe2;
border-color: rgb(81, 150, 64);
}
.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 {
background-color: rgb(81, 150, 64);
color: rgb(255, 255, 255);
}
.bg-info .badge {
background-color:rgb(255, 255, 255);
color: rgb(81, 150, 64);
}
.btn-info.btn-outline {
background: transparent;
color: rgb(81, 150, 64);
transition: all 250ms ease-in-out 0ms;
}
.btn-info.btn-outline:hover {
background: rgba(81, 150, 64,0.1);
color: rgb(81, 150, 64);
}
.alert-info {
background-color:rgba(81, 150, 64,0.7);
border-color:rgba(81, 150, 64,0.2);
color: rgba(255, 255, 255,0.9);
}
.alert-info-subtle, .label-info-subtle, .badge-info-subtle {
background-color: #dcead9;
border-color: #dcead9;
color: rgb(81, 150, 64);
color: color-mix(in srgb, rgb(81, 150, 64) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-info *, .btn-info a {
color: rgb(255, 255, 255);
}
.text-info{
color: rgb(81, 150, 64);
}
.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 {
background-color: rgb(83, 194, 186);
border-color: rgb(83, 194, 186);
color: rgb(255, 255, 255);
}
.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 {
background-color: rgba(83, 194, 186,0.95);
border-color: rgb(83, 194, 186);
color: rgb(255, 255, 255);
}
.panel-success {
background-color: #e5f6f5;
border-color: rgb(83, 194, 186);
}
.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 {
background-color: rgb(83, 194, 186);
color: rgb(255, 255, 255);
}
.bg-success .badge {
background-color: rgb(255, 255, 255);
color: rgb(83, 194, 186);
}
.btn-success.btn-outline {
background: transparent;
color: rgb(83, 194, 186);
transition: all 250ms ease-in-out 0ms;
}
.btn-success.btn-outline:hover {
background: rgba(83, 194, 186,0.1);
color: rgb(83, 194, 186);
}
.alert-success {
background-color:rgba(83, 194, 186,0.7);
border-color:rgba(83, 194, 186,0.2);
color: rgba(255, 255, 255,0.9);
}
.alert-success-subtle, .label-success-subtle, .badge-success-subtle {
background-color: #ddf3f1;
border-color: #ddf3f1;
color: rgb(83, 194, 186);
color: color-mix(in srgb, rgb(83, 194, 186) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-success *, .btn-success a {
color: rgb(255, 255, 255);
}
.text-success{
color: rgb(83, 194, 186);
}
.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 {
background-color: rgb(40, 146, 198);
border-color: rgb(40, 146, 198);
color: rgb(255, 254, 254);
}
.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 {
background-color: rgba(40, 146, 198,0.95);
border-color: rgb(40, 146, 198);
color: rgb(255, 254, 254);
}
.panel-warning {
background-color: #dfeff6;
border-color: rgb(40, 146, 198);
}
.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 {
background-color: rgb(40, 146, 198);
color: rgb(255, 254, 254);
}
.bg-warning .badge {
background-color: rgb(255, 254, 254);
color: rgb(40, 146, 198);
}
.btn-warning.btn-outline {
background: transparent;
color: rgb(40, 146, 198);
transition: all 250ms ease-in-out 0ms;
}
.btn-warning.btn-outline:hover {
background: rgba(40, 146, 198,0.1);
color: rgb(40, 146, 198);
}
.alert-warning {
background-color:rgba(40, 146, 198,0.7);
border-color:rgba(40, 146, 198,0.2);
color: rgba(255, 254, 254,0.9);
}
.alert-warning-subtle, .label-warning-subtle, .badge-warning-subtle {
background-color: #d4e9f4;
border-color: #d4e9f4;
color: rgb(40, 146, 198);
color: color-mix(in srgb, rgb(40, 146, 198) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-warning *, .btn-warning a {
color: rgb(255, 254, 254);
}
.text-warning {
color: rgb(40, 146, 198);
}
.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 {
background-color: rgb(249, 40, 33);
border-color: rgb(249, 40, 33);
color: rgb(255, 255, 255);
}
.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 {
background-color: rgba(249, 40, 33,0.95);
border-color: rgb(249, 40, 33);
color: rgb(255, 255, 255);
}
.has-error .form-control {
border-color: rgb(249, 40, 33);
}
.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 {
background: rgb(249, 40, 33);
color: rgb(255, 255, 255) !important;
}
.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 {
color: rgb(249, 40, 33);
}
.panel-danger {
background-color: #fedfde;
border-color: rgb(249, 40, 33);
}
.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 {
background-color: rgb(249, 40, 33);
color: rgb(255, 255, 255);
}
.bg-danger .badge {
background-color: rgb(255, 255, 255);
color: rgb(249, 40, 33);
}
.btn-danger.btn-outline {
background: transparent;
color: rgb(249, 40, 33);
transition: all 250ms ease-in-out 0ms;
}
.btn-danger.btn-outline:hover {
background: rgba(249, 40, 33,0.1);
color: rgb(249, 40, 33);
}
.alert-danger {
background-color:rgba(249, 40, 33,0.7);
border-color:rgba(249, 40, 33,0.2);
color: rgba(255, 255, 255,0.9);
}
.alert-danger-subtle, .label-danger-subtle, .badge-danger-subtle {
background-color: #fed4d3;
border-color: #fed4d3;
color: rgb(249, 40, 33);
color: color-mix(in srgb, rgb(249, 40, 33) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-danger *, .btn-danger a {
color: rgb(255, 255, 255);
}
.text-danger{
color: rgb(249, 40, 33);
}
.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.focus, 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 {
background-color: rgb(255, 255, 255);
border-color: rgb(255, 255, 255);
color: rgb(85, 85, 85);
}
.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 {
background-color: rgba(255, 255, 255,0.95);
border-color: rgb(255, 255, 255);
color: rgb(85, 85, 85);
}
.sidemenu_panel .panel-default .panel_heading {
background-color: rgb(255, 255, 255)!important;
border-color: rgb(255, 255, 255)!important;
color: rgb(85, 85, 85)!important;
}
.panel-default .panel-heading, .member_accounts .panel-default > .panel-heading, .panel-default.categories-panel .panel-heading {
box-shadow: 0 0 1000px 0 rgba(85, 85, 85,0.02) inset;
background-color: rgb(255, 255, 255);
}
.panel-default, .member_accounts .panel-default {
background-color: rgba(255, 255, 255,0.15);
border-color: #ffffff;
border-color: color-mix(in srgb,rgb(255, 255, 255) 100%,rgba(255, 255, 255) 10%);
}
.member_admin_sidemenu .panel-default {
background-color: transparent;
}
.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 {
background-color: rgb(255, 255, 255);
color: rgb(85, 85, 85);
}
.bg-default .badge {
background-color: rgb(85, 85, 85);
color: rgb(255, 255, 255);
}
.btn-default.btn-outline {
background: transparent;
color: rgb(255, 255, 255);
transition: all 250ms ease-in-out 0ms;
}
.btn-default.btn-outline:hover {
background: rgba(255, 255, 255,0.1);
color: rgb(255, 255, 255);
}
.alert-default {
background-color:rgb(255, 255, 255);
border-color:rgb(255, 255, 255);
color: rgb(85, 85, 85);
}
.alert-default-subtle, .label-default-subtle, .badge-default-subtle {
background-color:rgba(255, 255, 255,0.5);
border-color: rgba(255, 255, 255,0.5);
color: rgb(85, 85, 85);
color: color-mix(in srgb, rgb(85, 85, 85) 50%, rgb(92, 89, 84) 50%);
}
.btn.dropdown-toggle.btn-default *, .btn-default a {
color: rgb(85, 85, 85);
}
.text-default{
color: rgb(255, 255, 255);
}
.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 {
background-color: rgb(92, 89, 84);
border: 1px solid rgb(92, 89, 84);
color: rgb(244, 244, 244);
}
.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 {
background-color: rgba(92, 89, 84,0.95);
border-color: rgb(92, 89, 84);
color: rgb(244, 244, 244);
}
.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 {
background-color: rgb(92, 89, 84);
color: rgb(244, 244, 244);
}
.bg-secondary .badge {
background-color:rgb(244, 244, 244);
color: rgb(92, 89, 84);
}
.btn-secondary.btn-outline {
background: transparent;
color: rgb(92, 89, 84);
transition: all 250ms ease-in-out 0ms;
}
.btn-secondary.btn-outline:hover {
background: rgba(92, 89, 84,0.1);
color: rgb(92, 89, 84);
}
.panel-secondary {
background-color: #e7e6e5;
border-color: rgb(92, 89, 84);
}
.alert-secondary {
background-color:rgb(92, 89, 84);
border-color:rgb(92, 89, 84);
color: rgb(244, 244, 244);
}
.alert-secondary-subtle, .label-secondary-subtle, .badge-secondary-subtle {
background-color:rgba(92, 89, 84,0.8);
border-color: rgba(92, 89, 84,0.5);
color: rgb(244, 244, 244);
}
.btn-outline {
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(5px);
}
.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 {
background-color: rgb(244, 244, 244);
border: 1px solid rgb(244, 244, 244);
color: rgb(92, 89, 84);
}
.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 {
background-color: rgba(244, 244, 244,0.95);
border: 1px solid rgb(244, 244, 244);
color: rgb(92, 89, 84);
}
.btn.btn-body.dropdown-toggle * {
color: rgb(92, 89, 84)
}
.btn-body.dropdown-toggle + ul li, .daterangepicker .ranges {
color: #333;
}
.bg-body {
background: rgb(244, 244, 244);
color: rgb(92, 89, 84);
}
.bg-content-box {
background: rgb(255, 255, 255);
color: rgb(41, 41, 41);
}
.bg-content-box-border {
background: rgb(247, 247, 247);
}
.btn.dropdown-toggle.btn-secondary *, .btn-secondary a {
color: rgb(244, 244, 244);
}
.text-secondary {
color: rgb(92, 89, 84);
}
.text-body {
color: rgb(244, 244, 244);
}
.feature-post #post-content .alert-secondary.btn-block, .feature-search .img_section .alert-secondary.btn-block, .search_result .img_section .alert-secondary {
border-radius: 10px;
background-color: rgba(92, 89, 84,0.2)
;
}
/* Footer Newsletter Row */
.newsletter_row .alert {
color: rgb(255, 255, 255);
}
.newsletter_row {
background-color: rgb(93, 112, 124);
color: rgb(255, 255, 255);
}
.newsletter_row input[type="submit"],.newsletter_footer_button {
background-color: rgba(81, 150, 64,0.97);
color: rgb(255, 255, 255);
border-color: rgb(81, 150, 64);
}
.newsletter_row input[type="submit"]:hover,.newsletter_row input[type="submit"]:focus,.newsletter_footer_button:hover,.newsletter_footer_button:focus {
background-color: rgb(81, 150, 64);
color: rgb(255, 255, 255);
}
.newsletter_button_left {
border-right: 1px solid rgba(255, 255, 255,0.2);
}
.newsletter_button_right {
border-left: 1px solid rgba(255, 255, 255,0.2);
}
.newsletter_row small.help-block {
background: rgb(255, 255, 255);
margin-top: -5px;
float: left;
padding: 8px;
border-radius: 1px;
color: rgb(93, 112, 124);
text-transform: capitalize;
}
.newsletter_row .has-success .checkbox,.newsletter_row .has-error .checkbox{
color: rgb(255, 255, 255);
}
@media only screen and (max-width: 767px) {
.newsletter_button_right,.newsletter_button_left{
border: none;
margin: 5px 0;
}
}
/* Font Sizes */
.navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > span {
font-size: 16px;
}
.header .logo {
font-size: 34px;
}
.homepage_title h1, .homepage_settings h1 {
letter-spacing: -1px;
font-size: 60px;
margin-bottom: 20px;
}
@media only screen and (max-width: 768px) {
.homepage_title h1, .homepage_settings h1 {margin-bottom: 15px;}
}
.homepage_settings h2 {
font-size: 28px;
}
.ui-rangeSlider-bar{
background: rgb(81, 150, 64)!important;
}
@media only screen and (max-width: 1024px){
.modal {margin-top: 40px;}
}
@media only screen and (max-width: 768px){
.modal {margin-top: 60px;}
}
/* Calendar Styles */
#cal-slide-content {
color: rgb(85, 85, 85)!important;
background-color: rgb(255, 255, 255)!important;
-webkit-box-shadow: none!important;
box-shadow: none!important;
}
#cal-slide-content a.event-item {
color: rgb(85, 85, 85)!important;
font-weight:bold!important;
}
#cal-slide-content a.event-item small {
display: inline-block;
}
.cal-month-box, .cal-year-box, .cal-week-box {
border: 1px solid rgb(247, 247, 247)!important;
}
.cal-year-box .row-fluid, .cal-month-box .cal-row-fluid {
border-bottom: 1px solid rgb(247, 247, 247)!important;
}
.cal-year-box [class*="span"], .cal-month-box [class*="cal-cell"] {
border-right: 1px solid rgb(247, 247, 247)!important;
}
.cal-year-box .row-fluid, .cal-row-fluid, #cal-day-box .cal-day-hour:nth-child(odd) {
background-color: rgb(244, 244, 244)!important;
}
.cal-month-day span:not(.pull-right):not(.events-count-label):not(.events-label) {
color: rgb(85, 85, 85)!important;
}
.cal-day-today span[data-cal-date] {
color: rgb(92, 89, 84)!important;
}
.cal-year-box .row-fluid [class*="span"]:last-child, .cal-month-box .cal-row-fluid [class*="cal-cell"]:last-child {
border: 0!important;
}
.cal-row-head {
background: rgb(255, 255, 255)!important;
}
.day-highlight:hover, .day-highlight {
background-color: rgb(247, 247, 247)!important;
}
.cal-event-list .event.pull-left {
background-color: rgb(92, 89, 84)!important;
opacity: 0.4;
margin-top: 7px!important;
}
.cal-day-today {
background-color: rgb(247, 247, 247)!important;
}
#cal-day-tick {
border: 1px solid rgb(247, 247, 247)!important;
background-color: rgb(247, 247, 247)!important;
}
.cal-day-weekend span[data-cal-date]{
color: rgb(92, 89, 84)!important;
}
#first_container .favorite, #first_container .fa.favorite {
color: rgb(170, 184, 194);
background: rgb(255, 255, 255);
border: 1px solid rgb(255, 255, 255);
white-space:nowrap!important;
height:24px;
padding:0 6px;
border-radius:8px;
}
#first_container .favorite span, #first_container .fa.favorite span {
font-family: 'Open Sans';
white-space:nowrap!important;
}
#first_container .favoriteActive:not(.favorite.comments-count-badge), #first_container .fa.favoriteActive:not(.favorite.comments-count-badge .fa) {
color: rgb(226, 38, 77);
}
#first_container .favorite::after, #first_container .fa.favorite::after {
font-family: 'Open Sans';
margin-left: 3px;
}
#first_container .favorite span, #first_container .fa.favorite span{
padding-left: 4px;
font-family: 'Open Sans';
font-size: 11px;
letter-spacing:.5px;
top:-1px;
position:relative;
font-weight:700;
}
#first_container .favorite span:empty, #first_container .fa.favorite span:empty {
padding: 0;
}
#first_container .favorite .bookmark-number, #first_container .fa.favorite .bookmark-number {
padding: 1px 0;
border-radius: 100px;
display: inline-block;
font-weight: bold;
min-width: 15px;
font-size: .8em;
vertical-align: bottom;
height: 15px;
line-height: 13px;
margin-left: 3px;
text-align: center;
}
#first_container .favorite.favoriteActive .bookmark-number:not(.comments-count-badge .bookmark-number), #first_container .fa.favorite.favoriteActive .bookmark-number {
background: rgb(226, 38, 77);
color: #fff;
}
span.checkbox_value::after {
content: ', ';
}
span.checkbox_value:last-child::after {
content: '';
}
/* Homepage Sections Background Color Logic */
.homepage-section-1 {
padding: 40px 0 40px;
}
.homepage-section-3 {
padding: 40px 0 40px;
}
.homepage-section-4 {
padding: 40px 0 40px;
}
.homepage-section-5 {
padding: 40px 0 40px;
}
.homepage-section-6 {
padding: 40px 0 40px;
}
.homepage-section-7 {
padding: 40px 0 40px;
}
.homepage-section-8 {
padding: 40px 0 40px;
}
.homepage-section-9 {
padding: 40px 0 40px;
}
.homepage-section-10 {
padding: 40px 0 40px;
}
.homepage-section-11 {
padding: 40px 0 40px;
}
.homepage-section-12 {
padding: 40px 0 40px;
}
.homepage-section-13 {
padding: 40px 0 40px;
}
.homepage-section-14 {
padding: 40px 0 40px;
}
.homepage-section-15 {
padding: 40px 0 40px;
}
/* Additional Settings */
/* Streaming Widgets Title Settings */
.streaming-title {
text-align: left;
font-size: 30px;
line-height:1.5em;
font-weight: 600;
padding-bottom: 0px;
}
@media only screen and (max-width: 990px) {
.streaming-title {
line-height:1.1em;
}
}
.homepage-join-module .module h2:first-of-type {
color: ;
}
.homepage-join-module .module{
background: ;
border-color: ;
}
.homepage-about-module .module h2:first-of-type {
color: ;
}
.homepage-about-module .module{
background: ;
border-color: ;
}
.the-post-description > :is(h2, h3, h4, h5):not(:first-child) {
font-weight: 600;
margin-top: 20px;
}
/* Keep: Ensure ul/ol respect padding and margins */
.the-post-description > :is(ul, ol) {
display: flow-root;
}
.the-post-description li {
margin-bottom: 8px;
}
.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 {
border-radius:1000px!important;
}
.img-rounded img, img.fr-dib.img-rounded{
border-radius: 10px!important;
}
/* Google Translate Module */
.skiptranslate{font-size:0}
.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}
.skiptranslate.goog-te-gadget span,img.goog-te-gadget-icon{display:none!important}
.goog-te-gadget .goog-te-combo{margin-bottom:-4px}
.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)}
@media only screen and (max-width: 1100px) {
.skiptranslate:not(.skiptranslate[style="display: none;"]){height:39px}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header{margin-top:10px!important}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar{margin-top:10px}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar ~ .header{margin-top:0!important}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .mobile-main-menu{top:89px!important;height:calc(100% - 90px)!important}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .header .navbar{top:39px}
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ #first_container .member_sidebar.open{top: 89px;}
}
@media only screen and (max-width: 767px) {
.skiptranslate:not(.skiptranslate[style="display: none;"]) ~ .announcement-bar.hidden-xs ~ .header{margin-top:10px!important}
}
</style>
<!--GOOGLE TAG MANAGER CODE--><div class="header">
<div class="container">
<div class="row header-main-row">
<style type='text/css'> .logo-text:has(.logo_title:empty) {
display:none
} </style><div id="website_logo" class="col-md-5 xs-nopad xs-hpad sm-text-center xs-bmargin header-left-container">
<a class="logo logo-image inline-block vpad sm-nopad sm-tmargin" href="https://helpsellmyfsbo.com" title="HELP Sell My FSBO">
<img width="450" height="70" src="/images/HSMF-Logo-Long-Trans-WtCmp-450x70.png" alt="HELP Sell My FSBO">
</a>
<div class="clearfix"></div>
</div>
<style type='text/css'> body input.tt-hint,body input.form-control.normal-autosuggest-input.tt-query {
background-color: white !important;
}
.mini-nav:not(:has(li)) {
display: none!important;
}
/* Parent Container - Main List */
.mini-nav li:has(ul) {
position: relative;
border-radius: 8px 8px 0 0;
}
.mini-nav > li:has(ul) {
padding-left: 0;
padding-right: 0;
background: rgb(255, 255, 255);
}
.mini-nav > li:has(ul) > a:not(.btn), .mini-nav > li:has(ul) > span {
padding: 10px 15px;
margin: 0!important;
}
.mini-nav > li:hover:has(ul), .mini-nav > li:hover:has(ul) {
box-shadow: 0 -1px 3px rgba(61, 69, 72,0.25);
}
/* Parent Links */
.mini-nav > li > a:not(.btn), .mini-nav > li > span:not(.btn) {
display:inline-block;
border-radius: 8px 8px 0 0;
}
.mini-nav > li:hover > a:not(.btn), .mini-nav > li:hover > span {
background: rgb(255, 255, 255);
display: inline-block;
position: relative;
z-index: 1000;
}
/* First Level Dropdowns */
.mini-nav li ul {
background: rgb(255, 255, 255);
box-shadow: 0 0px 3px rgba(61, 69, 72,0.25), 0 5px 5px 5px rgba(61, 69, 72,0.05);
text-align: left;
display: none;
border-radius: 0 8px 8px 8px;
list-style: none;
padding: 10px;
position: absolute;
white-space: nowrap;
min-width: 130%;
width: auto;
top: 100%;
left: 0;
z-index: 999;
margin-top: -1px;
}
.mini-nav li:hover > ul {
display: block;
}
/* First Level Dropdown Items */
.mini-nav li ul li {
position: relative;
display: block;
width: 100%;
}
.mini-nav li ul li a, .mini-nav li ul li span {
font-size: 0px !important;
display: block;
font-weight: 400;
padding: 8px 12px;
border-radius: 8px;
text-decoration: none;
width: 100%;
}
.mini-nav li ul li a:hover, .mini-nav li ul li span:hover {
box-shadow: 0 0 0 25px rgba(61, 69, 72,0.05) inset;
}
/* Second Level Dropdowns */
.mini-nav li ul li ul {
display: none;
position: absolute;
top: 0;
left: 100%;
margin: 0;
border-radius: 8px;
}
.mini-nav li ul li:hover > ul {
display: block;
}
/* Edge Positioning - Last Child Dropdowns */
.mini-nav > li:last-child ul {
right: 0;
left: auto;
border-radius: 8px 0 8px 8px;
}
.mini-nav > li:last-child ul li ul {
right: 100%;
left: auto;
}
/* Flex Spacing Utility */
.mini-nav.mini-nav-flex-spaced {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
row-gap: 0;
}
.mini-nav.mini-nav-flex-spaced > li {
flex: none;
padding: 0;
margin: 2px 0;
order: 2;
}
.mini-nav.mini-nav-flex-spaced > li.header-member-account-links,
.mini-nav:has(li ul) > li.header-member-account-links {
order: 1;
margin-left: auto;
width: 100%;
margin-bottom: 10px;
}
.logged-in-member-header .mini-nav.mini-nav-flex-spaced.list-inline > li {
line-height: 1em;
min-height: 0;
}
@media (min-width: 992px) {
.header-main-row {
display: flex;
align-items: center;
flex-wrap: wrap;
}
}
@media (max-width: 991px) {
.mini-nav.mini-nav-flex-spaced {
justify-content: center;
}
.mini-nav.mini-nav-flex-spaced > li {
margin-left: 5px !important;
margin-right: 5px !important;
}
} </style><div class="col-md-7 text-right sm-text-center header-right-container nolpad xs-hpad">
<ul class="mini-nav nobmargin list-inline xs-nopad xs-tmargin ">
<li class='bmargin'><span id='link207' class='bmargin'> 1 (855) 466-6070</span></li><li class=''><a href='/blog' id='link229'>Blog</a></li><li class='bmargin'><a href='/about/contact' id='link209' class='hpad bmargin'>Contact Us</a></li><li class='bmargin'><a href='/login' id='link208' class='rpad bmargin'>Login</a></li><li class='bmargin norpad'><a href='/join' id='link210' class='btn btn_get_listed bold'>List Your Property Today <i class="fa fa-chevron-right lmargin"></i></a></li> </ul>
<div class="clearfix"></div>
</div>
</div>
</div>
<style type='text/css'> .mobile-main-menu .hasChildren span a {
padding: 0px;
}
.user_sidebar > img {
width: 32px;
height: 32px;
position: absolute;
z-index: 10;
border-radius: 100px;
top: -1px;
object-fit: cover;
left: -10px;
background: rgb(255, 255, 255);
}
#member_sidebar_toggle img+.fa {
display: none;
}
.main_menu, .user_sidebar, .compact-mobile-search {
padding: 5px 8px;
margin-right:0;
min-height: 33.0333px;
min-width: 38.116px;
}
.main_menu i, .user_sidebar i {
font-size: 16px;
}
.navbar-nav li {
float: none!Important;
}
.navbar-default{
-webkit-transition: all .6s ease-in-out;
-moz-transition: all .6s ease-in-out;
-o-transition: all .6s ease-in-out;
transition: all .6s ease-in-out;
}
.transparent_menu {
background-color: rgba(254, 102, 13,0.95)!important;
}
@media only screen and (max-width: 991px) {
#popover {display: none}
}
@media only screen and (max-width: 1100px){
.mobile-main-menu{display:block!important}
.navbar-toggle {display: block}
#bs-main_menu .nav {display: none!important}
}
.mobile-main-menu {
position: fixed;
height: calc(100% - 50px)!important;
width: 250px;
background: rgb(254, 102, 13);
z-index: 99999;
right: -250px;
top: 50px;
display: none;
-webkit-transition: all .6s ease-in-out;
-moz-transition: all .6s ease-in-out;
-o-transition: all .6s ease-in-out;
transition: all .6s ease-in-out;
overflow-y: auto!important;
overflow-x: hidden!important;
}
.mobile-main-menu ul li i {
color: rgb(255, 255, 255);
cursor: pointer;
float: right;
padding: 13px;
}
.mobile-main-menu.opened{
right: 0px!important;
}
.mobile-main-menu ul li a, .mobile-main-menu ul li span {
display: inline-block;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
padding: 10px 0px;
width: 80%;
width: calc(100% - 40px);
}
.mobile-main-menu .sidebar-nav li ul {
height: 0px;
overflow: hidden;
list-style: none;
color: rgb(255, 255, 255);
padding-left: 10px;
}
.mobile-main-menu .sidebar-nav li.sub_open > ul{
height: 100%;
}
.mobile-main-menu ul.sidebar-nav {
position: absolute;
width: 250px;
margin: 0;
padding: 0;
list-style: none;
font-size: 14px;
}
.mobile-main-menu .sidebar-nav > li {
display: block;
line-height: 20px;
padding: 0 15px 0 20px;
}
.mobile-main-menu .sidebar-nav li a, .mobile-main-menu .sidebar-nav li span {
text-decoration: none;
color: rgb(255, 255, 255);
padding-left:10px;
}
.mobile-main-menu .sidebar-nav li a i, .mobile-main-menu .sidebar-nav li span i {
display: none;
}
</style><div class="mobile-main-menu">
<ul class="sidebar-nav">
<li class=''><a href='/home' id='link1'>Home</a></li><li class=''><a href='/join' id='link186'>List Your FSBO</a></li><li class=''><a href='/search_results' id='link227'>Find A FSBO</a></li><li class=''><a href='/events' id='link230'>Open Houses</a></li><li class=''><a href='/blog' id='link231'>Real Estate Tips</a></li><li class=''><a href='/about' id='link189'>How It Works</a></li><li class=''><a href='/properties' id='link232'>Properties</a></li> </ul>
</div>
<nav class="navbar navbar-default ">
<div class="container container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed main_menu" data-toggle="collapse" aria-label="main_menu">
<i class="fa fa-bars fa-fw"></i>
</button>
</div>
<div class="tablet-menu collapse navbar-collapse nopad" id="bs-main_menu">
<ul class="tablet-menu-ul nav navbar-nav nav-justified">
<li class=''><a href='/home' id='link1'>Home</a></li><li class=''><a href='/join' id='link186'>List Your FSBO</a></li><li class=''><a href='/search_results' id='link227'>Find A FSBO</a></li><li class=''><a href='/events' id='link230'>Open Houses</a></li><li class=''><a href='/blog' id='link231'>Real Estate Tips</a></li><li class=''><a href='/about' id='link189'>How It Works</a></li><li class=''><a href='/properties' id='link232'>Properties</a></li> </ul>
</div>
</div>
</nav>
<!--CSS IF MENU IS FIXED TOP-->
</div>
<div class="clearfix"></div>
<!-- Begin Content -->
<main role="main" id="main-content">
<div id="first_container" class="content-container fr-view">
<div class="container">
<ol class='breadcrumb' itemscope itemtype='https://schema.org/BreadcrumbList'><li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a itemtype='https://schema.org/Thing' itemprop='item' href='https://helpsellmyfsbo.com' title='HELP Sell My FSBO'><span itemprop='name'>Home</span><meta itemprop='position' content='1' /></a></li><li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a itemtype="https://schema.org/Thing" itemprop="item" href="/blog" title="Blog"><span itemprop="name">Blog</span><meta itemprop="position" content="2" /></a></li><li class='breadcrumb-current'><span>VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority</span></li></ol> <div class="clearfix body-content"></div>
<div class="row content_w_sidebar feature-post feature-blog">
<div class='col-md-8 post-detail-body page-body'><div class="col-lg-12 font-sm bpad nohpad">
<style type='text/css'> .print-btn {
font-weight: 700;
margin-left: 5px;
padding: 0 6px;
font-size: 11px;
letter-spacing: .5px;
height: 24px;
border-radius: 8px;
line-height: 22px;
border: none;
}
.print-btn i {
font-size: 12px;
} </style><a class="btn btn-default btn-sm pull-right print-btn hidden-xs" href="?printpage=yes" target="_blank" rel="nofollow noopener">
<i class="fa fa-print"></i> Print
</a>
Posted By
<a href="/pro/20241127052932" title="Posted By: "> </a>
on 11/27/2024 </div>
<h1>VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority</h1>
<img style="max-width:50%;" class="img-rounded pull-right lmargin bmargin xs-center-block xs-nomargin" alt="VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority" title="VISA FOR GREEK CITIZENS CANADA Tourist and Business Visa Electronic Travel Authority from Immigration and Government Office of Canada Visa Application from the Government of Canada Visa Application Center for electronic electronic eVisa Travel Authority" src="/uploads/news-pictures/69190--blog-post-image-20241127055101.webp" />
<p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";' id="isPasted"><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Address :</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style='font-family:"Calibri","sans-serif";'>Mitropoleos 19, Thessaloniki 546 24, Greece</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style='font-family:"Calibri","sans-serif";'>Phone</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">+30 231 037 3322</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><span style="font-family:Calibri;">Mail:</span></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;"><a href="mailto:info@indiavisa-online.org"><span style="font-family:Calibri;">info@indiavisa-online.org</span></a></span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Website:</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;"><a href="https://www.visa-indian-online.org/el/visa"><span style="font-family:Calibri;">https://www.visa-indian-online.org/el/visa</span></a></span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Category:</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Travel visa</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Description :</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style='font-family:"Angsana New";color:black;'>Από το 2014, η ινδική κυβέρνηση εξομαλύνει τις εγκρίσεις για τις θεωρήσεις με την παρουσίαση του πλαισίου eVisa. Στην αρχή προσβάσιμη σε έναν καθορισμένο αριθμό εθνών, η διοίκηση της eVisa βρίσκεται επί του παρόντος στα βόρεια των 172 ταυτοτήτων. Υπάρχουν πέντε είδη ινδικών eVisas, Visit, Business, Family, Medical και Medical Chaperon. Η ολοκλήρωση της εφαρμογής που βασίζεται στο Διαδίκτυο απαιτεί μόνο 2 λεπτά και όποτε γίνεται η δόση, μπορείτε να ελπίζετε ότι θα αποδεχτείτε την eVisa σας μέσω email σε 72 ώρες ή λιγότερο. Τόσο για τις ινδικές επαγγελματικές όσο και τις ταξιδιωτικές βίζες, δεν απαιτείται σφραγίδα βίζας ή αυτοκόλλητο στην ταυτότητά σας. Μπορείτε να κατευθυνθείτε αμέσως σε έναν αεροσταθμό ή θαλάσσιο λιμάνι για να εισέλθετε στην Ινδία. Οι υπάλληλοι μετανάστευσης στη χώρα καταγωγής σας θα θέλουν πραγματικά να ελέγξουν ηλεκτρονικά την eVisa σας. Αυτή η αλληλεπίδραση είναι η πιο συμφέρουσα μέθοδος για να επισκεφθείτε την Ινδία. Σε περίπτωση που αναμένεται να μεταφέρετε μια φωτογραφία του προσώπου σας ή της σελίδας ταυτότητάς σας, ωστόσο αντιμετωπίζετε δυσκολίες, μπορείτε να στείλετε email στα αρχεία μέσω της φόρμας του ιστότοπου στον ιστότοπό μας και το ανταποκρινόμενο προσωπικό μας θα σας βοηθήσει σε 24 ώρες ή λιγότερο. Η eVisa είναι ιδανική για διαμονές έως και μισού έτους. Απλώς κρατήστε ένα email ή μια εκτύπωση του email έγκρισης eVisa στο τηλέφωνό σας ή σε μια έντυπη παραλλαγή. Αυτή η βοήθεια είναι προσβάσιμη σε κατοίκους βορείων χωρών 172 εθνικοτήτων. Τουριστικά, ιατρικά, συνέδρια, επιχειρήσεις, σεμινάρια, συναντήσεις, εμπορικές εκθέσεις επιτρέπονται όλα στην ινδική eVisa. Starting 2014, the Indian government has smoothed out visa endorsements with the presentation of the eVisa framework. At first accessible to a set number of nations, the eVisa administration is currently reached out to north of 172 identities. There are five kinds of Indian eVisas, Visit, Business, Family, Medical, and Medical Chaperon. Finishing the internet based application requires only 2 minutes, and whenever installment is made, you can hope to accept your eVisa by email in 72 hours or less. For both Indian Business and Traveler Visas, there is no requirement for a visa stamp or sticker in your identification. You can straightforwardly head out to an air terminal or seaport to enter India. Migration officials in your nation of origin will actually want to electronically check your eVisa. This interaction is the most advantageous method for visiting India. On the off chance that you are expected to transfer a photograph of your face or identification page however experience hardships, you can email the records by means of the website form on our site, and our responsive staff will help you in 24 hours or less. The eVisa is great for stays of as long as a half year. Just keep a email or printout of your eVisa endorsement email on your telephone or a printed variant. This assistance is accessible to residents of north of 172 nationalities. Tourist, Medical, Conference, Business, Seminars, Meetings, Trade Fairs are all allowed on Indian eVisa.</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><span style='font-family:"Times New Roman";'>Keywords:</span></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><span style='font-family:"Angsana New";'>ινδική βίζα, βίζα για την Ινδία, evisa Ινδία, india evisa, ινδική βίζα online, αίτηση για ινδική βίζα, ηλεκτρονική αίτηση για βίζα για Ινδία, ηλεκτρονική αίτηση για ινδική βίζα, αίτηση για ινδική βίζα στο διαδίκτυο, αίτηση για ινδική βίζα online, evisa india, india evisa, επιχειρηματική βίζα για την Ινδία , ιατρική βίζα για την Ινδία, τουριστική βίζα για την Ινδία, βίζα για την Ινδία, ινδική βίζα, βίζα για την Ινδία στο διαδίκτυο, επείγουσα βίζα για την Ινδία, ινδική βίζα κατά την άφιξη, απαιτήσεις για ινδική βίζα indian visa, visa for india, evisa india, india evisa, indian visa online, indian visa application, india visa online application, indian visa online application, india visa application online, indian visa application online, evisa india, india evisa, india business visa, india medical visa, india tourist visa, india visa, indian visa, india visa online, urgent indian visa, indian visa on arrival, indian visa requirements</span></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Hours:</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">24/7</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;background:white;">Owner Name: </span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;">Carlos Funata Gayatri</span></em></p><p style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in;line-height:115%;font-size:15px;font-family:"Calibri","sans-serif";'><em style='font-family:"Times New Roman","serif";'><span style="font-family:Calibri;color:black;"> </span></em></p><div class="clearfix"></div> </div><!-- ENDS <div class="col-lg-12"> -->
<div class="col-sm-12 col-md-4 post-detail-sidebar sidebar-section"> <table class="table module">
<tbody>
<tr class="contact_member_button">
<td colspan=2>
<div class="modal fade" id="contactModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form" id="bootstrap_get_match_255" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div return_data_type="" name="bootstrap_get_match_255" class=" "><input type="hidden" name="sized" value="0" id="bootstrap_get_match_255-element-0"/><input type="hidden" name="form" value="myform" id="bootstrap_get_match_255-element-1"/><input type="hidden" name="formname" value="bootstrap_get_match" id="bootstrap_get_match_255-element-2"/><input type="hidden" name="dowiz" value="1" id="bootstrap_get_match_255-element-3"/><input type="hidden" name="save" value="1" id="bootstrap_get_match_255-element-4"/><input type="hidden" name="url_origin_pars" value="/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author" id="bootstrap_get_match_255-element-5"/> <style>
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group .checkbox label, form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group .radio label, form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group label.checkbox, form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group label.radio{
display: inline-block;
margin-right: 15px;
}
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group label {
display: none;
}
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group label.btn{
display: block;
}
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group div.bootstrap-filestyle ,
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group div.bootstrap-filestyle label.btn{
width: 100%;
}
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group div.bootstrap-filestyle span.group-span-filestyle:nth-child(2) {
margin: 0px !important;
}
form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] .form-group div.bootstrap-filestyle span.group-span-filestyle:nth-child(2) label.btn {
margin-top: 10px;
}
</style>
<script>
$(document).ready(function(){
$('form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] input, form[action="/api/widget/json/get/Bootstrap%20Theme%20-%20Function%20-%20Save%20Form"] select').each(function(){
if($(this).parents('.form-group').find('.required:hidden').length > 0){
let placeholderAttr = $(this).attr('placeholder');
let optionRequired = $(this).find('option[value=""]').html();
if (typeof placeholderAttr !== 'undefined' && placeholderAttr.indexOf(`(Required)`) < 1) {
$(this).attr('placeholder', $(this).attr('placeholder') + ` (Required)`);
}
if (typeof optionRequired !== 'undefined' && optionRequired.indexOf(`(Required)`) < 1) {
$(this).find('option[value=""]').html($(this).find('option[value=""]').html() + ` (Required)`);
}
}
})
})
</script> <h3 class="nomargin">
Contact <span class='inline-block'> </span>
</h3>
<hr>
<div class="form-group"><label class="vertical-label bd-text" for="bootstrap_get_match_255-element-8">Name</label><input type="text" name="lead_name" placeholder="Enter Name" autocomplete="off" value class="form-control control-group form-control " id="bootstrap_get_match_255-element-8"/></div><div class="form-group"><label class="vertical-label bd-email" for="bootstrap_get_match_255-element-9"><span class="required">* </span>Email</label><input type="email" name="lead_email" required placeholder="Enter Email" autocomplete="off" value class="form-control control-group form-control " id="bootstrap_get_match_255-element-9"/></div><div class="form-group"><label class="vertical-label bd-text" for="bootstrap_get_match_255-element-10">Phone Number</label><input type="text" name="lead_phone" placeholder="Enter Phone" autocomplete="off" value class="form-control control-group form-control " id="bootstrap_get_match_255-element-10"/></div><div class="form-group">
<label class="vertical-label" for="myform-element-1543">
Preferred Reply Day
</label>
<select aria-label="Preferred Reply Day" name="lead_preferred_day" autocomplete="off" class="form-control control-group " id="myform-element-1543">
<option value="">Preferred Reply Day</option>
<option value="As soon as possible">As soon as possible</option>
<option value="Sunday">Sunday</option>
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
<option value="Wednesday">Wednesday</option>
<option value="Thursday">Thursday</option>
<option value="Friday">Friday</option>
<option value="Saturday">Saturday</option>
?>
</select>
</div>
<div class="form-group">
<label class="vertical-label" for="myform-element-1654">
Preferred Reply Time</label>
<select aria-label="Preferred Reply Time" name="lead_preferred_time" autocomplete="off" class="form-control control-group " id="myform-element-1654">
<option value="">Preferred Reply Time</option>
<option value="As soon as possible">As soon as possible</option>
<option value="12:00 am">12:00 am</option>
<option value="1:00 am">1:00 am</option>
<option value="2:00 am">2:00 am</option>
<option value="3:00 am">3:00 am</option>
<option value="4:00 am">4:00 am</option>
<option value="5:00 am">5:00 am</option>
<option value="6:00 am">6:00 am</option>
<option value="7:00 am">7:00 am</option>
<option value="8:00 am">8:00 am</option>
<option value="9:00 am">9:00 am</option>
<option value="10:00 am">10:00 am</option>
<option value="11:00 am">11:00 am</option>
<option value="12:00 pm">12:00 pm</option>
<option value="1:00 pm">1:00 pm</option>
<option value="2:00 pm">2:00 pm</option>
<option value="3:00 pm">3:00 pm</option>
<option value="4:00 pm">4:00 pm</option>
<option value="5:00 pm">5:00 pm</option>
<option value="6:00 pm">6:00 pm</option>
<option value="7:00 pm">7:00 pm</option>
<option value="8:00 pm">8:00 pm</option>
<option value="9:00 pm">9:00 pm</option>
<option value="10:00 pm">10:00 pm</option>
<option value="11:00 pm">11:00 pm</option>
</select>
</div>
<style type='text/css'> #map-canvas-contact-sidebar {
display: block;
width: 100%;
height: 250px;
float: right;
}
label.fill-location-check {
display: block;
width: 100%;
float: left;
margin: 6px 0 6px 9%;
}
#myform .google-writen-location {
float: right;
}
#map-canvas-contact-sidebar {
border-radius: 4px;
}
.pac-container {
z-index: 1551;
} </style> <input type="hidden" name="utoken" value="69190">
<span class="location_status" id="location_status" data-state="only_input"></span>
<span class="location_required" id="location_required" data-state="0"></span>
<div class="form-group" style="overflow: auto;">
<label for="myform-element-8">Location</label>
<input id="pac-input" fv-notEmpty-message="Required Field" form-id="bootstrap_get_match_255" class="controls google-writen-location form-control " value="" type="text" name="lead_location" placeholder="City or Post Code" autocomplete="off">
<input type="hidden" name="lat" value="">
<input type="hidden" name="lng" value="">
<input type="hidden" name="swlat" value="">
<input type="hidden" name="swlng" value="">
<input type="hidden" name="nelat" value="">
<input type="hidden" name="nelng" value="">
<input type="hidden" name="location_type" value="">
<input type="hidden" name="country_sn" value="">
<input type="hidden" name="county_sn" value="">
<input type="hidden" name="adm_lvl_1_sn" value="">
<input type="hidden" name="city" value="">
<input type="hidden" name="faddress" value="">
</div>
<div class="form-group"><label class="vertical-label bd-" for="bootstrap_get_match_255-element-15">Message</label><textarea rows="4" name="lead_message" placeholder="Write a message here..." autocomplete="off" class="form-control control-group form-control" id="bootstrap_get_match_255-element-15"></textarea></div><input type="hidden" name="url_from" value="/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author">
<input type="hidden" name="checkPageType" value="data_post">
<div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="bootstrap_get_match_255-element-20"/></div><div class="form-group"><div class="form-group security_question_label">
<div id="bootstrap_get_match_255-captchaContainer" class="control-group">
<div class="g-recaptcha" id="bootstrap_get_match_255-google-recaptcha"></div>
</div>
<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>
<div class="clearfix bmargin"></div>
<input type="hidden" name="recaptcha" id="bootstrap_get_match_255-rcap">
</div>
<style>
.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 {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
.modal #bootstrap_get_match_255-captchaContainer, .col-md-4 #bootstrap_get_match_255-captchaContainer, .col-md-3 #bootstrap_get_match_255-captchaContainer, .col-lg-3 #bootstrap_get_match_255-captchaContainer, .col-lg-4 #bootstrap_get_match_255-captchaContainer {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
</style>
<script type="text/javascript">
if(typeof formsFound == "undefined"){
var formID = '';
var currentCaptcha = {};
var captchaHolders = {};
var formsFound = {};
var captchaApiRequested = false;
/* The forms the visitor has actually interacted with - only these get a widget. */
var captchaArmedForms = [];
/* api.js stays lazy - nothing is fetched from Google until the visitor actually
touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
and presses Enter without ever clicking, so api.js never loaded, the captcha
never rendered, and the form POSTed an empty token. */
var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart'];
window.addEventListener('load', () => {
formID = document.querySelectorAll('[name="recaptcha"]');
if (typeof formID != "undefined" && formID !== null) {
for (let i = 0; i < formID.length; i++) {
let formIDForm = formID[i].closest('form');
let captchaHolder = formIDForm.querySelector(".g-recaptcha");
if (typeof formsFound[formIDForm.id] != "undefined") {
formsFound[formIDForm.id]['counter']++;
}else{
formsFound[formIDForm.id] = {'counter' : 1};
}
formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
if (typeof formIDForm != "undefined" && formIDForm !== null) {
captchaTriggerEvents.forEach( evt =>
formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
);
}
}
}
});
}
function reCaptchaOnFormInteraction(event) {
if (event && event.currentTarget) {
captchaArmForm(event.currentTarget);
}
if (captchaApiRequested) {
renderArmedCaptchas();
return;
}
captchaApiRequested = true;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
head.appendChild(script);
}
var captchaArmForm = function (formEl) {
if (!formEl) {
return;
}
for (var a = 0; a < captchaArmedForms.length; a++) {
if (captchaArmedForms[a] === formEl) {
return;
}
}
captchaArmedForms.push(formEl);
};
var captchaSolvedCallback = function (holder) {
return function () {
var formEl = holder.closest('form');
if (!formEl) {
return;
}
$(formEl).find('.security_question_label').removeClass('has-error');
$(formEl).find('#recaptcha_error').css('display', 'none');
var notification = document.getElementById(formEl.id + '-notification');
if (notification && notification.classList.contains('alert-danger-subtle')) {
$(notification).slideUp();
}
};
};
var renderArmedCaptchas = function () {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
return;
}
for (var f = 0; f < captchaArmedForms.length; f++) {
var holder = captchaArmedForms[f].querySelector('div[class=g-recaptcha]');
if (!holder || !holder.id || holder.getClientRects().length === 0) {
continue;
}
/* Guard a second render: grecaptcha throws on an element it already claimed. */
if (typeof captchaHolders[holder.id] === "undefined") {
captchaHolders[holder.id] = grecaptcha.render(holder.id, {
'sitekey': '6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_',
'callback': captchaSolvedCallback(holder)
});
}
}
};
var onloadCallback = function (event) {
renderArmedCaptchas();
};
</script>
<script>
$(document).ready(function(){
/* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
the submit button, so the click guard below never sees it and the form POSTed an
empty token. Bound on document/capture so it runs before FormValidation's own
handler on the form - at AT_TARGET the capture flag does not order listeners, so a
listener on the form itself would not reliably win. Native HTMLFormElement.submit()
does not dispatch 'submit', so the solved-captcha path below is unaffected. */
var captchaGuardedForm = document.getElementById('bootstrap_get_match_255');
if (captchaGuardedForm) {
document.addEventListener('submit', function (event) {
if (event.target !== captchaGuardedForm) {
return;
}
var formId = captchaGuardedForm.id;
var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined";
if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
return;
}
/* Unsolved, or api.js still in flight: either way there is no token to send. */
event.preventDefault();
event.stopImmediatePropagation();
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}, true);
}
$("#bootstrap_get_match_255 input[type=submit]").unbind('click');
$("#bootstrap_get_match_255 input[type=submit]").click(function (event) {
var formId = $(this.form).attr('id');
var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
if (typeof captchaHolders[captchaHolderKey] != "undefined") {
if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
event.preventDefault();
$("#" + formId).formValidation('validate');
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}
/* Solved captcha: clear the error UI and let the click proceed untouched.
The browser then fires a REAL, button-initiated submit event, so
FormValidation runs its normal chain (success.form.fv -> AJAX modal on
checkout / native POST on login). Re-submitting here artificially broke
both ways: native form.submit() skips the FV chain (checkout rendered the
raw JSON response), and jQuery .submit() fires a synthetic submit that FV
refuses, leaving the form stuck after the first error (Bug 2). */
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
}
});
});
</script></div><div class="form-actions"><input type="submit" value="Send Message" name class="btn btn-primary btn-block btn-lg btn-get-matched-submit " id="bootstrap_get_match_255-element-22"/></div></form><script type="text/javascript">jQuery(document).ready(function() { jQuery("#bootstrap_get_match_255").bind("submit", function() {
});}); </script> <br><br>
</div>
</div>
</div>
</div>
</div>
</div>
<a data-toggle="modal" data-target="#contactModal" class="btn btn-success btn-lg btn-block"><i class="fa fa-envelope fa-fw"></i> Contact Member</a>
</td>
</tr>
</tbody>
</table>
<div class="modal fade" id="sidebarlocationModal" tabindex="-1" role="dialog" aria-labelledby="sidebarlocationModal" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Map View</h4>
</div>
<div class="modal-body" style="height: 350px;">
<div id="sidebar-map-canvas"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
<style>
#sidebar-map-canvas {
height: 100%;
margin-bottom: 5px;
width: 100%;
}
</style><style type='text/css'> .social_share_buttons .social-buttons-container {
display: flex;
justify-content: space-evenly;
gap: 4px;
flex-wrap: wrap;
}
.col-md-4 .social_share_buttons .social-buttons-container {
justify-content: flex-start;
gap: 12px;
}
.social_share_buttons .social-share-btn {
display: inline-flex;
align-items: center;
gap: 4px;
cursor: pointer;
transition: opacity 0.2s ease;
padding:4px 8px;
}
.social_share_buttons .social-share-btn:hover {
opacity: 0.85;
text-decoration: none;
}
.social_share_buttons .facebook-btn {
background: #1877f2;
color: #fff !important;
}
.social_share_buttons .twitter-btn {
background: #000000;
color: #fff !important;
}
.social_share_buttons .linkedin-btn {
background: #0a66c2;
color: #fff !important;
}
.col-md-3 .social_share_buttons .twitter-btn span, .col-md-3 .social_share_buttons .copy-link-btn span {
display: none;
}
.col-md-3 .social_share_buttons span {
display:none;
}
</style><aside>
<div class="module social_share_buttons">
<h2 class="nomargin">
<i class="bi bi-share fa-fw"></i> Share This Page
</h2>
<hr>
<div class="social-buttons-container">
<button type="button" onclick="openShareWindow('facebook')" class="btn btn-sm social-share-btn facebook-btn" aria-label="Facebook">
<i class="bi bi-facebook" aria-hidden="true"></i>
<span>Facebook</span>
</button>
<button type="button" onclick="openShareWindow('linkedin')" class="btn btn-sm social-share-btn linkedin-btn" aria-label="LinkedIn">
<i class="bi bi-linkedin" aria-hidden="true"></i>
<span>LinkedIn</span>
</button>
<button type="button" onclick="openShareWindow('twitter')" class="btn btn-sm social-share-btn twitter-btn" aria-label="X.com">
<i class="bi bi-twitter-x" aria-hidden="true"></i>
<span>.com</span>
</button>
<button type="button" onclick="copyShareLink(this)" class="btn btn-sm btn-secondary social-share-btn copy-link-btn" aria-label="Copy">
<i class="bi bi-link-45deg" aria-hidden="true"></i>
</button>
</div>
</div>
</aside> </div>
</div> <!-- <div class="col-md-8"> -->
<div class="clearfix"></div>
</div>
</div>
</main>
<!-- End Content -->
<div class="clearfix footer-clear-element clearfix-lg"></div>
<style type='text/css'> .newsletter_row input[type="email"] {
float: none;
margin-left: auto;
margin-right: auto;
width: 62% !important;
} </style><div class="content-container newsletter_row">
<div class="container text-center vpad">
<div class="col-md-12 xs-nopad">
<style type='text/css'> @media only screen and (min-width: 768px) {
.newsletter_footer_button {
display: flex;
align-items: center;
margin-left: auto;
margin-right: auto;
}
} </style><a href="#" data-toggle="modal" data-target="#newsletter_subscribe_modal" class="btn btn-lg newsletter_footer_button col-xs-12 col-md-6 nofloat fpad bold">
<div class="col-sm-6 nopad newsletter_button_left">
Join Our Newsletter - Today
</div>
<div class="col-sm-6 nopad newsletter_button_right">
Click to Subscribe
<i class='fa fa-chevron-circle-right fa-fw'></i>
</div>
<div class="clearfix"></div>
</a>
</div>
</div>
</div><div class="footer">
<div class="container">
<div class="row">
<ul class="footer_menu sm-text-center">
<li class='col-md-5'><span id='link157' class='head'> About</span><ul><li class=''><span id='link158' class='content'> Finding FSBOs is easy by searching our trusted network of top-rated FSBOs.</span></li></ul></li><li class='col-md-2 col-md-offset-1'><span id='link159' class='head'> Website</span><ul><li class=''><a href='/about' id='link160'>How It Works</a></li><li class=''><a href='/join' id='link161'>List Your Property</a></li></ul></li><li class='col-md-2'><span id='link162' class='head'> Search</span><ul><li class=''><a href='/' id='link163'>Find Properties</a></li><li class=''><a href='/search_results' id='link164'>Find an Agent</a></li></ul></li><li class='col-md-2'><span id='link165' class='head'> Support</span><ul><li class=''><a href='/login/retrieval' id='link166'>Password Retrieval</a></li><li class=''><a href='/about/contact' id='link167'>Contact Us</a></li></ul></li><li class='col-md-12'><span id='link226'> </span></li><li class='col-md-5 vpad vmargin sm-text-center'><span id='link211'> <style>.network-icon.twitter,.network-icon.tiktok{background:#000}</style>
<div class="list-social-links">
<a class="network-icon contact" href="/about/contact" title="Contact Us HELP Sell My FSBO">
<i class="bi bi-envelope"></i>
</a>
<div class="clearfix"></div>
</div></span></li><li class='col-md-6 col-md-offset-1 vpad vmargin'><a href='/join' id='link212' class='btn btn_footer_get_listed btn-lg btn-block bold center sm-block' style='white-space:normal'>FSBOs - Join Our Website Today »</a></li> </ul>
</div>
<div class="col-md-12 fpad fmargin small text-center footer_terms">
© 2026 <a title="HELP Sell My FSBO" href="/">
HELP Sell My FSBO </a>
All Rights Reserved.
<div class="inline-block">
<a title="Terms of Use - HELP Sell My FSBO" href="/about/terms">
Terms of Use
</a>
|
<a title="Privacy Policy - HELP Sell My FSBO" href="/about/privacy">
Privacy Policy
</a>
</div>
</div>
</div>
</div><style type='text/css'> .scrollup {
border-radius: 3px;
width: 40px;
height: 40px;
opacity: 0.4;
position: fixed;
bottom: 30px;
right: 30px;
display: none;
background: rgba(119, 119, 119, 0.8);
z-index: 1000000;
}
.scrollup i {
font-size: 36px;
color: white;
position: relative;
top: 0px;
left: 10px;
} </style> <div class="myModal modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"
data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body nohpad nobpad">
<button type="button" style="z-index:10;position:absolute;right:15px;" class="close hmargin"
data-dismiss="modal">×
</button>
<style>
.member-login-container:not(.modal .module) {
width: 555px;
max-width: 100%;
margin-left: auto;
margin-right: auto;
margin-bottom:0;
background-color: rgb(255, 255, 255)!important;
border-color: rgb(247, 247, 247)!important;
color: rgb(41, 41, 41)!important;
}
.login-register-tabs, .login-register-content {
width: 555px!important;
max-width: 100%;
margin-left: auto!important;
margin-right: auto!important;
background-color: rgb(247, 247, 247);
}
.login-register-content {
background: transparent;
padding: 0;
border: none;
}
.login-register-content h2, .login-register-content h2+hr, .login-register-content .account-menu-title {
display: none!important;
}
.express_login_create_account_prefix hr {
margin: 15px 0 10px;
}
.modal-content #containerFBLogin, .modal-content #containerGoogleLogin {
margin:15px 0;
}
/* CSS When Login Form and Express Registration Rendered in Sidebar */
.col-md-3 .bd-chat-well-container,.col-md-4 .bd-chat-well-container {
padding: 15px 10px;
}
.col-md-3 .bd-chat-center-text,.col-md-4 .bd-chat-center-text {
margin: 0;
font-size: 20px;
padding: 0 15px;
}
.col-md-3 .member-login-page-container .login-register-tabs *, .col-md-4 .member-login-page-container .login-register-tabs * {
font-size: 12px;
line-height: 1.2em;
vertical-align: bottom;
}
.col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
padding: 5px !important;
height: 50px;
vertical-align: middle;
display: table-cell !important;
width: 1%;
}
.col-md-3 .member-login-page-container .login-register-content, .col-md-4 .member-login-page-container .login-register-content {
padding: 0;
}
.col-md-3 .member-login-container, .col-md-4 .member-login-container {
padding: 15px !important;
font-size: 13px;
}
.col-md-3 .member-login-page-container .input-lg, .col-md-4 .member-login-page-container .input-lg {
height: 34px;
padding: 6px 12px;
font-size: 14px;
}
.col-md-3 .member-login-page-container .security_question_label, .col-md-4 .member-login-page-container .security_question_label {
transform: scale(.85);
margin: -1.15em -1.15em 0;
}
.col-md-3 #containerFBLogin, .col-md-4 #containerFBLogin, .col-md-3 #containerGoogleLogin, .col-md-4 #containerGoogleLogin, .col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
width: 100%;
display: block;
margin-top:5px;
}
.col-md-3 .login-cta-buttons li, .col-md-4 .login-cta-buttons li {
padding:0
}
.col-md-3 .login-cta-buttons ul.nav, .col-md-4 .login-cta-buttons ul.nav {
margin-top: -10px;
}
.col-md-3 #googleAction, .col-md-3 #facebookAction, .col-md-4 #googleAction, .col-md-4 #facebookAction {
padding: 0;
min-height: 0;
font-size: 14px;
margin: 0;
}
.col-md-3 #googleAction img, .col-md-3 #facebookAction img, .col-md-4 #googleAction img, .col-md-4 #facebookAction img {
height: 36px !important;
margin-right: 5px;
position: relative!important;
display: inline-block;
}
@media only screen and (max-width: 767px) {
.col-md-3 .member-login-page-container .login-register-tabs a, .col-md-4 .member-login-page-container .login-register-tabs a {
display: block !important;
width: 100%;
line-height: 40px;
}
#containerGoogleLogin {
text-align: center;
margin-top: 10px;
}
#containerGoogleLogin #gBtn {
display: inline-block;
}
}
</style>
<div class="row member-login-page-container">
<div class="fpad-lg novpad">
<div class="module fpad-xl member-login-container">
<style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" id="member_login_190-1" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="redirect" form_action_div return_data_type="" name="member_login_190-1" class=" "><input type="hidden" name="sized" value="0" id="member_login_190-1-element-0"/><input type="hidden" name="form" value="myform" id="member_login_190-1-element-1"/><input type="hidden" name="formname" value="member_login" id="member_login_190-1-element-2"/><input type="hidden" name="dowiz" value="1" id="member_login_190-1-element-3"/><input type="hidden" name="save" value="1" id="member_login_190-1-element-4"/><input type="hidden" name="url_origin_pars" value="/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author" id="member_login_190-1-element-5"/><input type="hidden" name="action" autocomplete="off" value="login" id="member_login_190-1-element-6"/><h2 class="nomargin member-login-h2-form-title">Member Login</h2><hr><style type='text/css'> #containerGoogleLogin #gBtn {
display: inline-block;
text-align: center;
width: 216px;
}
.module #containerFBLogin #facebookAction img, .module #containerFBLogin #facebookAction img {
position: absolute !important;
}
.module #containerFBLogin a#facebookAction {
max-width: 200px;
position: relative;
left: -8px;
} </style><div class="form-group"><label class="vertical-label bd-email" for="member_login_190-1-element-9"><span class="required">* </span>Email Address</label><input type="email" name="email" required placeholder="name@yoursite.com" autocomplete="off" value class="form-control input-lg" id="member_login_190-1-element-9"/></div><div class="form-group"><label class="vertical-label bd-password" for="member_login_190-1-element-10"><span class="required">* </span>Password</label>
<style>
#togglePassword {
background: none;
border: none;
cursor: pointer;
font-weight: bold;
font-size: .85em;
position: absolute;
right: 5px;
top: 0;
}
</style><button type="button" tabindex="-1" id="togglePassword" onclick="showPassword(this);"> <i class="fa fa-lock" aria-hidden="true"></i></button>
<script>
function showPassword(node){
const parent = node.closest('.form-group');
const passwordField = parent.querySelector(`input[type='password'], input[type='text']`);
const isPassword = passwordField.getAttribute('type') === 'password';
passwordField.setAttribute('type', isPassword ? 'text' : 'password');
const iconHTML = isPassword ? `<i class="fa fa-unlock" aria-hidden="true"></i>` : `<i class="fa fa-lock" aria-hidden="true"></i>`;
node.innerHTML = iconHTML;
}
</script><input type="password" name="pass" required placeholder="Enter Password" autocomplete="off" value class="form-control input-lg" id="member_login_190-1-element-10"/></div><span class="help-block bpad bmargin notmargin"> <a href="/login/retrieval">Forgot Password? Click to Reset Password</a></span><div class="form-group"><div class="form-group security_question_label">
<div id="member_login_190-1-captchaContainer" class="control-group">
<div class="g-recaptcha" id="member_login_190-1-google-recaptcha"></div>
</div>
<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>
<div class="clearfix bmargin"></div>
<input type="hidden" name="recaptcha" id="member_login_190-1-rcap">
</div>
<style>
.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 {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
.modal #member_login_190-1-captchaContainer, .col-md-4 #member_login_190-1-captchaContainer, .col-md-3 #member_login_190-1-captchaContainer, .col-lg-3 #member_login_190-1-captchaContainer, .col-lg-4 #member_login_190-1-captchaContainer {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
</style>
<script type="text/javascript">
if(typeof formsFound == "undefined"){
var formID = '';
var currentCaptcha = {};
var captchaHolders = {};
var formsFound = {};
var captchaApiRequested = false;
/* The forms the visitor has actually interacted with - only these get a widget. */
var captchaArmedForms = [];
/* api.js stays lazy - nothing is fetched from Google until the visitor actually
touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
and presses Enter without ever clicking, so api.js never loaded, the captcha
never rendered, and the form POSTed an empty token. */
var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart'];
window.addEventListener('load', () => {
formID = document.querySelectorAll('[name="recaptcha"]');
if (typeof formID != "undefined" && formID !== null) {
for (let i = 0; i < formID.length; i++) {
let formIDForm = formID[i].closest('form');
let captchaHolder = formIDForm.querySelector(".g-recaptcha");
if (typeof formsFound[formIDForm.id] != "undefined") {
formsFound[formIDForm.id]['counter']++;
}else{
formsFound[formIDForm.id] = {'counter' : 1};
}
formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
if (typeof formIDForm != "undefined" && formIDForm !== null) {
captchaTriggerEvents.forEach( evt =>
formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
);
}
}
}
});
}
function reCaptchaOnFormInteraction(event) {
if (event && event.currentTarget) {
captchaArmForm(event.currentTarget);
}
if (captchaApiRequested) {
renderArmedCaptchas();
return;
}
captchaApiRequested = true;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
head.appendChild(script);
}
var captchaArmForm = function (formEl) {
if (!formEl) {
return;
}
for (var a = 0; a < captchaArmedForms.length; a++) {
if (captchaArmedForms[a] === formEl) {
return;
}
}
captchaArmedForms.push(formEl);
};
var captchaSolvedCallback = function (holder) {
return function () {
var formEl = holder.closest('form');
if (!formEl) {
return;
}
$(formEl).find('.security_question_label').removeClass('has-error');
$(formEl).find('#recaptcha_error').css('display', 'none');
var notification = document.getElementById(formEl.id + '-notification');
if (notification && notification.classList.contains('alert-danger-subtle')) {
$(notification).slideUp();
}
};
};
var renderArmedCaptchas = function () {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
return;
}
for (var f = 0; f < captchaArmedForms.length; f++) {
var holder = captchaArmedForms[f].querySelector('div[class=g-recaptcha]');
if (!holder || !holder.id || holder.getClientRects().length === 0) {
continue;
}
/* Guard a second render: grecaptcha throws on an element it already claimed. */
if (typeof captchaHolders[holder.id] === "undefined") {
captchaHolders[holder.id] = grecaptcha.render(holder.id, {
'sitekey': '6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_',
'callback': captchaSolvedCallback(holder)
});
}
}
};
var onloadCallback = function (event) {
renderArmedCaptchas();
};
</script>
<script>
$(document).ready(function(){
/* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
the submit button, so the click guard below never sees it and the form POSTed an
empty token. Bound on document/capture so it runs before FormValidation's own
handler on the form - at AT_TARGET the capture flag does not order listeners, so a
listener on the form itself would not reliably win. Native HTMLFormElement.submit()
does not dispatch 'submit', so the solved-captcha path below is unaffected. */
var captchaGuardedForm = document.getElementById('member_login_190-1');
if (captchaGuardedForm) {
document.addEventListener('submit', function (event) {
if (event.target !== captchaGuardedForm) {
return;
}
var formId = captchaGuardedForm.id;
var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined";
if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
return;
}
/* Unsolved, or api.js still in flight: either way there is no token to send. */
event.preventDefault();
event.stopImmediatePropagation();
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}, true);
}
$("#member_login_190-1 input[type=submit]").unbind('click');
$("#member_login_190-1 input[type=submit]").click(function (event) {
var formId = $(this.form).attr('id');
var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
if (typeof captchaHolders[captchaHolderKey] != "undefined") {
if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
event.preventDefault();
$("#" + formId).formValidation('validate');
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}
/* Solved captcha: clear the error UI and let the click proceed untouched.
The browser then fires a REAL, button-initiated submit event, so
FormValidation runs its normal chain (success.form.fv -> AJAX modal on
checkout / native POST on login). Re-submitting here artificially broke
both ways: native form.submit() skips the FV chain (checkout rendered the
raw JSON response), and jQuery .submit() fires a synthetic submit that FV
refuses, leaving the form stuck after the first error (Bug 2). */
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
}
});
});
</script></div><div class="form-actions"><input type="submit" value="Login Now" name class="btn btn-primary btn-lg btn-block " id="member_login_190-1-element-13"/></div><div class="login-cta-buttons"><hr class="cta-hr"><ul class="list-inline nomargin inline-block btn-block"><li class='col-md-12 text-center bold nav'><a href='/join' id='link198'>Don't Have an Account? Get Listed Today</a></li></ul><div class="clearfix"></div></div></form><script type="text/javascript">jQuery(document).ready(function() { jQuery("#member_login_190-1").bind("submit", function() {
});}); </script> <div class="clearfix"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<link rel="stylesheet" type="text/css" href="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.css">
<script src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/limonte-sweetalert2/6.11.2/sweetalert2.min.js"></script>
<script>
function clearContent(thisObj){
var size;
if(thisObj.hasClass('input-sm') || thisObj.parents('.input-group').hasClass('input-group-sm')){
size = "small";
} else if (thisObj.hasClass('input-lg') || thisObj.parents('.input-group').hasClass('large-autosuggest')){
size = "large";
} else {
size = "medium";
}
if(!thisObj.parent().hasClass('input_wrapper')){
if(thisObj.parent().hasClass('input-group-sm')){
thisObj.wrap('<span class="input-group-sm input_wrapper"></span>');
} else if (thisObj.parent().hasClass('input-group-lg')){
thisObj.wrap('<span class="input-group-lg input_wrapper"></span>');
} else {
thisObj.wrap('<span class="input_wrapper"></span>');
}
}
if(thisObj.val() != ""){
if(thisObj.hasClass('googleSuggest')){
thisObj.parent().find('.fill_location').remove();
}
if (!thisObj.parent().find('.clear_content').length){
thisObj.parent().append(`<span class="clear_content ${size}"><i class="fa fa-times-circle" aria-hidden="true"></i></span>`);
if (thisObj.hasClass("tt-input")) {
thisObj.focus();
}
}
}
if (thisObj.hasClass('googleSuggest') && thisObj.val().length == 0) {
thisObj.parent().append(`<span class="fill_location ${size}"><i class="fa fa-crosshairs" title="Use Current Location" aria-hidden="true"></i></span>`);
}
if (thisObj.val() == "" && thisObj.parent().find('.clear_content').length){
thisObj.parent().find('.clear_content').remove();
}
}
$(document).on('click', '.drp-buttons .applyBtn', function(){
clearContent($(".dateRange input"));
});
$('.sm-autosuggest input, .googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').keyup(function(){
clearContent($(this));
});
$(document).ready(function(){
$('.sm-autosuggest input, input.googleSuggest, .large-autosuggest input, .md-autosuggest input, .normal-autosuggest input, .google-writen-location, .dateRange input').each(function(){
clearContent($(this));
})
})
$(document).on('click', '.clear_content', function(){
/* Google Location Suggest locks the value after a suggestion is picked; release it or val('') is ignored. */
if (window.protectedInputId && $(this).parent().find('input').filter(function(){ return this.id === window.protectedInputId; }).length) {
window.inputValueProtected = false;
window.expectedInputValue = null;
window.protectedInputId = null;
}
$(this).parent().find('input').val('');
//tt-input its a class for typeahead auto-suggest
if ($(this).parent().find('input').hasClass("tt-input")) {
$(this).parent().find('input').typeahead('val','');
}
clearContent($(this).parent().find('input'));
$(this).remove();
});
$(window).on('load', function () {
setTimeout(function() {
// add missing href attribute to multi-category options in search modules
$('.bootstrap-select.show-tick .dropdown-menu a').attr('href', '#');
}, 2000);
});
</script>
<a href="#" class="scrollup" title="scrollup">
<i class="fa fa-caret-up" aria-hidden="true"></i>
</a>
<script>
$(document).ready(function(){
// .progressbar() comes from bootstrap-progressbar.min.js, loaded only by widgets 1236/1318.
// Elsewhere it used to fall through to jQuery UI's; jQuery UI is no longer global, so an
// unguarded call throws and kills the rest of this ready() handler (scrollup, crop button).
if ($.fn.progressbar) {
$('.progress .progress-bar').progressbar({
display_text: 'fill'
});
}
$(window).scroll(function(){
if ($(this).scrollTop() > 600) {
$('.scrollup').fadeIn();
} else {
$('.scrollup').fadeOut();
}
});
$('.scrollup').click(function(){
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
});
$('#cropButton').click(function(){
var iframe = $("#cropiFrame");
iframe.attr("src", iframe.data("src"));
});
});
</script>
<script type="text/javascript">
/* CT dissolved its county governments in 1960, so Google returns its 8 counties as
colloquial_area instead of administrative_area_level_2 — they must never reach a
city field. Google translates the component name to the site language, so the
language-stable place_id is checked first and the word list only backs it up. */
if (typeof window.bdIsColloquialCounty !== 'function') {
window.bdIsColloquialCounty = function (componentName, resultPlaceId) {
var countyPlaceIds = [
'ChIJWRM2Nakw5okRoTCxHvz_5xw', /* Middlesex County, CT */
'ChIJmeTbuDYH6IkR3xgeNvszpgg', /* Fairfield County, CT */
'ChIJiT24cvvP54kR2fSPHkp0Akc', /* New Haven County, CT */
'ChIJvYe7N7eQ54kRL6nZaXRwPkI', /* Litchfield County, CT */
'ChIJtxC3p6qs54kRIvK-2bctar0', /* Hartford County, CT */
'ChIJj-lvZQli5okRGCuGRd6xKt0', /* Tolland County, CT */
'ChIJRWKqeLdi5okRLXWDlSEGeTY', /* Windham County, CT */
'ChIJwTIQbvVv5okRU5_gSJczUTQ' /* New London County, CT */
];
if (typeof resultPlaceId === 'string' && resultPlaceId !== ''
&& countyPlaceIds.indexOf(resultPlaceId) !== -1) {
return true;
}
if (typeof componentName !== 'string' || componentName === '') {
return false;
}
var name = componentName.toLowerCase();
/* Only unambiguous county words — generic ones (region, district) would strip
legitimate colloquial areas, and their languages already match on place_id.
Word-boundary matched so names like "Countyline, OK" are left alone. */
var wordTokens = ['county', 'condado', 'comté', 'contea',
'comitatul', 'hrabstwo', 'megye', 'konderria'];
var isAlnum = function (ch) {
return (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9');
};
for (var t = 0; t < wordTokens.length; t++) {
var token = wordTokens[t];
var from = 0;
while (true) {
var at = name.indexOf(token, from);
if (at === -1) {
break;
}
var before = (at > 0) ? name.charAt(at - 1) : ' ';
var after = ((at + token.length) < name.length) ? name.charAt(at + token.length) : ' ';
if (!isAlnum(before) && !isAlnum(after)) {
return true;
}
from = at + 1;
}
}
/* Non-latin scripts have no alphanumeric word boundary. */
var scriptTokens = ['каунти', 'کاؤنٹی', 'काउंटी', '카운티'];
for (var s = 0; s < scriptTokens.length; s++) {
if (name.indexOf(scriptTokens[s]) !== -1) {
return true;
}
}
return false;
};
}
// Try to load coordinates from sessionStorage on page load
var vlat = 0;
var vlon = 0;
try {
var savedLat = sessionStorage.getItem('bd_geolocation_lat');
var savedLon = sessionStorage.getItem('bd_geolocation_lon');
if (savedLat && savedLon) {
vlat = parseFloat(savedLat);
vlon = parseFloat(savedLon);
}
} catch(e) {}
var isSubmit = false;
var isGettingLocation = false; // Flag to prevent multiple simultaneous geolocation requests
// Function to save coordinates to sessionStorage
function saveCoordinatesToSession(lat, lon) {
try {
sessionStorage.setItem('bd_geolocation_lat', lat.toString());
sessionStorage.setItem('bd_geolocation_lon', lon.toString());
} catch(e) {}
}
// Function to get coordinates from sessionStorage if current ones are 0
function getCoordinatesFromSession() {
if (vlat === 0 && vlon === 0) {
try {
var savedLat = sessionStorage.getItem('bd_geolocation_lat');
var savedLon = sessionStorage.getItem('bd_geolocation_lon');
if (savedLat && savedLon) {
vlat = parseFloat(savedLat);
vlon = parseFloat(savedLon);
return true;
}
} catch(e) {}
}
return false;
}
var cityTypes = [
'colloquial_area',
'locality',
'sublocality',
'sublocality_level_1',
'sublocality_level_2',
'sublocality_level_3',
'sublocality_level_4',
'sublocality_level_5',
'neighborhood',
'ward',
'postal_town'
];
var postalTypes = [
'postal_code',
'postal_code_prefix',
'postal_code_suffix',
'street_number',
'premise',
'subpremise',
'route',
'intersection',
'street_address',
'floor',
'room',
'post_box',
'delivery_address'
];
var isSubmitting = false;
window.cachedSelectedOption = [{ 'typed_location': '' }];
window.isSubmittingMainSearch = false;
document.addEventListener('DOMContentLoaded', () => {
let isSubmitting = false; // Add flag at the top level
setTimeout(()=>{
let googleSuggestForm = document.querySelectorAll('.googleSuggest,.google-writen-location,input[name="lead_location"],.fill_location');
if (typeof googleSuggestForm != "undefined") {
for (let i = 0; i < googleSuggestForm.length; i++) {
let closestForm = googleSuggestForm[i].closest('form');
if(typeof closestForm != "undefined" && closestForm != null){
closestForm.addEventListener('focusin', googleMapOnFormClick, false);
}else{
googleSuggestForm[i].addEventListener('input', googleMapOnFormClick, false);
}
googleSuggestForm[i].addEventListener('click', googleMapOnFormClick, false);
}
}
},200);
$('.website-search button[type=submit]').click(async function (e) {
e.preventDefault(); // Prevent the default submit action
var nativeForm = $(this).closest('form')[0];
if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
return false;
}
await googleMapOnFormClick();
$(this).closest('form').submit();
});
});
window['gmapClick'] = false;
function googleMapOnFormClick() {
if(window.gmapClick){
return;
}
window.gmapClick = true;
return new Promise((resolve, reject) => {
window.isSubmittingMainSearch = false;
let googleSuggestForm = document.querySelectorAll('.googleSuggest, .google-writen-location, input[name="lead_location"], .fill_location');
let mapUri = "https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=places®ion=US&callback=initializeG&language=en&key=AIzaSyCdH1MRyFfi3bIGGDsyCnMbfAchnDNQ7zU";
if (typeof google !== "undefined" && google.hasOwnProperty('maps')) {
resolve('already loaded');
return;
}
let loadMapScriptAsync = function (uri) {
return new Promise((resolve, reject) => {
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = uri;
script.async = true;
script.onload = function () {
resolve("ok");
};
script.onerror = function () {
reject("Failed to load Google Maps script.");
};
document.head.appendChild(script);
});
};
loadMapScriptAsync(mapUri)
.then(() => {
resolve();
})
.catch((error) => {
console.error(error);
reject();
});
});
}
function initializeG() {
var geocoder;
//This piece of code will create an autosuggest for every input with the class "googleSuggest"
var counter = 1;
var inputsArray = [];
window.cachedSelectedOption = [{ 'typed_location': '' }];
let mapExists = document.querySelectorAll('[id^="map"]').length > 0;
const functionsToInvoke = {
setJsMap: true,
setJsMapOverview: mapExists,
setJsMapSR: mapExists,
setJsMapSidebar: mapExists
};
if (window['maps_loaded'] !== true) {
for (let func in functionsToInvoke) {
if (typeof window[func] === 'function' && functionsToInvoke[func]) {
window['maps_loaded'] = true;
window[func]();
}
}
}
$(".googleSuggest").each(function () {
//get the id from the input to be the unique identifier for each autocomplete
var inputId = $(this).attr("id");
var inputElement = $(this);
inputsArray[counter] = /** @type {HTMLInputElement} */(
document.getElementById('' + inputId));
const mainCountry = 'US';
const inputOptions = {
fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
types: ['geocode']
}
const language = "en";
if (language) {
inputOptions.language = language;
}
if (mainCountry) {
inputOptions.componentRestrictions = {country: mainCountry};
inputOptions.region = mainCountry;
}
var autocomplete = new google.maps.places.Autocomplete(inputsArray[counter], inputOptions);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
const place = autocomplete.getPlace();
cachedSelectedOption = [];
cachedSelectedOption.push(place);
cachedSelectedOption[0]['typed_location'] = inputElement.val();
/* if(cachedSelectedOption[0]['adr_address']){
let cleanLocation = cachedSelectedOption[0]['adr_address'].replace(/<[^>]*>/g, '');
cachedSelectedOption[0]['typed_location'] = cleanLocation;
inputElement.val(cleanLocation);
}*/
if (cachedSelectedOption[0]['address_components'] == undefined) {
cachedSelectedOption = [];
var emptyObj = {
'typed_location': ''
};
cachedSelectedOption.push(emptyObj);
}
});
//the code that prevents the submition when hit enter on a google location autocomplete item
inputElement.keydown( function (e) {
if (e.keyCode == 13) {
var pacCounter = 0;
//need to run a loop to check each pac container
$('.pac-container').each(function () {
if ($(this).css("display") != "none") {
pacCounter++;
}
});
if (pacCounter > 0) {
e.preventDefault();
}
}
});
counter++;
});
//triggers every time a form with the id website-search is trigered
$('.website-search').submit(function (e) {
var currentForm = $(this);
var locationInput = $(this).find(".googleLocation");
var $submitButton = currentForm.find('input[type=submit], button[type=submit]');
if (locationInput.val() != "" && typeof locationInput.val() != 'undefined') {
// Set submitting flag
window.isSubmittingMainSearch = true;
$submitButton.prop('disabled', true);
e.preventDefault();
//this variable has the main country of the site
var form = currentForm;
var urlGET = form.serialize();
var formActionUrl = form.attr("action");
var locationValue = locationInput.val();
const mainCountry = 'US';
const inputOptions = {
address:locationValue
}
const language = "en";
if (language) {
inputOptions.language = language;
}
if (mainCountry) {
inputOptions.componentRestrictions = {country: mainCountry};
inputOptions.region = mainCountry;
}
if (typeof cachedSelectedOption == 'undefined') {
var emptyForm = {
'typed_location': ''
};
cachedSelectedOption.push(emptyForm);
}
if (locationValue != cachedSelectedOption[0]['typed_location']) {
geocoder = new google.maps.Geocoder();
geocoder.geocode(inputOptions, function (results, status) {
//if the google response of the geocoding was successful it will use that info to build the url for the new search
if (status == google.maps.GeocoderStatus.OK) {
parseInfoToSearch(results, urlGET, formActionUrl);
} else {
var urlPath = formActionUrl;
var redirect = urlPath + "?" + urlGET;
//will redirect the page using the new url that has been constructed
window.location.href = redirect;
}
});
} else {
parseInfoToSearch(cachedSelectedOption, urlGET, formActionUrl);
}
}
});
//check if a map has been loaded
if ($('#map-canvas').length > 0) {
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>";
$('body').append(cssHideLogo);
} else {
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>";
$('body').append(cssHideLogo);
}
if (geocodeVisitorsSetting == 1 && geocodingMethod === "IP") {
populateSearchFields();
}
if($('.googleSuggest').val() == ""){
populateSearchFields();
}
var geocodeVisitorsSetting = '1';
var geocodingMethod = 'HTML5';
//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
var vlon = '';
var vlat = '';
}
function switchPlaceID(placeId,urlGET, formActionUrl) {
let request = {
placeId: placeId,
fields: ['address_components', 'adr_address', 'formatted_address', 'geometry', 'icon', 'name', 'place_id', 'plus_code', 'type'],
};
let service = new google.maps.places.PlacesService(document.createElement('div'));
service.getDetails(request, function(place, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
let dataArray = [];
dataArray.push(place);
parseInfoToSearch(dataArray, urlGET, formActionUrl);
} else {
console.error('Place details request failed with status:', status);
}
});
}
function parseInfoToSearch(results, urlGET, formActionUrl) {
var urlSearchParams = new URLSearchParams(urlGET);
var parameters = {};
var addressComponentsArray = [];
if (results.length > 1) {
if(urlSearchParams.get("location_value")?.toLowerCase() === "nebraska" && results.length === 2){
let tempResult = results[0];
results[0] = results[1];
results[1] = tempResult;
}
for (let i = 0; i < results.length; i++) {
if (results[i].types[0] === 'natural_feature' ||
results[i].types[0] === 'airport' ||
results[i].types[0] === 'point_of_interest' ||
results[i].types[0] === 'establishment' ||
results[i].types[0] === 'political' ||
results[i].types[0] === 'park') {
results.splice(i, 1);
}
}
}
var adComLength = results[0].address_components.length;
if(results[0].place_id == 'ChIJmQrivHKsQjQR4MIK3c41aj8'){
switchPlaceID('ChIJi73bYWusQjQRgqQGXK260bw',urlGET, formActionUrl);
return;
}
sessionStorage.setItem("google_result",JSON.stringify(results));
var foundPostalType = results[0].types.find(type => postalTypes.includes(type));
var foundCityType = results[0].types.find(type => cityTypes.includes(type));
//loop that will build the array with the address components and will get the short name of country and administrative area level 1
for (var i = 0; i < adComLength; i++) {
if (results[0].address_components[i]['types'][0] == "country") {
parameters.country_sn = results[0].address_components[i]['short_name'];
}
if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
parameters.adm_lvl_1_sn = results[0].address_components[i]['short_name'];
}
if (results[0].address_components[i]['types'][0] == "administrative_area_level_1") {
parameters.stateSearchLN = results[0].address_components[i]['long_name'];
}
if (results[0].address_components[i]['types'][0] == "administrative_area_level_2") {
/* short_name is what the service-area writer stores in
service_areas.county_sn, so the search must send the same
form or county matching breaks wherever short != long. */
parameters.county_sn = results[0].address_components[i]['short_name'];
}
if ($.inArray(results[0].address_components[i]['types'][0], cityTypes) !== -1 && (foundCityType || foundPostalType ) ) {
var addrType = results[0].address_components[i]['types'][0];
var addrLong = results[0].address_components[i]['long_name'];
/* CT counties come back as colloquial_area — keep them out of parameters.city. */
if (addrType !== 'colloquial_area'
|| !window.bdIsColloquialCounty(addrLong, results[0].place_id)) {
parameters.city = addrLong;
}
}
if (results[0].address_components[i]['types'][0] == "postal_code" || results[0].address_components[i]['types'][0] == "postal_code_prefix") {
parameters.postal_code = results[0].address_components[i]['long_name'];
}
}
// Filter out 'political' from result types - use more specific type when available
// Same pattern as BD-directory-maps-typePolitical (PR #5642)
if (results[0].types && results[0].types.length > 1 && results[0].types[0] === 'political') {
results[0].types.splice(0, 1);
}
// Pick the most specific type from results, skip "political" (too generic)
parameters.location_type = results[0].types[0];
for (var t = 0; t < results[0].types.length; t++) {
if (results[0].types[t] != 'political') {
parameters.location_type = results[0].types[t];
break;
}
}
// When searching by city/locality, omit postal_code — Google returns
// a partial zip prefix that doesn't match all members in the city
if (parameters.location_type == 'locality' && parameters.postal_code) {
delete parameters.postal_code;
}
if (parameters.adm_lvl_1_sn != '') {
parameters.stateSearch = parameters.adm_lvl_1_sn;
}
if (parameters.country_sn == "GB") {
delete parameters.adm_lvl_1_sn;
}
//will check if the response had the bounds parameters
//if it had it will add the south west and north east parameters to the new url
if (results[0].geometry.hasOwnProperty('bounds') || results[0].geometry.hasOwnProperty('viewport')) {
if (results[0].geometry.hasOwnProperty('bounds')) {
var boundsResponse = results[0].geometry.bounds;
} else {
var boundsResponse = results[0].geometry.viewport;
}
parameters.swlat = boundsResponse.getSouthWest().lat();
parameters.nelat = boundsResponse.getNorthEast().lat();
parameters.swlng = boundsResponse.getSouthWest().lng();
parameters.nelng = boundsResponse.getNorthEast().lng();
//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
} else {
parameters.fsearch = "radius";
}
var locationCenterResponse = results[0].geometry.location;
parameters.lat = locationCenterResponse.lat();
parameters.lng = locationCenterResponse.lng();
parameters.faddress = results[0].formatted_address;
parameters.place_id = results[0].place_id;
var formatParameters = $.param(parameters);
urlGET = urlGET + "&" + formatParameters;
var urlPath = formActionUrl;
var redirect = urlPath + "?" + urlGET;
//will redirect the page using the new url that has been constructed
window.location.href = redirect;
}
function populateSearchFields() {
var prePopulateLocationSetting = '1';
var geolocationMethod = 'HTML5';
// If geolocation is in progress and we don't have coordinates yet, wait a bit
if (isGettingLocation && (vlat === 0 || vlon === 0)) {
var waitStartTime = performance.now();
var waitInterval = setInterval(function() {
if (!isGettingLocation || (vlat !== 0 && vlon !== 0)) {
clearInterval(waitInterval);
// Retry after a short delay to ensure coordinates are set
setTimeout(function() {
populateSearchFields();
}, 100);
} else if ((performance.now() - waitStartTime) > 10000) {
// Timeout after 10 seconds - try sessionStorage
clearInterval(waitInterval);
if (getCoordinatesFromSession()) {
setTimeout(function() {
populateSearchFields();
}, 100);
}
}
}, 200);
return;
}
// If coordinates are 0, try to get from sessionStorage
if (vlat === 0 || vlon === 0) {
getCoordinatesFromSession();
}
// Validate coordinates first
var hasValidCoordinates = (vlat !== '' && vlon !== '' && vlat != undefined && vlon != undefined && vlat != 0 && vlon != 0 && Math.abs(vlat) <= 90 && Math.abs(vlon) <= 180);
if (!hasValidCoordinates) {
return;
}
//if set to one will get the lat and lng to do reverse geocoding
if (prePopulateLocationSetting == 1 && (geolocationMethod === "HTML5" || geolocationMethod === "IP")) {
var visitorLatLng = new google.maps.LatLng(parseFloat(vlat), parseFloat(vlon));
var visitorGeocoder = new google.maps.Geocoder();
var formattedAddress = [];
var preFormattedStructure = {
"locality": "long_name",
"administrative_area_level_2": "long_name",
"administrative_area_level_1": "long_name",
"country": "long_name"
};
visitorGeocoder.geocode({'latLng': visitorLatLng}, function (results, status) {
//if the google response of the geocoding was successful it will use that info to build the url for the new search
if (status == google.maps.GeocoderStatus.OK) {
window.cachedSelectedOption = results;
$.each(preFormattedStructure, function (findex, fvalue) {
$.each(results[0].address_components, function (rindex, rvalue) {
if (rvalue.types[0] == findex) {
formattedAddress.push(rvalue.long_name);
}
});
});
$('.googleSuggest').each(function () {
if ($(this).val() == '') {
if (formattedAddress.length > 0) {
$(this).val(formattedAddress.join(', '));
clearContent($(this));
}
}
});
} else {
$('.googleSuggest').each(function () {
$(this).val('');
});
}
});
}
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
case 1: // PERMISSION_DENIED
$('.fill_location.clicked').popover({
content: `Your local browser settings have prevented location targeting. Please enable location permissions in your browser settings.`,
container: 'body'
});
$('.fill_location.clicked').popover('toggle');
setTimeout(function () {
$('.fill_location.clicked').popover('hide');
$('.fill_location.clicked').removeClass('clicked');
}, 4000);
break;
case error.POSITION_UNAVAILABLE:
case 2: // POSITION_UNAVAILABLE
$('.fill_location.clicked').popover({
content: `Location information is unavailable. Please check your device location settings.`,
container: 'body'
});
$('.fill_location.clicked').popover('toggle');
setTimeout(function () {
$('.fill_location.clicked').popover('hide');
$('.fill_location.clicked').removeClass('clicked');
}, 4000);
break;
case error.TIMEOUT:
case 3: // TIMEOUT
$('.fill_location.clicked').popover({
content: `Location request timed out. Please ensure location services are enabled and try again.`,
container: 'body'
});
$('.fill_location.clicked').popover('toggle');
setTimeout(function () {
$('.fill_location.clicked').popover('hide');
$('.fill_location.clicked').removeClass('clicked');
}, 4000);
break;
case error.UNKNOWN_ERROR:
default:
$('.fill_location.clicked').popover({
content: `An error occurred while getting your location. Please try again.`,
container: 'body'
});
$('.fill_location.clicked').popover('toggle');
setTimeout(function () {
$('.fill_location.clicked').popover('hide');
$('.fill_location.clicked').removeClass('clicked');
}, 4000);
break;
}
}
if (navigator.geolocation) {
if ($(".googleSuggest")[0]) {
$(document).on('click', '.fill_location', function getCXPosition() {
// Prevent multiple simultaneous geolocation requests
if (isGettingLocation) {
return;
}
var $button = $(this);
$button.addClass('clicked');
var startPos;
// Set flag to prevent concurrent requests
isGettingLocation = true;
// Function to actually get the position
var attemptGetPosition = function() {
// Try with shorter timeout first for faster response
var geoOptions = {
enableHighAccuracy: false, // Use false for faster response
timeout: 8000, // 8 second timeout (reduced for faster failure)
maximumAge: 300000 // Accept cached position up to 5 minutes old
};
navigator.geolocation.getCurrentPosition(function (position) {
startPos = position;
vlat = startPos.coords.latitude;
vlon = startPos.coords.longitude;
// Validate coordinates before proceeding
if (!vlat || !vlon || vlat === 0 || vlon === 0) {
isGettingLocation = false;
$button.removeClass('clicked');
return;
}
// Save coordinates to sessionStorage
saveCoordinatesToSession(vlat, vlon);
$.get("/api/data/html/get/data_widgets/widget_name", {
"vlat": vlat,
"vlon": vlon,
"name": "Website - Save Coordinates Session"
});
populateSearchFields();
// Clear flag
isGettingLocation = false;
$button.removeClass('clicked');
}, function(error) {
// Clear flag on error
isGettingLocation = false;
$button.removeClass('clicked');
// For timeout errors, try sessionStorage as fallback
if (error.code === 3) {
if (getCoordinatesFromSession()) {
// Use cached coordinates
$.get("/api/data/html/get/data_widgets/widget_name", {
"vlat": vlat,
"vlon": vlon,
"name": "Website - Save Coordinates Session"
});
populateSearchFields();
// Clear flag
isGettingLocation = false;
$button.removeClass('clicked');
} else {
$button.popover({
content: `Location request timed out. Please ensure location services are enabled and grant permission when prompted.`,
container: 'body'
});
$button.popover('show');
setTimeout(function() {
$button.popover('hide');
}, 5000);
}
} else {
showError(error);
}
}, geoOptions);
};
// Check if geolocation permission is already denied (but don't block if it's prompt)
if (navigator.permissions && navigator.permissions.query) {
navigator.permissions.query({name: 'geolocation'}).then(function(result) {
if (result.state === 'denied') {
isGettingLocation = false;
$button.removeClass('clicked');
showError({code: 1, message: 'Permission denied'});
return;
} else {
// Permission is granted or prompt - proceed with geolocation
attemptGetPosition();
}
}).catch(function(err) {
// If permission API not supported, proceed anyway
attemptGetPosition();
});
} else {
// Permission API not available, proceed with geolocation
attemptGetPosition();
}
})
}
} else {
console.log('Geolocation is not supported for this Browser/OS version yet.');
}
function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return decodeURIComponent(sParameterName[1]);
}
}
}
</script>
<script>
// switchClass() is jQuery UI (Effects), which is no longer loaded on every page.
// removeClass().addClass() is the same class swap, applied immediately instead of
// after animateClass()'s queued 400ms default.
$(document).ready(function(){
$('.navbar-header .navbar-toggle.main_menu').click(function(){
$('.mobile-main-menu').toggleClass('opened');
});
$('.mobile-main-menu .sidebar-nav').find('li').each(function(){
$(this).addClass('hasChildren');
if ($(this).children('ul').length > 0){
$(this).prepend('<i class="fa fa-plus" aria-hidden="true"></i>');
$(this).find('a').after('<div class="clearfix"></div>');
$(this).find('span').after('<div class="clearfix"></div>');
}
$(this).append('<div class="clearfix"></div>');
});
$('.mobile-main-menu .sidebar-nav li i').click(function(){
if ($(this).parent().children('ul').length > 0){
$(this).parent().toggleClass('sub_open');
}
if ($(this).hasClass('fa-plus')){
$(this).removeClass('fa-plus').addClass('fa-minus');
} else {
$(this).removeClass('fa-minus').addClass('fa-plus');
}
});
})
if ($(window).width() > 740 && $(window).width() < 1100) {
$(document).ready(function(){
$('.tablet-menu .tablet-menu-ul').find('li').each(function(){
if ($(this).children('ul').length > 0){
$(this).prepend('<i class="fa fa-plus tablet-fa hidden-sm hidden-md hidden-lg" aria-hidden="true"></i>');
$(this).find('a').after('<div class="clearfix"></div>');
var this_link = $(this).children('a').text().replace(/[^\x00-\x7F]/g, "");;
$(this).children('a').html(this_link);
$(this).find('span').after('<div class="clearfix"></div>');
}
$(this).append('<div class="clearfix"></div>');
});
$('.tablet-menu .tablet-menu-ul li i').click(function(){
if ($(this).parent().children('ul').length > 0){
$(this).parent().toggleClass('sub_open');
if ($(this).siblings( "ul" ).hasClass('tablet-block')){
$(this).siblings( "ul" ).removeClass('tablet-block').addClass('tablet-none');
} else {
$(this).siblings( "ul" ).addClass( "tablet-block" );
if ($(this).siblings( "ul" ).hasClass('tablet-none')){
$(this).siblings( "ul" ).removeClass('tablet-none')
}
if ($(this).parent().siblings().children('ul').hasClass('tablet-block')) {
$(this).parent().siblings().children('ul').removeClass('tablet-block').addClass('tablet-none');
$(this).parent().siblings().children('i').removeClass('fa-minus').addClass('fa-plus');
}
if ($(this).parent().siblings().children('ul').children().children('ul').hasClass('tablet-block')) {
$(this).parent().siblings().children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
$(this).parent().siblings().children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
}
if ($(this).siblings('ul').children('ul').children().children('ul').hasClass('tablet-block')) {
$(this).siblings('ul').children('ul').children().children('ul').removeClass('tablet-block').addClass('tablet-none');
$(this).siblings('ul').children('ul').children().children('i').removeClass('fa-minus').addClass('fa-plus');
}
}
}
if ($(this).hasClass('fa-plus')){
$(this).removeClass('fa-plus').addClass('fa-minus');
} else {
$(this).removeClass('fa-minus').addClass('fa-plus');
}
});
})
}
// Append unique ID attribute for mobile main menu links
$('.mobile-main-menu a,.mobile-main-menu span').attr("id", function() { return $(this).attr("id") + "-mobile" });
</script>
<script>
</script><script>
function validate() {
var reason = '';
form = document.sidebarform;
if (form.answerq.value!=6) {
reason=reason+'- Answer the security question\n';
}
if (reason != '') {
reason = 'Please correct the following errors\n' + reason;
alert(reason);
return false;
} else {
return true;
}
}
</script><script>
$('#captchaContainer').removeClass('form-control ');
$(".website_url_field").keyup(function(){
var fieldName = $(this).attr('name');
$(this).val($(this).val().replace(/\s+/g, ''));
$('#myform').formValidation('revalidateField', fieldName);
});
</script>
<script>
var currentSubmitButton = null;
window.newestRequestId = 0;
var localizedMainCountry = 'US';
async function setJsMap() {
let urlWapi = '/wapi/widget?widget_name=Bootstrap%20Theme%20-%20Google%20Maps%20-%20Get%20Center%20Coordinates&request_type=GET&header_type=json&action=getCenterMap';
var localizedMainCoutry = 'US';
if ($('#location_status').length == 0) {
var currentLocationState = "no_location";
} else {
var currentLocationState = $('#location_status').data('state');
}
if (currentLocationState != "no_location") {
//the maping array to know what address component types are link to which inputs on the contact details form
var inputsArray = {
"country_sn": {
"country": "short_name"
},
"adm_lvl_1_sn": {
"administrative_area_level_1": "short_name"
},
"county_sn": {
"administrative_area_level_2": "short_name"
},
"city":{
"locality": "short_name"
}
};
var geoSC = new google.maps.Geocoder();
var markerSC = '';
var mapSC = '';
var vlonLead = '';
var vlatLead = '';
var userLat = '';
var userLon = '';
var geocodeVisitorsSetting = '1';
var geocodingMethod = 'HTML5';
if (vlatLead == "" && userLat != "") {
vlatLead = userLat;
}
if (vlonLead == "" && userLon != "") {
vlonLead = userLon;
}
if (vlatLead == "" || vlonLead == "") {
await getCenterMap(urlWapi)
.then(response => response.json())
.then(data => {
if (data.lat) {
vlatLead = userLat = uLat = data.lat;
}
if (data.lon) {
vlonLead = userLon = uLng = data.lon;
}
});
}
if (currentLocationState == 'default' || currentLocationState == 'only_map') {
//important variables
//function that initializes the Map
const mapDiv = document.getElementById("map-canvas-contact-sidebar");
function initializeMap() {
if (initializeMap.alreadyUsed) {
return false;
}
initializeMap.alreadyUsed = true;
var iconImage = '/images/pin_drop.png';
var mapOptions = {
controlSize: 26,
mapTypeControl: false,
streetViewControl: false,
scrollwheel: false
}
mapSC = new google.maps.Map(mapDiv, mapOptions);
//if uLat and uLong are empty load the map in the center of the world
if (userLat == "" || userLon == "") {
userLat = 0;
userLon = 0;
}
var markerInitLatLng2 = new google.maps.LatLng(parseFloat(userLat), parseFloat(userLon));
markerSC = new google.maps.Marker({
draggable: true,
position: markerInitLatLng2,
map: mapSC,
title: "Your current location",
icon: iconImage
});
//if no location saved zoom will be 2
var mapZoom = 15;
if (userLat == "" || userLon == "") {
mapZoom = 4;
}
if (currentLocationState == 'default') {
var input = /** @type {HTMLInputElement} */(
document.getElementById('pac-input'))
var inputOptions = {
fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
types: ['(regions)']
}
const language = "en";
if (language) {
inputOptions.language = language;
}
if (localizedMainCoutry) {
inputOptions.componentRestrictions = {country: localizedMainCoutry};
inputOptions.region = localizedMainCoutry;
}
var autocomplete = new google.maps.places.Autocomplete(input, inputOptions);
autocomplete.bindTo('bounds', mapSC);
//bind the change of the autocomplete to the make search function
//google.maps.event.addListener(autocomplete, 'place_changed', makeSearch);
google.maps.event.addListener(autocomplete, 'place_changed', (e) => {
if (input.value != '') {
const place = autocomplete.getPlace();
makeSearch(place)
} else {
swal(`Error`, `You can not list an empty location!`, "error");
}
});
//when hitting enter on the location search field prevent the submition of the form
input.addEventListener("keydown", (e) => {
if (e.key === "Enter") {
e.preventDefault();
}
});
}
mapSC.setCenter(new google.maps.LatLng(vlatLead, vlonLead));
mapSC.setZoom(mapZoom);
//load marker on the map
markerSC.setMap(mapSC);
// check for Geolocation support
if (geocodeVisitorsSetting == 1 && geocodingMethod == "HTML5" && vlatLead != userLat && vlonLead != userLon & uLat != 0 && uLng != 0) {
let markerMemberInitLatLng = new google.maps.LatLng(parseFloat(uLat), parseFloat(uLng))
markerSC.setPosition(markerMemberInitLatLng);
mapSC.setCenter(markerMemberInitLatLng);
// makeSearch(vlatLead, vlonLead);
let latlng = {
lat: parseFloat(markerSC.position.lat()),
lng: parseFloat(markerSC.position.lng()),
};
fillDataByGeoCode(latlng, 'latLng');
} else {
markerSC.setPosition(new google.maps.LatLng(vlatLead, vlonLead));
}
//capture the draggin marker event and update the lat and lng of the member
google.maps.event.addListener(markerSC, 'dragend', function (event) {
let markerCoordinates = markerSC.getPosition();
userLat = uLat = markerSC.getPosition().lat();
userLng = uLng = markerSC.getPosition().lng();
fillDataByGeoCode(markerCoordinates, 'latLng');
});//END dragend event listener
}//END initialize function
initializeMap();
// google.maps.event.addDomListener(window, 'load', initializeMap);
//END if (currentLocationState == 'default' || currentLocationState == 'only_map')
} else if (currentLocationState == 'only_input') {
function initializeInput() {
const inputOptions = {
fields: ['address_components', 'adr_address','formatted_address', 'geometry', 'icon', 'name','place_id','plus_code','type'],
types: ['(regions)'],
}
const language = "en";
if (language) {
inputOptions.language = language;
}
if (localizedMainCoutry) {
inputOptions.componentRestrictions = {country: localizedMainCoutry};
inputOptions.region = localizedMainCoutry;
}
var change = document.getElementsByClassName("google-writen-location");
var searchInput = {};
var autocomplete = {};
var cachedSelectedOption = {};
for (var i = 0; i < change.length; i++) {
//the init of the search locations input
autocomplete[i] = new google.maps.places.Autocomplete(change[i], inputOptions);
autocomplete[i].inputId = change[i].id;
var currentLocationValue;
$(change[i]).keyup(function () {
$('input[name="lat"]').val('');
$('input[name="lng"]').val('');
$('input[name="swlat"]').val('');
$('input[name="swlng"]').val('');
$('input[name="nelat"]').val('');
$('input[name="nelng"]').val('');
$('input[name="location_type"]').val('');
});
$(change[i]).blur(function () {
var thisField = $(this);
let thisVal = this.value;
setTimeout(function () {
if (thisField.parents('div').find('[name="lat"]').val() == "") {
fillDataByGeoCode(thisVal);
}
}, 300);
});
//bind the change of the autocomplete to the make search function
google.maps.event.addListener(autocomplete[i], 'place_changed', function () {
let place= this.getPlace();
makeSearch(place);
});
//when hitting enter on the location search field prevent the submition of the form
$('.google-writen-location:eq(' + i + ')').keydown(function (e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
}
}//END initialize function
initializeInput();
// google.maps.event.addDomListener(window, 'load', initializeInput);
}
//this is the function that takes a google response and fills the input location fields basing itself in the maping array
function fillAddressFields(results) {
var coordinatesCenter = results.geometry.location;
var boundsResponse = "";
$('input[name="lead_location"]').val(results['formatted_address']);
if(results['adr_address']){
var faddress = results['adr_address'].replace(/<[^>]+>/g, '');
$('input[name="faddress"]').val(faddress);
}
if (results.geometry.hasOwnProperty('bounds') || results.geometry.hasOwnProperty('viewport')) {
if (results.geometry.hasOwnProperty('bounds')) {
var boundsResponse = results.geometry.bounds;
} else {
var boundsResponse = results.geometry.viewport;
}
}
if (boundsResponse != "") {
const location = results.geometry.location;
const viewport = results.geometry.viewport;
if (location) {
var lat = typeof location.lat === 'function' ? location.lat() : location.lat;
var lng = typeof location.lng === 'function' ? location.lng() : location.lng;
$('input[name="lat"]').val(lat);
$('input[name="lng"]').val(lng);
}
if (viewport) {
const sw = typeof viewport.getSouthWest === 'function' ? viewport.getSouthWest() : viewport.sw;
const ne = typeof viewport.getNorthEast === 'function' ? viewport.getNorthEast() : viewport.ne;
var swlat = typeof sw.lat === 'function' ? sw.lat() : sw.lat;
var nelat = typeof ne.lat === 'function' ? ne.lat() : ne.lat;
var swlng = typeof sw.lng === 'function' ? sw.lng() : sw.lng;
var nelng = typeof ne.lng === 'function' ? ne.lng() : ne.lng;
//update sw
$('input[name="swlat"]').val(swlat);
$('input[name="swlng"]').val(swlng);
//update ne
$('input[name="nelat"]').val(nelat);
$('input[name="nelng"]').val(nelng);
}
}
//update location type - filter out political types
let locationType = results.address_components[0].types[0];
if (locationType === 'political' && results.address_components[0].types.length > 1) {
locationType = results.address_components[0].types[1];
}
$('input[name="location_type"]').val(locationType);
//loop through the maping array to get all the values from the inputs that need to be filled with the new information
$.each(inputsArray, function (findex, fvalue) {
//clean each field before setting new info
$('input[name="' + findex + '"]').val("");
//loop that checks the second level of the array
$.each(fvalue, function (sindex, svalue) {
var flag = true;
//check if svalue is an object
if ($.type(svalue) == "object") {
var currentConcat = "",
//get length of the concat array
concatLength = Object.keys(svalue).length,
concatCounter = 0;
//loop on each element of the svalue elements for the address components concatenation
$.each(svalue, function (conkey, convalue) {
//run a loop on the address components for each svalue elements
$.each(results.address_components, function (inskey, insvalue) {
//if the element of the svalue match, concat the result to the array currentConcat
if (insvalue.types[0] == conkey) {
currentConcat += insvalue[convalue] + " ";
concatCounter++;
}
});//END each on address components
});//END each on svalue for the address components concatenation
//if all the elements matched then this new location with the concatenation of address components will be the one used
if (concatCounter == concatLength) {
$('input[name="' + findex + '"]').val(currentConcat);
flag = false;
return false;
}
//if svalue is not an object the system will continue with the default computations
} else {
//run a loop on the address components for the svalue being searched
$.each(results.address_components, function (key, value) {
//if the svalue element matches it will be saved
if (value.types[0] == sindex) {
$('input[name="' + findex + '"]').val(value[svalue]);
flag = false;
return false;
}
});//END each on the address components
}
return flag;
});//END each on the second level of the array
});//END each on the first level of the array
// Enable submit button at the end of fillAddressFields
$(currentSubmitButton).removeClass('disabled');
$(currentSubmitButton).removeAttr('disabled');
}//END fillAddressFields function
//function that triggers when someone selects an option from the autocomplete
function makeSearch(results) {
if(results){
for (let i = 0; i < results.length; i++) {
if (results[i].types && results[i].types.length > 1 && results[i].types[0] === 'political') {
results[i].types.splice(0, 1);
}
}
}
if (results && results.address_components) {
if (currentLocationState == 'default' || currentLocationState == 'only_map') {
markerSC.setPosition(results.geometry.location);
mapSC.panTo(results.geometry.location);
mapSC.setZoom(16);
}
fillAddressFields(results);
}
else {
fillDataByGeoCode(results.name,'address');
}
}//END make search function
if (currentLocationState == 'default' || currentLocationState == 'only_map') {
$('#contactModal').on('shown.bs.modal', function () {
google.maps.event.trigger(mapSC, "resize");
});
}
// Add MutationObserver to watch for all pac-containers
const observeAutocompleteContainers = () => {
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === 1) { // Check if it's an element node
// Check both for the class and for matching the selector
if (node.classList &&
(node.classList.contains('pac-container') ||
node.querySelector('.pac-container'))) {
const containerToObserve = node.classList.contains('pac-container') ? node : node.querySelector('.pac-container');
// Create a new observer for this specific pac-container
const containerObserver = new MutationObserver((containerMutations) => {
containerMutations.forEach((containerMutation) => {
if (containerMutation.type === 'attributes' &&
containerMutation.attributeName === 'style') {
const isHidden = containerToObserve.style.display === 'none';
if (isHidden) {
if (typeof window.cachedSelectedOption !== 'undefined' && window.cachedSelectedOption !== null) {
makeSearch(window.cachedSelectedOption[0]);
}else{
const thisField = this;
const thisVal = this.value;
setTimeout(function() {
if ($(thisField).parents('div').find('[name="lat"]').val() == "") {
fillDataByGeoCode(thisVal);
}
}, 300);
}
}
}
});
});
// Start observing this pac-container
containerObserver.observe(containerToObserve, {
attributes: true,
attributeFilter: ['style']
});
}
}
});
}
});
});
// Start observing the document body for added pac-containers
observer.observe(document.body, {
childList: true,
subtree: true
});
};
// Start observing when the document is ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', observeAutocompleteContainers);
} else {
observeAutocompleteContainers();
}
}//END if (currentLocationState != "no_location")
function fillDataByGeoCode(info, type = 'address') {
if(info){
type = type.toLowerCase();
let geocoderRequest = { address: info };
if (type === 'latlng') {
geocoderRequest = { location: info};
}
const language = "en";
if (language) {
geocoderRequest.language = language;
}
const mainCountry = 'US';
if (mainCountry && type === 'address') {
geocoderRequest.componentRestrictions = {country: mainCountry};
geocoderRequest.region = mainCountry;
}
if (mainCountry && type === 'latlng') {
geocoderRequest.region = mainCountry;
}
geo = new google.maps.Geocoder();
geo.geocode(geocoderRequest, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if(results){
for (let i = 0; i < results.length; i++) {
if (results[i].types && results[i].types.length > 1 && results[i].types[0] === 'political') {
results[i].types.splice(0, 1);
}
}
}
if (results.length > 1) {
for (let i = 0; i < results.length; i++) {
if (results[i].types[0] === 'natural_feature' ||
results[i].types[0] === 'airport' ||
results[i].types[0] === 'point_of_interest' ||
results[i].types[0] === 'establishment' ||
results[i].types[0] === 'political' ||
results[i].types[0] === 'park') {
results.splice(i, 1);
}
}
}
if (mapSC != null && mapSC != '' && typeof mapSC !== "undefined" && markerSC != null && markerSC != '' && typeof markerSC !== "undefined") {
mapSC.panTo(results[0].geometry.location);
mapSC.setZoom(16);
markerSC.setPosition(results[0].geometry.location);
}
fillAddressFields(results[0]);
}
});
}
}
// fetch to obtain the centerOfMap
function getCenterMap(urlWapi) {
const response = fetch(urlWapi, {
method: 'GET',
mode: 'same-origin',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
});
return response
}
}
</script><script type="text/javascript">
if(typeof bootstrap_contact_member_category_dropdowns_runned == "undefined"){
var bootstrap_contact_member_category_dropdowns_runned = true;
var uniqueForm = $('.select-category-chained').closest('form').attr("id");
$(document).on('change', '#'+uniqueForm+' .select-category-chained', function () {
var input = $(this);
var currentLevel = input.attr('name');
var categoryId = input.val();
var targetSelect = uniqueForm + " #" + input.data('nextselect');
var enviromentVar = $('#cat-page-type').data('type');
//empty all the children of this select
var epmtyHtmlOptions = "";
var defaultOptionText = 'Select from List';
if(defaultOptionText != ""){
epmtyHtmlOptions += '<option value="">('+defaultOptionText+')</option>';
}
$('#' + targetSelect).html(epmtyHtmlOptions);
$('#' + targetSelect).val('').change();
//check if child is also parent and clean that one too
var targetSelectElement = $('#' + targetSelect);
var childChildSelect = targetSelectElement.data('nextselect');
if (childChildSelect != "" && childChildSelect != undefined) {
$('#' + childChildSelect).html(epmtyHtmlOptions);
$('#' + childChildSelect).val('').change();
}
if (enviromentVar == "profile") {
var userId = $('#cat-page-type').data('user');
} else {
var userId = "";
}
if (categoryId != "" && categoryId > 0) {
//send ajax to know the children results
var gcaResponseArray = [];
$.ajax({
url: "/wapi/widget",
type: "GET",
dataType: "json",
data: {
"request_type": "GET",
"widget_name": "Bootstrap - Contact Member Category Dropdowns",
"header_type": "json",
"user_id": userId,
"scope": currentLevel,
"category_id": categoryId,
"select_action": "find_children_cat"
},
success: function (data) {
gcaResponseArray.push(data);
},
error: function (data) {
console.log("error");
console.log(data);
}
});
var gcaInter = setInterval(function () {
if (gcaResponseArray.length == 1) {
clearInterval(gcaInter);
var htmlOptions = "";
var defaultOptionText = 'Select from List';
if(defaultOptionText != ""){
htmlOptions += '<option value="">('+defaultOptionText+')</option>';
}
//construct the html options values
var newOptionsCounter = 0;
if(gcaResponseArray[0] !== null && gcaResponseArray[0]['cats']!=''){
$.each(gcaResponseArray[0]['cats'], function (key, value) {
key = key.replace('_', '');
htmlOptions += '<option value="' + key + '">' + value + '</option>';
newOptionsCounter++;
});
$('#' + targetSelect).html(htmlOptions);
$('#' + targetSelect).attr("disabled", false);
if (newOptionsCounter > 0) {
$('#' + targetSelect).select2("open");
}
}else{
$('#' + targetSelect).html('<option value="">No Options Available</option>');
$('#' + targetSelect).attr("disabled", true);
$("#" + targetSelect).select2("val", "");
if ($("#" + targetSelect).attr('data-nextselect') != "") {
let dataSelectNext = $("#" + targetSelect).attr('data-nextselect');
$('#' + dataSelectNext).html('<option value="">No Options Available</option>');
$('#' + dataSelectNext).attr("disabled", true);
$("#" + dataSelectNext).select2("val", "");
}
}
}
}, 400);
}
});
const topRequired = document.querySelector('label[for="top-id-select"] span.required');
const subRequired = document.querySelector('label[for="sub-id-select"] span.required');
const subSubRequired = document.querySelector('label[for="sub-sub-id-select"] span.required');
//code to check that the categories have been submitted if the settings are enabled
$('#'+uniqueForm).submit(function (e) {
let topRequiredVal = document.getElementById('top-id-select');
let subRequiredVal = document.getElementById('sub-id-select');
let subSubRequiredVal = document.getElementById('sub-sub-id-select');
if ((topRequired !== null && topRequiredVal !== null && topRequiredVal.value == '') || (subRequired !== null && subRequiredVal !== null && subRequiredVal.value == '') || (subSubRequired !== null && subSubRequiredVal !== null && subSubRequiredVal.value == '')) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
swal(`Whoops!`, `Please select a category to submit this request` ,"error");
}
});
}
</script> <script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
<script type="text/javascript">
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
// Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
$(function() {
function applyFix() {
// Check if FormValidation library and URI validator are loaded
if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
FormValidation.Validator.uri.validate = function(validator, $field, options) {
var value = validator.getFieldValue($field, 'uri').trim();
return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
};
return true;
}
return false;
}
if (!applyFix()) {
setTimeout(applyFix, 50);
}
});
</script>
<script type="text/javascript">
var counterSubmit = 0;
$(document).ready(function() {
/* grecaptcha.reset() with no argument always resets widget 0. On a page with two
captcha holders that clears the wrong checkbox, so the widget the visitor solved
keeps a token Google has already spent and every retry fails the security check.
captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
an undefined id means no per-form id is known and the arg-less call is used,
exactly as before. */
function bdCaptchaWidgetId(formId) {
if (typeof captchaHolders === "undefined" || !formId) {
return undefined;
}
/* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
the holder element itself so the counter never has to be reconstructed. */
var form = document.getElementById(formId);
var holder = form && form.querySelector(".g-recaptcha");
return holder ? captchaHolders[holder.id] : undefined;
}
function bdCaptchaReset(formId) {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
return;
}
var widgetId = bdCaptchaWidgetId(formId);
if (widgetId === undefined) {
grecaptcha.reset();
} else {
grecaptcha.reset(widgetId);
}
}
// Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
// rules for fields that are NOT rendered in this form (conditionally-rendered or
// duplicated form configs). Those phantom rules make formValidation mis-evaluate
// isValid(), so an empty required field bypasses validation and submits natively.
// Remove any rule whose field has no matching element before initializing.
// NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
// REMOVES rules (never adds validators, never overrides native submit, never
// intercepts on capture phase, never re-validates on click) — so it cannot
// reproduce the "Save button slides down / nav broken / no success message"
// regression that caused #5902 to be rolled back on site 19413.
var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_","timeout":"120","message":"The captcha is not valid"}},"fields":{"lead_email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}}}};
var formElement = $(`form[name='bootstrap_get_match_255']`);
if(validatorConfig && validatorConfig.fields) {
Object.keys(validatorConfig.fields).forEach(function(fieldName) {
if(formElement.find('[name="' + fieldName + '"]').length === 0) {
delete validatorConfig.fields[fieldName];
}
});
}
// Scroll to the first invalid field when submit fails validation,
// so the user can immediately see why the form will not submit
formElement.on('err.form.fv', function(e) {
var $firstError = $(e.target).find('.form-group.has-error').first();
if ($firstError.length) {
$('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
}
});
formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
if('bootstrap_get_match' == 'unsubscribe_email'){
return true;
}
// Prevent form submission
e.preventDefault();
$form = $(e.target),
fv = $form.data('formValidation');
// Check HTML5 required fields that FormValidation may not know about
var requiredEmpty = false;
$form.find('[required]').each(function() {
var val = $(this).val();
if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
requiredEmpty = true;
$(this).closest('.form-group').addClass('has-error');
if ($(this).siblings('.required-error').length === 0) {
$(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>');
}
} else {
var $reqGroup = $(this).closest('.form-group');
$(this).siblings('.required-error').remove();
// Keep has-error if another validator is still failing for this field
if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$reqGroup.removeClass('has-error');
}
}
});
if (requiredEmpty) {
fv.disableSubmitButtons(false);
counterSubmit = 0;
// Scroll to the first field with an error (HTML5-required scan does
// not trigger err.form.fv, so handle the scroll here too)
var $firstReqError = $form.find('.form-group.has-error').first();
if ($firstReqError.length) {
$('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
}
return false;
}
var values = $(this).serialize();
var locationFieldCorrect = true;
if($("#bootstrap_get_match_255 .location_required").length > 0){
$("#bootstrap_get_match_255 .location_required").each(function (index) {
if($(this).data('state') == 1){
if($('#bootstrap_get_match_255 input[name="lead_location"]').val() == "" || $('#bootstrap_get_match_255 input[name="lat"]').val() == "" || $('#bootstrap_get_match_255 input[name="lng"]').val() == "") {
locationFieldCorrect = false;
}
}
});
}
if(locationFieldCorrect === false){
//check that there is a latitude or longitude
swal(`Whoops!`, `The location information is required to submit this form`, "error");
return false;
}
if (!$(this).attr("action")) {
var action = '';
} else {
var action = $(this).attr("action");
}
if (!$(this).attr("method")) {
var method = 'post';
} else {
var method = $(this).attr("method");
}
if (!$(this).attr("form_action_type")) {
var form_action_type = 'notification';
} else {
var form_action_type = $(this).attr("form_action_type");
}
if (!$(this).attr("form_action_div")) {
/* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
} else {
var form_action_div = $(this).attr("form_action_div");
}
if (!$(this).attr("return_data_type")) {
var return_data_type = 'json';
} else {
var return_data_type = $(this).attr("return_data_type");
}
var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
if (!submitInFlight) {
if ($("#bootstrap_get_match_255-notification").html() != "") {
$("#bootstrap_get_match_255-notification").remove();
}
if ($(this).find('input[type="submit"]').length > 0) {
$(this).find('input[type="submit"]').before('<div id="bootstrap_get_match_255-notification" class="alert"></div>');
} else {
$(this).prepend('<div id="bootstrap_get_match_255-notification" class="alert"></div>');
}
}
var notification = $("#bootstrap_get_match_255-notification");
if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
setTimeout(function(){
fv.defaultSubmit();
}, 100);
} else {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
if(!submitInFlight) {
counterSubmit++;
$form.data('bdLastSubmitAt', Date.now());
var fields = $(this).serializeArray();
var formField = [];
var processData = true;
var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
if($("#bootstrap_get_match_255 input[type=file]").length > 0){
var formObject = new FormData();
processData = false;
contentType = false;
$(fields).each(function(index,field){
formField.push(field.name+"="+field.value);
});
values = formField.join("&");
$(formField).each(function(index,fieldValue){
var fieldInfo = fieldValue.split('=');
formObject.append(fieldInfo[0],fieldInfo[1]);
});
$("#bootstrap_get_match_255 input[type=file]").each(function(index,node){
var file = this.files[0];
if(typeof file != "undefined"){
formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
}
});
}else{
$(fields).each(function(index,field){
formField.push(field.name+"="+encodeURIComponent(field.value));
});
var formObject = formField.join("&");
}
$.ajax({
url: action,
type: method,
data: formObject,
dataType: return_data_type,
processData: processData,
contentType: contentType,
success: function (data) {
// Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
notification = $("#bootstrap_get_match_255-notification");
if (return_data_type == "html") {
var result = 'success';
if (!data != "") {
var result_widget = data['result_widget'];
}
} else {
if (!data['result']) {
var result = 'error';
} else {
var result = data['result'];
}
if (!data['result_widget']) {
var result_widget = '';
} else {
var result_widget = data['result_widget'];
}
}
if (result == "success") {
if (!data['message']) {
var message = `Your information has submitted successfully!`;
} else {
var message = data['message'];
}
if (!data['redirect_url']) {
var redirect_url = '';
} else {
var redirect_url = data['redirect_url'];
}
if (form_action_type == "notification") {
if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
if (notification.parents('.modal').length) {
$('.modal-backdrop').hide();
$('.modal').modal('hide');
}
window.location.href = redirect_url;
fv.resetForm(true);
} else {
notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>')
.addClass('alert-dismissible')
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
if(notification.parents('.modal').length && 'bootstrap_get_match_255' == 'whmcs_billing_address'){
setTimeout(function(){
notification.parents('.modal').modal('hide');
}, 1000);
}
}
} else if (form_action_type == "widget") {
if (result_widget != '') {
setTimeout(function(){
if(form_action_div != '.newsletter_modal_form_container'){
$("html, body").animate({ scrollTop: 0 }, 600);
}
$(form_action_div).html(decodeHtml(result_widget)).text();
}, 1000);
}
} else if (form_action_type == "redirect") {
if (redirect_url == "") {
redirect_url = decodeURIComponent("");
}
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
current_location = "/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author";
refresh_pages_string = "/login";
refresh_pages_string = refresh_pages_string.replace(/ /g,'');
refresh_pages_array = refresh_pages_string.split(',');
notification.html(message)
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
.delay(2000).slideUp();
if(action == "/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" && current_location.indexOf("/login") == -1 && refresh_pages_string != '' && (!refresh_pages_array.includes(current_location) || refresh_pages_string == "/login" )){
window.location.href = window.location.href+'?logged';
} else {
window.location.href = redirect_url;
}
fv.resetForm(true);
}
if(form_action_div != '.newsletter_modal_form_container' && 'bootstrap_get_match_255' != 'whmcs_billing_address'){
$('.modal-backdrop').hide();
}
} else {
bdCaptchaReset(formElement.attr('id'));
if (!data['message']) {
var message = `You entered invalid data. Please try to save again.`;
} else {
var message = data['message'];
}
$("#bootstrap_get_match_255-notification").html(message)
.addClass("alert-danger-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-warning-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
}
counterSubmit = 0;
},
error: function (e) {
bdCaptchaReset(formElement.attr('id'));
$("#bootstrap_get_match_255-notification").html(`A connection error occurred while saving. Please try to save again.`)
.addClass("alert-warning-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
counterSubmit = 0;
}
});/// End Ajax
}
}//END else
}).bind('keydown', function(event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
var nativeForm = $(this)[0];
if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
event.preventDefault();
return false;
}
$(this).submit();
break;
}
}
});
/// This will turn any select2 that are required in the form builder to being required elements.
$('#bootstrap_get_match_255 select').each(function (i, obj) {
setTimeout(function(){
if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
$(obj).css("z-index","-999");
$(obj).css("height","0");
$(obj).css("width","0");
$(obj).css("display","block");
$(obj).css("position","absolute");
}
}, 3000);
});
// Clear required-error messages when user fills in a required field
$('#bootstrap_get_match_255').on('keyup change', '[required]', function() {
var val = $(this).val();
if (val !== '' && val !== null && val.trim() !== '') {
var $group = $(this).closest('.form-group');
// Remove only this handler's own required message
$(this).siblings('.required-error').remove();
// Keep has-error if another FormValidation validator is still failing
// (e.g. stringLength, regexp). has-error is shared, so removing it
// wholesale would clobber other validators' red styling.
if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$group.removeClass('has-error');
}
}
});
});//END $('# echo $_SERVER[form_element_id]; ').formValidation(
</script>
<script>
// Get share URL from og:url meta tag, fallback to current page URL
var shareUrl = (function() {
var ogUrl = document.querySelector('meta[property="og:url"]');
return ogUrl ? ogUrl.getAttribute('content') : window.location.href;
})();
// Copy link to clipboard and show confirmation feedback
function copyShareLink(btn) {
navigator.clipboard.writeText(shareUrl);
var span = btn.querySelector('span');
var icon = btn.querySelector('i');
var originalText = span.textContent;
var originalIcon = icon.className;
span.textContent = 'Copied';
icon.className = 'bi bi-check-circle-fill';
setTimeout(function() {
span.textContent = originalText;
icon.className = originalIcon;
}, 2000);
}
// Track share windows to manage them properly
var shareWindows = {};
// Open share popup for specified platform (facebook, twitter, linkedin)
function openShareWindow(platform) {
var urls = {
facebook: 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(shareUrl),
twitter: 'https://twitter.com/intent/tweet?text=' + encodeURIComponent('Check out this page!' + '\n' + shareUrl),
linkedin: 'https://www.linkedin.com/feed/?shareActive=true&text=' + encodeURIComponent('Check out this page!' + '\n' + shareUrl)
};
var sizes = {
facebook: {w: 580, h: 400},
twitter: {w: 580, h: 400},
linkedin: {w: 580, h: 500}
};
var s = sizes[platform];
// Calculate center position relative to current window/monitor
var left = window.screenX + (window.outerWidth - s.w) / 2;
var top = window.screenY + (window.outerHeight - s.h) / 2;
// Close existing window for this platform if open
if (shareWindows[platform] && !shareWindows[platform].closed) {
shareWindows[platform].close();
}
shareWindows[platform] = window.open(urls[platform], platform + '-share', 'width=' + s.w + ',height=' + s.h + ',left=' + left + ',top=' + top + ',menubar=no,toolbar=no,resizable=yes,scrollbars=yes');
}
</script><script>
$('#newsletter input[name="email"]').on('keypress', function() {
$("#newsletter > .gdpr_consent_email").show();
});
$('#newsletter_signup_footer input[name="email"]').on('keypress', function() {
$("#newsletter_signup_footer > .gdpr_consent_email").show();
});
</script> <script type="text/javascript">
var counterSubmit = 0;
$(document).ready(function() {
/* grecaptcha.reset() with no argument always resets widget 0. On a page with two
captcha holders that clears the wrong checkbox, so the widget the visitor solved
keeps a token Google has already spent and every retry fails the security check.
captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
an undefined id means no per-form id is known and the arg-less call is used,
exactly as before. */
function bdCaptchaWidgetId(formId) {
if (typeof captchaHolders === "undefined" || !formId) {
return undefined;
}
/* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
the holder element itself so the counter never has to be reconstructed. */
var form = document.getElementById(formId);
var holder = form && form.querySelector(".g-recaptcha");
return holder ? captchaHolders[holder.id] : undefined;
}
function bdCaptchaReset(formId) {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
return;
}
var widgetId = bdCaptchaWidgetId(formId);
if (widgetId === undefined) {
grecaptcha.reset();
} else {
grecaptcha.reset(widgetId);
}
}
// Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
// rules for fields that are NOT rendered in this form (conditionally-rendered or
// duplicated form configs). Those phantom rules make formValidation mis-evaluate
// isValid(), so an empty required field bypasses validation and submits natively.
// Remove any rule whose field has no matching element before initializing.
// NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
// REMOVES rules (never adds validators, never overrides native submit, never
// intercepts on capture phase, never re-validates on click) — so it cannot
// reproduce the "Save button slides down / nav broken / no success message"
// regression that caused #5902 to be rolled back on site 19413.
var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}}}};
var formElement = $(`form[name='newsletter_modal_signup_380']`);
if(validatorConfig && validatorConfig.fields) {
Object.keys(validatorConfig.fields).forEach(function(fieldName) {
if(formElement.find('[name="' + fieldName + '"]').length === 0) {
delete validatorConfig.fields[fieldName];
}
});
}
// Scroll to the first invalid field when submit fails validation,
// so the user can immediately see why the form will not submit
formElement.on('err.form.fv', function(e) {
var $firstError = $(e.target).find('.form-group.has-error').first();
if ($firstError.length) {
$('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
}
});
formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
if('newsletter_modal_signup' == 'unsubscribe_email'){
return true;
}
// Prevent form submission
e.preventDefault();
$form = $(e.target),
fv = $form.data('formValidation');
// Check HTML5 required fields that FormValidation may not know about
var requiredEmpty = false;
$form.find('[required]').each(function() {
var val = $(this).val();
if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
requiredEmpty = true;
$(this).closest('.form-group').addClass('has-error');
if ($(this).siblings('.required-error').length === 0) {
$(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>');
}
} else {
var $reqGroup = $(this).closest('.form-group');
$(this).siblings('.required-error').remove();
// Keep has-error if another validator is still failing for this field
if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$reqGroup.removeClass('has-error');
}
}
});
if (requiredEmpty) {
fv.disableSubmitButtons(false);
counterSubmit = 0;
// Scroll to the first field with an error (HTML5-required scan does
// not trigger err.form.fv, so handle the scroll here too)
var $firstReqError = $form.find('.form-group.has-error').first();
if ($firstReqError.length) {
$('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
}
return false;
}
var values = $(this).serialize();
var locationFieldCorrect = true;
if($("#newsletter_modal_signup_380 .location_required").length > 0){
$("#newsletter_modal_signup_380 .location_required").each(function (index) {
if($(this).data('state') == 1){
if($('#newsletter_modal_signup_380 input[name="lead_location"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lat"]').val() == "" || $('#newsletter_modal_signup_380 input[name="lng"]').val() == "") {
locationFieldCorrect = false;
}
}
});
}
if(locationFieldCorrect === false){
//check that there is a latitude or longitude
swal(`Whoops!`, `The location information is required to submit this form`, "error");
return false;
}
if (!$(this).attr("action")) {
var action = '';
} else {
var action = $(this).attr("action");
}
if (!$(this).attr("method")) {
var method = 'post';
} else {
var method = $(this).attr("method");
}
if (!$(this).attr("form_action_type")) {
var form_action_type = 'notification';
} else {
var form_action_type = $(this).attr("form_action_type");
}
if (!$(this).attr("form_action_div")) {
/* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
} else {
var form_action_div = $(this).attr("form_action_div");
}
if (!$(this).attr("return_data_type")) {
var return_data_type = 'json';
} else {
var return_data_type = $(this).attr("return_data_type");
}
var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
if (!submitInFlight) {
if ($("#newsletter_modal_signup_380-notification").html() != "") {
$("#newsletter_modal_signup_380-notification").remove();
}
if ($(this).find('input[type="submit"]').length > 0) {
$(this).find('input[type="submit"]').before('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
} else {
$(this).prepend('<div id="newsletter_modal_signup_380-notification" class="alert"></div>');
}
}
var notification = $("#newsletter_modal_signup_380-notification");
if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
setTimeout(function(){
fv.defaultSubmit();
}, 100);
} else {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
if(!submitInFlight) {
counterSubmit++;
$form.data('bdLastSubmitAt', Date.now());
var fields = $(this).serializeArray();
var formField = [];
var processData = true;
var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
if($("#newsletter_modal_signup_380 input[type=file]").length > 0){
var formObject = new FormData();
processData = false;
contentType = false;
$(fields).each(function(index,field){
formField.push(field.name+"="+field.value);
});
values = formField.join("&");
$(formField).each(function(index,fieldValue){
var fieldInfo = fieldValue.split('=');
formObject.append(fieldInfo[0],fieldInfo[1]);
});
$("#newsletter_modal_signup_380 input[type=file]").each(function(index,node){
var file = this.files[0];
if(typeof file != "undefined"){
formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
}
});
}else{
$(fields).each(function(index,field){
formField.push(field.name+"="+encodeURIComponent(field.value));
});
var formObject = formField.join("&");
}
$.ajax({
url: action,
type: method,
data: formObject,
dataType: return_data_type,
processData: processData,
contentType: contentType,
success: function (data) {
// Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
notification = $("#newsletter_modal_signup_380-notification");
if (return_data_type == "html") {
var result = 'success';
if (!data != "") {
var result_widget = data['result_widget'];
}
} else {
if (!data['result']) {
var result = 'error';
} else {
var result = data['result'];
}
if (!data['result_widget']) {
var result_widget = '';
} else {
var result_widget = data['result_widget'];
}
}
if (result == "success") {
if (!data['message']) {
var message = `Your information has submitted successfully!`;
} else {
var message = data['message'];
}
if (!data['redirect_url']) {
var redirect_url = '';
} else {
var redirect_url = data['redirect_url'];
}
if (form_action_type == "notification") {
if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
if (notification.parents('.modal').length) {
$('.modal-backdrop').hide();
$('.modal').modal('hide');
}
window.location.href = redirect_url;
fv.resetForm(true);
} else {
notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>')
.addClass('alert-dismissible')
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
if(notification.parents('.modal').length && 'newsletter_modal_signup_380' == 'whmcs_billing_address'){
setTimeout(function(){
notification.parents('.modal').modal('hide');
}, 1000);
}
}
} else if (form_action_type == "widget") {
if (result_widget != '') {
setTimeout(function(){
if(form_action_div != '.newsletter_modal_form_container'){
$("html, body").animate({ scrollTop: 0 }, 600);
}
$(form_action_div).html(decodeHtml(result_widget)).text();
}, 1000);
}
} else if (form_action_type == "redirect") {
if (redirect_url == "") {
redirect_url = decodeURIComponent("");
}
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
current_location = "/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author";
refresh_pages_string = "/login";
refresh_pages_string = refresh_pages_string.replace(/ /g,'');
refresh_pages_array = refresh_pages_string.split(',');
notification.html(message)
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
.delay(2000).slideUp();
if(action == "/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" && current_location.indexOf("/login") == -1 && refresh_pages_string != '' && (!refresh_pages_array.includes(current_location) || refresh_pages_string == "/login" )){
window.location.href = window.location.href+'?logged';
} else {
window.location.href = redirect_url;
}
fv.resetForm(true);
}
if(form_action_div != '.newsletter_modal_form_container' && 'newsletter_modal_signup_380' != 'whmcs_billing_address'){
$('.modal-backdrop').hide();
}
} else {
bdCaptchaReset(formElement.attr('id'));
if (!data['message']) {
var message = `You entered invalid data. Please try to save again.`;
} else {
var message = data['message'];
}
$("#newsletter_modal_signup_380-notification").html(message)
.addClass("alert-danger-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-warning-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
}
counterSubmit = 0;
},
error: function (e) {
bdCaptchaReset(formElement.attr('id'));
$("#newsletter_modal_signup_380-notification").html(`A connection error occurred while saving. Please try to save again.`)
.addClass("alert-warning-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
counterSubmit = 0;
}
});/// End Ajax
}
}//END else
}).bind('keydown', function(event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
var nativeForm = $(this)[0];
if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
event.preventDefault();
return false;
}
$(this).submit();
break;
}
}
});
/// This will turn any select2 that are required in the form builder to being required elements.
$('#newsletter_modal_signup_380 select').each(function (i, obj) {
setTimeout(function(){
if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
$(obj).css("z-index","-999");
$(obj).css("height","0");
$(obj).css("width","0");
$(obj).css("display","block");
$(obj).css("position","absolute");
}
}, 3000);
});
// Clear required-error messages when user fills in a required field
$('#newsletter_modal_signup_380').on('keyup change', '[required]', function() {
var val = $(this).val();
if (val !== '' && val !== null && val.trim() !== '') {
var $group = $(this).closest('.form-group');
// Remove only this handler's own required message
$(this).siblings('.required-error').remove();
// Keep has-error if another FormValidation validator is still failing
// (e.g. stringLength, regexp). has-error is shared, so removing it
// wholesale would clobber other validators' red styling.
if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$group.removeClass('has-error');
}
}
});
});//END $('# echo $_SERVER[form_element_id]; ').formValidation(
</script>
<div class="modal fade" id="newsletter_subscribe_modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h3 class="nomargin">
Join Our Newsletter - Today
</h3>
<hr>
<div class="newsletter_modal_form_container">
<style type="text/css">label span.required { color: #B94A48; }span.help-inline, span.help-block {font-size: .9em; }</style><form action="/api/widget/json/get/Bootstrap%20Theme%20-%20Module%20-%20Newsletter%20Actions" id="newsletter_modal_signup_380" method="post" labelwidth="100" labelpaddingtop="0.5em" enctype="multipart/form-data" form_action_type="widget" form_action_div=".newsletter_modal_form_container" return_data_type="" name="newsletter_modal_signup_380" class=" "><input type="hidden" name="sized" value="0" id="newsletter_modal_signup_380-element-0"/><input type="hidden" name="form" value="myform" id="newsletter_modal_signup_380-element-1"/><input type="hidden" name="formname" value="newsletter_modal_signup" id="newsletter_modal_signup_380-element-2"/><input type="hidden" name="dowiz" value="1" id="newsletter_modal_signup_380-element-3"/><input type="hidden" name="save" value="1" id="newsletter_modal_signup_380-element-4"/><input type="hidden" name="url_origin_pars" value="/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author" id="newsletter_modal_signup_380-element-5"/><input type="hidden" name="action" autocomplete="off" value="subscribe" id="newsletter_modal_signup_380-element-6"/><div class="form-group"><input type="text" name="first_name" placeholder="Name" autocomplete="off" value class="form-control control-group form-control " id="newsletter_modal_signup_380-element-7"/></div><div class="form-group"><input type="email" name="email" required placeholder="Enter email address" autocomplete="off" value class="form-control control-group form-control" id="newsletter_modal_signup_380-element-8"/></div><div class="form-group"><div class="form-group security_question_label">
<div id="newsletter_modal_signup_380-captchaContainer" class="control-group">
<div class="g-recaptcha" id="newsletter_modal_signup_380-google-recaptcha"></div>
</div>
<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>
<div class="clearfix bmargin"></div>
<input type="hidden" name="recaptcha" id="newsletter_modal_signup_380-rcap">
</div>
<style>
.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 {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
.modal #newsletter_modal_signup_380-captchaContainer, .col-md-4 #newsletter_modal_signup_380-captchaContainer, .col-md-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-3 #newsletter_modal_signup_380-captchaContainer, .col-lg-4 #newsletter_modal_signup_380-captchaContainer {
transform: scale(0.77);
-webkit-transform: scale(0.77);
transform-origin: 0 0;
-webkit-transform-origin: 0 0;
margin-bottom: -15px;
}
</style>
<script type="text/javascript">
if(typeof formsFound == "undefined"){
var formID = '';
var currentCaptcha = {};
var captchaHolders = {};
var formsFound = {};
var captchaApiRequested = false;
/* The forms the visitor has actually interacted with - only these get a widget. */
var captchaArmedForms = [];
/* api.js stays lazy - nothing is fetched from Google until the visitor actually
touches the form. 'click' alone was too narrow: a keyboard-only visitor tabs in
and presses Enter without ever clicking, so api.js never loaded, the captcha
never rendered, and the form POSTed an empty token. */
var captchaTriggerEvents = ['click', 'keydown', 'focusin', 'touchstart'];
window.addEventListener('load', () => {
formID = document.querySelectorAll('[name="recaptcha"]');
if (typeof formID != "undefined" && formID !== null) {
for (let i = 0; i < formID.length; i++) {
let formIDForm = formID[i].closest('form');
let captchaHolder = formIDForm.querySelector(".g-recaptcha");
if (typeof formsFound[formIDForm.id] != "undefined") {
formsFound[formIDForm.id]['counter']++;
}else{
formsFound[formIDForm.id] = {'counter' : 1};
}
formIDForm.setAttribute('data-counter', formsFound[formIDForm.id]['counter']);
captchaHolder.setAttribute('id',captchaHolder.id+'-'+formsFound[formIDForm.id]['counter']);
if (typeof formIDForm != "undefined" && formIDForm !== null) {
captchaTriggerEvents.forEach( evt =>
formIDForm.addEventListener(evt, reCaptchaOnFormInteraction, false)
);
}
}
}
});
}
function reCaptchaOnFormInteraction(event) {
if (event && event.currentTarget) {
captchaArmForm(event.currentTarget);
}
if (captchaApiRequested) {
renderArmedCaptchas();
return;
}
captchaApiRequested = true;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=en';
head.appendChild(script);
}
var captchaArmForm = function (formEl) {
if (!formEl) {
return;
}
for (var a = 0; a < captchaArmedForms.length; a++) {
if (captchaArmedForms[a] === formEl) {
return;
}
}
captchaArmedForms.push(formEl);
};
var captchaSolvedCallback = function (holder) {
return function () {
var formEl = holder.closest('form');
if (!formEl) {
return;
}
$(formEl).find('.security_question_label').removeClass('has-error');
$(formEl).find('#recaptcha_error').css('display', 'none');
var notification = document.getElementById(formEl.id + '-notification');
if (notification && notification.classList.contains('alert-danger-subtle')) {
$(notification).slideUp();
}
};
};
var renderArmedCaptchas = function () {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.render !== "function") {
return;
}
for (var f = 0; f < captchaArmedForms.length; f++) {
var holder = captchaArmedForms[f].querySelector('div[class=g-recaptcha]');
if (!holder || !holder.id || holder.getClientRects().length === 0) {
continue;
}
/* Guard a second render: grecaptcha throws on an element it already claimed. */
if (typeof captchaHolders[holder.id] === "undefined") {
captchaHolders[holder.id] = grecaptcha.render(holder.id, {
'sitekey': '6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_',
'callback': captchaSolvedCallback(holder)
});
}
}
};
var onloadCallback = function (event) {
renderArmedCaptchas();
};
</script>
<script>
$(document).ready(function(){
/* Implicit submission (Enter inside a field) fires 'submit' without firing a click on
the submit button, so the click guard below never sees it and the form POSTed an
empty token. Bound on document/capture so it runs before FormValidation's own
handler on the form - at AT_TARGET the capture flag does not order listeners, so a
listener on the form itself would not reliably win. Native HTMLFormElement.submit()
does not dispatch 'submit', so the solved-captcha path below is unaffected. */
var captchaGuardedForm = document.getElementById('newsletter_modal_signup_380');
if (captchaGuardedForm) {
document.addEventListener('submit', function (event) {
if (event.target !== captchaGuardedForm) {
return;
}
var formId = captchaGuardedForm.id;
var captchaHolderKey = formId + "-google-recaptcha-" + $(captchaGuardedForm).data('counter');
var captchaRendered = typeof captchaHolders[captchaHolderKey] != "undefined";
if (captchaRendered && grecaptcha.getResponse(captchaHolders[captchaHolderKey]) !== "") {
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
return;
}
/* Unsolved, or api.js still in flight: either way there is no token to send. */
event.preventDefault();
event.stopImmediatePropagation();
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}, true);
}
$("#newsletter_modal_signup_380 input[type=submit]").unbind('click');
$("#newsletter_modal_signup_380 input[type=submit]").click(function (event) {
var formId = $(this.form).attr('id');
var captchaHolderKey = formId + "-google-recaptcha-" +$(this.form).data('counter');
if (typeof captchaHolders[captchaHolderKey] != "undefined") {
if (grecaptcha.getResponse(captchaHolders[captchaHolderKey]) === "") {
event.preventDefault();
$("#" + formId).formValidation('validate');
$("#" + formId + " .security_question_label").addClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "block");
return false;
}
/* Solved captcha: clear the error UI and let the click proceed untouched.
The browser then fires a REAL, button-initiated submit event, so
FormValidation runs its normal chain (success.form.fv -> AJAX modal on
checkout / native POST on login). Re-submitting here artificially broke
both ways: native form.submit() skips the FV chain (checkout rendered the
raw JSON response), and jQuery .submit() fires a synthetic submit that FV
refuses, leaving the form stuck after the first error (Bug 2). */
$("#" + formId + " .security_question_label").removeClass("has-error");
$("#" + formId + " #recaptcha_error").css("display", "none");
}
});
});
</script></div><div class="form-group"><input type="hidden" name="bd_hpc" autocomplete="off" value class="form-control control-group " id="newsletter_modal_signup_380-element-11"/></div><div class="form-actions"><input type="submit" value="Subscribe Now" name class="btn btn-primary btn-block btn-lg bold " id="newsletter_modal_signup_380-element-12"/></div><input type='hidden' name='origin' value='/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author'></form><script type="text/javascript">jQuery(document).ready(function() { jQuery("#newsletter_modal_signup_380").bind("submit", function() {
});}); </script> </div>
<br>
</div>
</div>
</div>
</div>
</div>
</div><script type="text/javascript">
(function () {
try {
var email = new URLSearchParams(window.location.search).get('email');
if (!email) { return; }
email = email.trim();
if (email.indexOf('@') === -1) { return; }
/* Sets the input value property (never HTML) -> XSS-safe regardless of the query value. */
var fill = function () {
var fields = document.querySelectorAll('input[name="email_r"]');
for (var i = 0; i < fields.length; i++) {
if (!fields[i].value) { fields[i].value = email; }
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', fill);
} else {
fill();
}
} catch (e) {}
})();
</script>
<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/formValidation.min.js"></script>
<script src="https://www.optimizecdn.com/directory/cdn/bootstrap/formvalidation/current/dist/js/framework/bootstrap.min.js"></script>
<script type="text/javascript">
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
// Override FormValidation URI validator to prevent recursion with URLs that contain @ characters
$(function() {
function applyFix() {
// Check if FormValidation library and URI validator are loaded
if (FormValidation && FormValidation.Validator && FormValidation.Validator.uri) {
FormValidation.Validator.uri.validate = function(validator, $field, options) {
var value = validator.getFieldValue($field, 'uri').trim();
return value === '' || new RegExp('^https?://[^\\s]+\\.[^\\s]{2,}').test(value);
};
return true;
}
return false;
}
if (!applyFix()) {
setTimeout(applyFix, 50);
}
});
</script>
<script type="text/javascript">
var counterSubmit = 0;
$(document).ready(function() {
/* grecaptcha.reset() with no argument always resets widget 0. On a page with two
captcha holders that clears the wrong checkbox, so the widget the visitor solved
keeps a token Google has already spent and every retry fails the security check.
captchaHolders is published by widget 1995 keyed by "<formId>-google-recaptcha";
an undefined id means no per-form id is known and the arg-less call is used,
exactly as before. */
function bdCaptchaWidgetId(formId) {
if (typeof captchaHolders === "undefined" || !formId) {
return undefined;
}
/* recaptcha.php renames each holder to "<id>-<counter>" before render (recaptcha.php ~L84),
so captchaHolders is keyed by the RENAMED id - not "<formId>-google-recaptcha". Resolve from
the holder element itself so the counter never has to be reconstructed. */
var form = document.getElementById(formId);
var holder = form && form.querySelector(".g-recaptcha");
return holder ? captchaHolders[holder.id] : undefined;
}
function bdCaptchaReset(formId) {
if (typeof grecaptcha === "undefined" || typeof grecaptcha.reset !== "function") {
return;
}
var widgetId = bdCaptchaWidgetId(formId);
if (widgetId === undefined) {
grecaptcha.reset();
} else {
grecaptcha.reset(widgetId);
}
}
// Ghost-field strip (card d4tk1CMp): the server-side validator config can carry
// rules for fields that are NOT rendered in this form (conditionally-rendered or
// duplicated form configs). Those phantom rules make formValidation mis-evaluate
// isValid(), so an empty required field bypasses validation and submits natively.
// Remove any rule whose field has no matching element before initializing.
// NOTE: this is the ONLY layer re-applied from reverted PR #5902. It strictly
// REMOVES rules (never adds validators, never overrides native submit, never
// intercepts on capture phase, never re-validates on click) — so it cannot
// reproduce the "Save button slides down / nav broken / no success message"
// regression that caused #5902 to be rolled back on site 19413.
var validatorConfig = {"framework":"bootstrap","addOns":{"reCaptcha2":{"element":"captchaContainer","language":"en","theme":"light","siteKey":"6LdJbVYUAAAAAFnIghTlU5XqCwP6ekyyMyG6bY9_","timeout":"120","message":"The captcha is not valid"}},"fields":{"email":{"validators":{"notEmpty":{"message":"Required Field"},"emailAddress":{"message":"Please enter a valid email address"}}},"pass":{"validators":{"notEmpty":{"message":"Required Field"}}}}};
var formElement = $(`form[name='member_login_190-1']`);
if(validatorConfig && validatorConfig.fields) {
Object.keys(validatorConfig.fields).forEach(function(fieldName) {
if(formElement.find('[name="' + fieldName + '"]').length === 0) {
delete validatorConfig.fields[fieldName];
}
});
}
// Scroll to the first invalid field when submit fails validation,
// so the user can immediately see why the form will not submit
formElement.on('err.form.fv', function(e) {
var $firstError = $(e.target).find('.form-group.has-error').first();
if ($firstError.length) {
$('html, body').animate({ scrollTop: $firstError.offset().top - 100 }, 700);
}
});
formElement.formValidation(validatorConfig).on('success.form.fv', function(e,fvdata) {
if('member_login' == 'unsubscribe_email'){
return true;
}
// Prevent form submission
e.preventDefault();
$form = $(e.target),
fv = $form.data('formValidation');
// Check HTML5 required fields that FormValidation may not know about
var requiredEmpty = false;
$form.find('[required]').each(function() {
var val = $(this).val();
if (val === '' || val === null || (typeof val === 'string' && val.trim() === '')) {
requiredEmpty = true;
$(this).closest('.form-group').addClass('has-error');
if ($(this).siblings('.required-error').length === 0) {
$(this).after('<small class="required-error help-block" style="color:#a94442;">Required Field</small>');
}
} else {
var $reqGroup = $(this).closest('.form-group');
$(this).siblings('.required-error').remove();
// Keep has-error if another validator is still failing for this field
if ($reqGroup.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$reqGroup.removeClass('has-error');
}
}
});
if (requiredEmpty) {
fv.disableSubmitButtons(false);
counterSubmit = 0;
// Scroll to the first field with an error (HTML5-required scan does
// not trigger err.form.fv, so handle the scroll here too)
var $firstReqError = $form.find('.form-group.has-error').first();
if ($firstReqError.length) {
$('html, body').animate({ scrollTop: $firstReqError.offset().top - 100 }, 700);
}
return false;
}
var values = $(this).serialize();
var locationFieldCorrect = true;
if($("#member_login_190-1 .location_required").length > 0){
$("#member_login_190-1 .location_required").each(function (index) {
if($(this).data('state') == 1){
if($('#member_login_190-1 input[name="lead_location"]').val() == "" || $('#member_login_190-1 input[name="lat"]').val() == "" || $('#member_login_190-1 input[name="lng"]').val() == "") {
locationFieldCorrect = false;
}
}
});
}
if(locationFieldCorrect === false){
//check that there is a latitude or longitude
swal(`Whoops!`, `The location information is required to submit this form`, "error");
return false;
}
if (!$(this).attr("action")) {
var action = '';
} else {
var action = $(this).attr("action");
}
if (!$(this).attr("method")) {
var method = 'post';
} else {
var method = $(this).attr("method");
}
if (!$(this).attr("form_action_type")) {
var form_action_type = 'notification';
} else {
var form_action_type = $(this).attr("form_action_type");
}
if (!$(this).attr("form_action_div")) {
/* Empty "ID to Replace" default: prefer #main-content, fall back to legacy #first_container if absent */
var form_action_div = $('#main-content').length ? '#main-content' : '#first_container';
} else {
var form_action_div = $(this).attr("form_action_div");
}
if (!$(this).attr("return_data_type")) {
var return_data_type = 'json';
} else {
var return_data_type = $(this).attr("return_data_type");
}
var submitInFlight = counterSubmit != 0 || (Date.now() - ($form.data('bdLastSubmitAt') || 0) < 5000);
if (!submitInFlight) {
if ($("#member_login_190-1-notification").html() != "") {
$("#member_login_190-1-notification").remove();
}
if ($(this).find('input[type="submit"]').length > 0) {
$(this).find('input[type="submit"]').before('<div id="member_login_190-1-notification" class="alert"></div>');
} else {
$(this).prepend('<div id="member_login_190-1-notification" class="alert"></div>');
}
}
var notification = $("#member_login_190-1-notification");
if ((form_action_type == "" || form_action_type == "default") && action.indexOf("account") >= 0) {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
setTimeout(function(){
fv.defaultSubmit();
}, 100);
} else {
notification.html(`Processing Request...`).addClass("alert-warning-subtle");
if(!submitInFlight) {
counterSubmit++;
$form.data('bdLastSubmitAt', Date.now());
var fields = $(this).serializeArray();
var formField = [];
var processData = true;
var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
if($("#member_login_190-1 input[type=file]").length > 0){
var formObject = new FormData();
processData = false;
contentType = false;
$(fields).each(function(index,field){
formField.push(field.name+"="+field.value);
});
values = formField.join("&");
$(formField).each(function(index,fieldValue){
var fieldInfo = fieldValue.split('=');
formObject.append(fieldInfo[0],fieldInfo[1]);
});
$("#member_login_190-1 input[type=file]").each(function(index,node){
var file = this.files[0];
if(typeof file != "undefined"){
formObject.append("file_addon["+$(node).attr('name')+"]", file, file.name);
}
});
}else{
$(fields).each(function(index,field){
formField.push(field.name+"="+encodeURIComponent(field.value));
});
var formObject = formField.join("&");
}
$.ajax({
url: action,
type: method,
data: formObject,
dataType: return_data_type,
processData: processData,
contentType: contentType,
success: function (data) {
// Re-query live node: success.form.fv fires twice, orphaning the closure ref captured above.
notification = $("#member_login_190-1-notification");
if (return_data_type == "html") {
var result = 'success';
if (!data != "") {
var result_widget = data['result_widget'];
}
} else {
if (!data['result']) {
var result = 'error';
} else {
var result = data['result'];
}
if (!data['result_widget']) {
var result_widget = '';
} else {
var result_widget = data['result_widget'];
}
}
if (result == "success") {
if (!data['message']) {
var message = `Your information has submitted successfully!`;
} else {
var message = data['message'];
}
if (!data['redirect_url']) {
var redirect_url = '';
} else {
var redirect_url = data['redirect_url'];
}
if (form_action_type == "notification") {
if (redirect_url && (action.indexOf('Member%20Login%20Page') >= 0 || action.indexOf('Member Login Page') >= 0)) {
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
if (notification.parents('.modal').length) {
$('.modal-backdrop').hide();
$('.modal').modal('hide');
}
window.location.href = redirect_url;
fv.resetForm(true);
} else {
notification.html(message + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>')
.addClass('alert-dismissible')
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
if(notification.parents('.modal').length && 'member_login_190-1' == 'whmcs_billing_address'){
setTimeout(function(){
notification.parents('.modal').modal('hide');
}, 1000);
}
}
} else if (form_action_type == "widget") {
if (result_widget != '') {
setTimeout(function(){
if(form_action_div != '.newsletter_modal_form_container'){
$("html, body").animate({ scrollTop: 0 }, 600);
}
$(form_action_div).html(decodeHtml(result_widget)).text();
}, 1000);
}
} else if (form_action_type == "redirect") {
if (redirect_url == "") {
redirect_url = decodeURIComponent("");
}
if (redirect_url.substring(0, 1) != "/" && redirect_url.substring(0, 1) != "h") {
redirect_url = "/" + redirect_url;
}
current_location = "/blog/visa-for-greek-citizens-canada-tourist-and-business-visa-electronic-travel-authority-from-immigration-and-government-office-of-canada-visa-application-from-the-government-of-canada-visa-application-center-for-electronic-electronic-evisa-travel-author";
refresh_pages_string = "/login";
refresh_pages_string = refresh_pages_string.replace(/ /g,'');
refresh_pages_array = refresh_pages_string.split(',');
notification.html(message)
.addClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.removeClass("alert-warning-subtle")
.delay(2000).slideUp();
if(action == "/api/widget/json/get/Bootstrap%20Theme%20-%20Member%20Login%20Page" && current_location.indexOf("/login") == -1 && refresh_pages_string != '' && (!refresh_pages_array.includes(current_location) || refresh_pages_string == "/login" )){
window.location.href = window.location.href+'?logged';
} else {
window.location.href = redirect_url;
}
fv.resetForm(true);
}
if(form_action_div != '.newsletter_modal_form_container' && 'member_login_190-1' != 'whmcs_billing_address'){
$('.modal-backdrop').hide();
}
} else {
bdCaptchaReset(formElement.attr('id'));
if (!data['message']) {
var message = `You entered invalid data. Please try to save again.`;
} else {
var message = data['message'];
}
$("#member_login_190-1-notification").html(message)
.addClass("alert-danger-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-warning-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
}
counterSubmit = 0;
},
error: function (e) {
bdCaptchaReset(formElement.attr('id'));
$("#member_login_190-1-notification").html(`A connection error occurred while saving. Please try to save again.`)
.addClass("alert-warning-subtle")
.removeClass("alert-success-subtle")
.removeClass("alert-danger-subtle")
.fadeIn();
fv.disableSubmitButtons(false);
counterSubmit = 0;
}
});/// End Ajax
}
}//END else
}).bind('keydown', function(event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
var nativeForm = $(this)[0];
if (nativeForm && typeof nativeForm.reportValidity === 'function' && !nativeForm.reportValidity()) {
event.preventDefault();
return false;
}
$(this).submit();
break;
}
}
});
/// This will turn any select2 that are required in the form builder to being required elements.
$('#member_login_190-1 select').each(function (i, obj) {
setTimeout(function(){
if ($(obj).prop("required") && $(obj).attr("style") == "display: none;") {
$(obj).css("z-index","-999");
$(obj).css("height","0");
$(obj).css("width","0");
$(obj).css("display","block");
$(obj).css("position","absolute");
}
}, 3000);
});
// Clear required-error messages when user fills in a required field
$('#member_login_190-1').on('keyup change', '[required]', function() {
var val = $(this).val();
if (val !== '' && val !== null && val.trim() !== '') {
var $group = $(this).closest('.form-group');
// Remove only this handler's own required message
$(this).siblings('.required-error').remove();
// Keep has-error if another FormValidation validator is still failing
// (e.g. stringLength, regexp). has-error is shared, so removing it
// wholesale would clobber other validators' red styling.
if ($group.find('small[data-fv-validator][data-fv-result="INVALID"]').length === 0) {
$group.removeClass('has-error');
}
}
});
});//END $('# echo $_SERVER[form_element_id]; ').formValidation(
</script>
<script>
window.addEventListener('load', (event) => {
setTimeout(() => {
}, 501);
});
</script>
<script>
function decision(message, url) {
if (confirm(message)) {
setTimeout(function () {
window.location = url;
}, 0);
}
}
</script>
<script>
// Function to add alt, width, and height attributes to <img> elements without them
function addAttributesToImages() {
var images = document.querySelectorAll('img:not([alt]), img:not([width]), img:not([height])');
Array.prototype.forEach.call(images, function(img) {
// Skip if we've already processed this image
if (img.dataset.processed === 'true') {
return;
}
// Mark this image as being processed
img.dataset.processed = 'true';
// Add alt attribute if missing
if (!img.hasAttribute('alt')) {
var src = img.getAttribute('src') || 'image'; // Default src to 'image' if missing
var altText = src.split('/').pop().split('?')[0].replace(/\.\w+$/, '');
try {
altText = decodeURIComponent(altText)
.replace(/[_\-+,.:;]+/g, ' ')
.replace(/\s+/g, ' ')
.trim();
} catch (e) {
altText = 'image'; // Fallback to 'image' if decoding fails
}
// Ensure altText is not empty, otherwise use 'image'
altText = altText || 'image';
img.setAttribute('alt', altText);
}
// Add width and height attributes if missing
if (!img.hasAttribute('width') || !img.hasAttribute('height')) {
// Handle SVG differently
if (img.src && img.src.endsWith('.svg')) {
// For SVG, use the viewBox to set width and height, if available
fetch(img.src)
.then(response => {
if (!response.ok) {
throw new Error('Failed to fetch SVG: ' + response.status);
}
return response.text();
})
.then(svgText => {
var parser = new DOMParser();
var svgDoc = parser.parseFromString(svgText, "image/svg+xml");
var svgElement = svgDoc.querySelector('svg');
if (svgElement) {
var viewBox = svgElement.getAttribute('viewBox');
if (viewBox) {
var viewBoxValues = viewBox.split(' ');
var width = viewBoxValues[2];
var height = viewBoxValues[3];
if (!img.hasAttribute('width')) {
img.setAttribute('width', width);
}
if (!img.hasAttribute('height')) {
img.setAttribute('height', height);
}
}
}
})
.catch(error => {
// Fallback to default dimensions for SVG
if (!img.hasAttribute('width')) {
img.setAttribute('width', '100');
}
if (!img.hasAttribute('height')) {
img.setAttribute('height', '100');
}
});
} else {
// For non-SVG images, use natural dimensions
var tempImg = new Image();
tempImg.src = img.src;
tempImg.onload = function() {
if (!img.hasAttribute('width')) {
img.setAttribute('width', tempImg.naturalWidth);
}
if (!img.hasAttribute('height')) {
img.setAttribute('height', tempImg.naturalHeight);
}
};
tempImg.onerror = function() {
// Fallback to default dimensions
if (!img.hasAttribute('width')) {
img.setAttribute('width', '100');
}
if (!img.hasAttribute('height')) {
img.setAttribute('height', '100');
}
};
}
}
});
}
document.addEventListener('DOMContentLoaded', function() {
// Run the function initially to catch images already in the DOM
addAttributesToImages();
// Create a MutationObserver to monitor the DOM for added/changed images
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes.length > 0 || mutation.type === 'attributes') {
// Only process if we have new images or src attribute changes
var hasNewImages = false;
if (mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(function(node) {
if (node.nodeType === 1) { // Element node
if (node.tagName === 'IMG' || node.querySelectorAll) {
hasNewImages = true;
}
}
});
}
if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
hasNewImages = true;
}
if (hasNewImages) {
addAttributesToImages();
}
}
});
});
// Start observing the document body for changes
observer.observe(document.body, {
childList: true, // Watch for added or removed nodes
subtree: true, // Watch the entire subtree
attributes: true, // Watch for attribute changes
attributeFilter: ['src'] // Specifically watch for changes in the 'src' attribute
});
});
</script><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] {
cursor: wait
}
select.select2-preload {
line-height: initial;
}
select#sid, select#tid, select#ttid, select.combobox, select#bd-chained, select#category-chained, select.infinite-chained, select.subcategory-chained, select.search-chained, select#country-chained, select#state-chained, select#country-chained-2, select#state-chained-2, select#profession_id, [name^="bd_phone_country_code"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-image: url(/images/select2ArrowDown.png) !important;
background-repeat: no-repeat !important;
background-size: 10px 9px !important;
background-position: 99% 16px;
border-radius: 6px;
overflow: hidden;
}
.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"] {
background-position: 98.2% 12px;
} </style> <!-- DROPDOWN SELECT SCRIPT -->
<!-- Select2 CSS Included in website-styles.pkgd.min.css -->
<!--[if lt IE 9]>
<script defer src="https://www.optimizecdn.com/directory/cdn/assets/html5shiv/3.7.2/html5shiv.min.js"></script>
<script defer src="https://www.optimizecdn.com/directory/cdn/bootstrap/select2/master/js/respond.min.js"></script>
<![endif]-->
<script>
var preloaded_ttid = false;
var preloaded_tid = false;
var preloaded_sid = false;
var path2 = window.location.pathname.replace(/\//g, "_");
if (performance.navigation.type !== 2) {
if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
sessionStorage.removeItem('select2-ttid'+path2);
}
if (sessionStorage.getItem('select2-tid'+path2) !== null) {
sessionStorage.removeItem('select2-tid'+path2);
}
if (sessionStorage.getItem('select2-sid'+path2) !== null) {
sessionStorage.removeItem('select2-sid'+path2);
}
}else if(performance.navigation.type === 2){
if (sessionStorage.getItem('select2-ttid'+path2) !== null) {
preloaded_ttid = sessionStorage.getItem('select2-ttid'+path2);
}
if (sessionStorage.getItem('select2-tid'+path2) !== null) {
preloaded_tid = sessionStorage.getItem('select2-tid'+path2);
}
if (sessionStorage.getItem('select2-sid'+path2) !== null) {
preloaded_sid = sessionStorage.getItem('select2-sid'+path2);
}
}
window.addEventListener('load', () => {
let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]');
if (typeof select2Inputs != "undefined") {
for (let i = 0; i < select2Inputs.length; i++) {
let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
if (!select2Inputs[i].getAttribute('placeholder')) {
inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
}
let countryCode = select2Inputs[i].getAttribute('data-country-code');
if (select2Inputs[i].getAttribute('data-country-code') != null && countryCode > 0 && typeof isoCountries != 'undefined') {
for (let c = 0; c < isoCountries.length; c++) {
if(isoCountries[c].id == countryCode){
// select2Inputs[i].querySelector('option:first-child').text = isoCountries[c].text;
select2Inputs[i].text = isoCountries[c].text;
}
}
}
if(select2Inputs[i].hasAttribute('data-country-code')){
inputPlaceHolder = null; //reset the input
}
if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
select2Inputs[i].querySelector('option:first-child').text = inputPlaceHolder;
select2Inputs[i].style.color = "#a8a8a8";
if(!select2Inputs[i].querySelector('option:first-child').hasAttribute('value')){
select2Inputs[i].querySelector('option:first-child').value='';
}
}
select2Inputs[i].classList.add("select2-preload");
select2Inputs[i].addEventListener('mousedown', select2OnFormClick, false);
}
}
});
function select2OnFormClick(event = false) {
let elemtClicked = '';
if (event !== false) {
event.preventDefault();
event.stopImmediatePropagation();
elemtClicked = event.target;
elemtClicked.disabled = true;
}
let loadScriptAsync = function (uri) {
return new Promise((resolve, reject) => {
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = uri;
script.async = true;
script.onload = function () {
if (event !== false) {
elemtClicked.disabled = false;
select2Initialize();
$(elemtClicked).select2('open');
$(elemtClicked).on("select2-close", function () {
setTimeout(function() {
$('.select2-container-active').removeClass('select2-container-active');
$(':focus').blur();
}, 1);
});
if (elemtClicked.hasAttribute('data-fv-field')) {
if (window.getComputedStyle(elemtClicked).display === "none") {
// if element is display none, the formvalition can not read
elemtClicked.style.cssText = "display: block;position: absolute;visibility: hidden !important;height: 0;width: 0;opacity: 0 !important;"
}
}
} else {
select2Initialize();
}
resolve("ok");
};
let head = document.getElementsByTagName('head')[0];
head.appendChild(script);
});
}
let select2Inputs = document.querySelectorAll('.select-category-chained,#sid,#tid,.combobox,#bd-chained,#category-chained,.infinite-chained,.subcategory-chained,.search-chained,select#country-chained,#state-chained,#country-chained-2,#state-chained-2,#profession_id,[name^="bd_phone_country_code"]');
if (typeof select2Inputs != "undefined") {
for (let i = 0; i < select2Inputs.length; i++) {
let inputPlaceHolder = select2Inputs[i].getAttribute('placeholder');
if (!select2Inputs[i].getAttribute('placeholder')) {
inputPlaceHolder = select2Inputs[i].getAttribute('data-placeholder');
}
if(select2Inputs[i].hasAttribute('data-country-code')){
inputPlaceHolder = null; //reset the input
}
if (inputPlaceHolder != '' && inputPlaceHolder !== null) {
select2Inputs[i].querySelector('option:first-child').text = '';
}
select2Inputs[i].removeEventListener('mousedown', select2OnFormClick, false);
}
}
let scriptLoaded = loadScriptAsync('https://www.optimizecdn.com/directory/cdn/bootstrap/select2/3.5.2/select2.min.js?v=3.5.5');
return scriptLoaded;
}
function select2Initialize(){
function getSecondLevel(div,id) {
$("#" + div).select2("data", {
id: "",
text: `Loading...`
});
$.ajax({
url : '/ajaxsearch/get-services',
type : "GET",
data : {
'specialty_id' : id
},
dataType: "json",
success : function(data) {
var options = '';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
}
if (div == "tid"){
$("#ttid").select2("data", {
id: "",
text: "No options available"
});
$("#ttid").select2("enable", false);
$("#" + div).change(function () {
sessionStorage.setItem("select2-tid"+path2,$(this).val());
});
}
if (data.length > 1) {
$("#" + div).select2("enable",true);
$("#" + div).html(options);
$("#" + div).select2("val", "");
} else {
$("#"+div).select2("data", {
id: "",
text: "No options available"
});
$("#"+div).select2("val", "");
}
if(div == 'tid' && preloaded_tid !== false){
$("#" + div).select2("val", preloaded_tid);
$("#" + div).trigger('change');
}
}
});
}
function getSecondLevelAccount(div,id) {
$("#" + div).select2("data", {
id: "",
text: `Loading...`
});
$.ajax({
url : '/ajaxsearch/get-services',
type : "GET",
data : {
'specialty_id' : id
},
dataType: "json",
success : function(data) {
var options = '';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
}
if (data.length > 1) {
$("#" + div).select2("close");
$("#" + div).select2("val", "");
$("#" + div).select2("enable",true);
$("#" + div).html(options);
} else {
$("#"+div).select2("data", {
id: "",
text: "No options available"
});
$("#"+div).select2("val", "");
}
}
});
}
function getThirdLevel(div,id,id2) {
$("#"+div).select2("data", {
id: "",
text: `Loading...`
});
$.ajax({
url : '/ajaxsearch/get-locations',
type : "GET",
data : {
'specialty_id' : id,
'treatment_id' : id2,
},
dataType: "json",
success : function(data) {
var options = '';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
}
if (data.length > 1) {
$("#" + div).select2("enable",true);
$("#" + div).html(options);
$("#" + div).select2("val", "");
} else {
$("#"+div).select2("data", {
id: "",
text: "No options available"
});
$("#"+div).select2("val", "");
}
}
});
}
var current_country = '';
function getStateList(div,id) {
if (id != current_country) {
current_country = id; /* BUGFIX p949P6dS: record the country being fetched so the select2-open re-fetch handler short-circuits at this guard instead of looping forever. current_country was declared (line 274) but never assigned, so this guard was always true: success -> select2("open") re-fired the open handler -> getStateList(id) -> re-fetch -> "Loading..." re-pinned -> infinite loop (Singapore = 2 regions). */
$("#"+div).select2("data", {
id: "",
text: `Loading...`
});
$.ajax({
url : '/ajaxsearch/get-states',
type : "GET",
data : {
'country' : id
},
dataType: "json",
success : function(data) {
$("#" + div).html(''); // clear options
/* p949P6dS: data[0] is always the server-side "(Select from List)" placeholder,
so <=2 entries means the country has at most 1 real region (Singapore,
Martinique, zero-region). Client wants those to read "No State/Province
Available" instead of "(Select from List)"; the single real region stays
selectable. Reset/enable now runs on EVERY response (was gated behind
data.length > 1, which left zero-region countries stuck on "Loading..."
and disabled); auto-open stays multi-region only. */
var hasStates = (data.length > 2);
for (var i = 0; i < data.length; i++) {
var optionTitle = (!hasStates && data[i].value === "") ? `No State/Province Available for This Country` : data[i].title;
var newOption = new Option(optionTitle, data[i].value, false, false);
$("#" + div).append(newOption).trigger('change');
}
if (data.length === 0) {
$("#" + div).append(new Option(`No State/Province Available for This Country`, "", false, false)).trigger('change');
}
$("#" + div).select2("enable",true);
$("#" + div).prop("disabled", false);
$("#" + div).select2("val", "");
if (hasStates) {
$("#" + div).select2("open");
}
}
});
} else {
/* p949P6dS AC#3: the select2-open handler runs select2("enable",false) BEFORE
re-calling getStateList, and for a country with <=2 options (Singapore,
Martinique) that re-call short-circuits here on the id == current_country
guard. This branch previously only reset the value, so the field was left
permanently disabled: select2-container-disabled, clicks never open it, the
single real region is unselectable. Mirror the success path's re-enable so a
short-circuited re-open leaves the field usable. Multi-region countries never
hit this (their open handler is gated behind count <= 2). */
$("#" + div).select2("enable", true);
$("#" + div).prop("disabled", false);
$("#" + div).select2("val", "");
}
}
/* p949P6dS: keep the checkout/billing required-State validation in sync with the
server-side waiver, on BOTH layers. When the selected country has selectable
sub-regions (Canada, US, ...) FormValidation validates state_code (inline "Required
Field" on submit); when it has none (Singapore, Martinique, zero-region) the state_code
validator is disabled + un-flagged so those countries are not blocked. Delegated so it
binds even though the billing form is revealed after step 1; guarded to no-op on any
page/form without FormValidation + a state_code field. The server still enforces the
same rule (bd-core-files form_controller), so this is UX only, not the security gate. */
function bdSyncStateRequired(hasStates) {
var $stField = $("#state-chained");
var $stForm = $stField.closest("form");
var stFv = ($stForm.length) ? ($stForm.data("formValidation") || $stForm.data("bootstrapValidator")) : null;
if (!stFv || !stFv.options || !stFv.options.fields || !stFv.options.fields.state_code) {
return;
}
stFv.options.fields.state_code.excluded = hasStates ? false : true;
try { stFv.enableFieldValidators("state_code", hasStates); } catch (e) {}
/* p949P6dS: keep the visible "* " required marker on the State label in sync with the
waiver. functions_up.php renders <span class="required">* </span> on the state_code
label when AVS forces the field required; for a no-state country (Singapore,
Martinique) the field is genuinely waived so the asterisk must go away, and come
back when the country has selectable states again. Scoped to the state label. */
var $stReq = $("label[for='state-chained'] .required", $stForm);
$stReq.css("display", hasStates ? "" : "none");
/* p949P6dS: the ACTUAL blocker. The billing form carries a SECOND required layer,
independent of FormValidation: the form's success.form.fv handler loops
$form.find('[required]') and, for any empty one, appends <small class="required-error">
Required Field</small> + returns false, hard-blocking the submit. AVS renders the
state_code <select> with the HTML5 `required` attribute, so a no-state country
(empty state) stayed blocked with "Required Field" even after the FormValidation
waiver above. Drop the `required` attribute (+ clear its custom error) when the
country has no selectable states, and restore it when it does. Remember the server-
rendered original so we never ADD required to a field AVS left optional. */
if ($stField.attr("data-bd-orig-required") === undefined) {
$stField.attr("data-bd-orig-required",
($stField.prop("required") || $stField.attr("required") !== undefined) ? "1" : "0");
}
var stOrigRequired = ($stField.attr("data-bd-orig-required") === "1");
var $stRow = $stField.closest(".form-group,.fv-row,.row");
if (!hasStates) {
try { if (typeof stFv.resetField === "function") { stFv.resetField("state_code", true); } } catch (e) {}
$stRow.removeClass("has-error has-success");
$stRow.find(".help-block[data-fv-validator]").css("display", "none");
/* drop the HTML5 required gate + its "Required Field" message for no-state country */
$stField.removeAttr("required").prop("required", false);
$stField.siblings(".required-error").remove();
$stRow.find(".required-error").remove();
/* p949P6dS: on the Member-Dashboard billing modal the Save button is disabled by
FormValidation until the whole form is valid; for a no-state country the user
has no state to pick, so nothing re-enables it and Save stays stuck disabled ->
"cannot save". Re-enable it directly. IMPORTANT: do NOT call stFv.validate()
here — in this FormValidation build validate() on an already-valid form fires
success.form.fv (a real submit), which saved the address on the country change
AND consumed the one-time CSRF token, so the actual Save click then failed with
"You entered invalid data. Please try to save again." disableSubmitButtons only
toggles the button; no submit. Scoped to the billing modal so checkout is
untouched. */
if ($stForm.closest("#billing_address_modal").length) {
try { if (typeof stFv.disableSubmitButtons === "function") { stFv.disableSubmitButtons(false); } } catch (e) {}
$stForm.find("input.submitter, button.submitter, [type=submit]")
.removeClass("disabled").prop("disabled", false).removeAttr("disabled");
}
} else if (stOrigRequired) {
/* country has states again — restore the required gate AVS originally set */
$stField.attr("required", "required").prop("required", true);
}
}
$(document).off("change.bdStateReq").on("change.bdStateReq", "#country-chained", function() {
var bdCc = $(this).val();
var $bdForm = $("#state-chained").closest("form");
var bdFv = ($bdForm.length) ? ($bdForm.data("formValidation") || $bdForm.data("bootstrapValidator")) : null;
if (!bdFv || !bdFv.options || !bdFv.options.fields || !bdFv.options.fields.state_code || bdCc === "") {
return;
}
$.ajax({
url: "/ajaxsearch/get-states",
type: "GET",
data: { "country": bdCc },
dataType: "text",
success: function(bdResp) {
/* count entries without regex (DB+eval mangles backslashes): split on the
literal "value" key; total entries = splits - 1; >2 means placeholder + 2+
real regions == has selectable states. Text parse also survives the
malformed-JSON zero-region response. */
var bdTotal = bdResp.split(`"value"`).length - 1;
bdSyncStateRequired(bdTotal > 2);
}
});
});
/* p949P6dS: the Member Dashboard billing modal (widget 1861) pre-selects the member's
SAVED country_code at document.ready without firing a change event, so the handler
above never ran for it and an AVS-forced required State (functions_up.php forces
field_required=1 on state_code when whmcs_avs_on / stripe_accept_intl_payments is on)
stayed active for a saved no-state country — blocking the save with "Required Field"
on a country that has no state to pick. Sync once for an already-selected country.
The namespaced trigger fires only this handler (not select2/getStateList), and the
handler no-ops when the country is empty or state_code is not a validated field, so
checkout and every other chained-select page are unaffected. */
$("#country-chained").each(function() {
if ($(this).val() !== "") {
$(this).trigger("change.bdStateReq");
}
});
function getInfinityChained(div,id) {
$("#"+div).select2("data", {
id: "",
text: `Loading...`
});
$.ajax({
url : '/ajaxsearch/get-subcategory',
type : "GET",
data : {
'parent' : id
},
dataType: "json",
success : function(data) {
var options = '';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
}
if (data.length > 1) {
$("#" + div).select2("enable",true);
$("#" + div).html(options);
if(div == 'tid' && '' != ''){
$("#" + div).select2("val", "");
$("#" + div).trigger('change');
} else if(div == 'tid' && preloaded_tid !== false){
$("#" + div).select2("val", preloaded_tid);
$("#" + div).trigger('change');
}else {
$("#" + div).select2("val", "");
}
} else {
$("#" + div).select2("data", {
id: "",
text: "No options available"
});
}
}
});
}
function categoryChained(div,id) {
$("#" + div).select2("data", {
id: "",
text: `Loading...`
});
if(div == "tid") {
url_link = '/ajaxsearch/get-services'
data_passed = {'specialty_id' : id}
} else {
url_link = '/ajaxsearch/category-list';
data_passed = {'parent' : id} ;
}
var selectName = $("select[next="+div+"]").prop("name");
if( (selectName == "ttid" || selectName == "sid" || selectName == "tid") ){
sessionStorage.setItem("select2-"+selectName+path2,id);
}
$.ajax({
url : url_link,
type : "GET",
data : data_passed,
dataType: "json",
success : function(data) {
var options = '';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].value + '">' + data[i].title + '</option>';
}
if (data.length > 1) {
$("#" + div).select2("enable",true);
$("#" + div).html(options);
if(div == "ttid" && preloaded_ttid !== false){
$("#" + div).select2("val", preloaded_ttid);
$("#" + div).trigger('change');
}else if(div == "tid" && preloaded_tid !== false){
$("#" + div).select2("val", preloaded_tid);
$("#" + div).trigger('change');
}else{
$("#" + div).select2("val", "");
}
} else {
$("#" + div).select2("data", {
id: "",
text: "No options available"
});
}
}
});
}
function formatCountry(country) {
if (!country.id && country.text.includes("+")) {
let dataCountry = country.text;
dataCountry = dataCountry.split('+')
country.code = dataCountry[0].trim();
country.id = dataCountry[1].trim();
return country;
} else if (!country.code) {
return country.text;
}
var $country = $(
'<span class="flag-icon flag-icon-' + country.code.toLowerCase() + ' flag-icon-squared"></span>' +
'<span class="flag-text" style="margin-left:10px;">' + country.text + '</span>'
);
return $country;
}
let phoneCountryCode = document.querySelector("[name^='bd_phone_country_code']");
if (typeof phoneCountryCode != 'undefined' && phoneCountryCode != null && typeof isoCountries != 'undefined') {
$("[name^='bd_phone_country_code']").select2({
placeholder:`Country`,
data:isoCountries,
searchInputPlaceholder: `Enter Country Code`,
formatResult : formatCountry,
dropdownAutoWidth: true,
width: "resolve",
}).on("select2-opening", function (e) {
if (typeof e.currentTarget.attributes['data-default-country-code'] !== "undefined") {
$(this).val(e.currentTarget.attributes['data-default-country-code'].value)
.removeAttr("data-default-country-code")
.trigger('change')
.trigger('open');
}
}).change(function (e) {
let select2Span = $(this).attr('id');
if (e.val) {
$('#'+$(this).attr('id')+'--flag').remove();
$('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + e.added.code.toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>')
}else{
$('#s2id_' + select2Span + ' a span.select2-chosen').prepend('<span class="flag-icon flag-icon-' + $(this).attr('data-default-country-flag').toLowerCase() + ' flag-icon-squared" style="margin-right:10px"></span>')
}
$(this).removeAttr("data-default-country-flag");
});
}
$("#bd-chained").select2({
title: "Select An Option",
placeholder: "Select An Option",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
$("#tid").select2("enable",false);
getInfinityChained("tid",id);
});
$("#category-chained").select2({
title: "Select An Option",
placeholder: "Select An Option",
allowClear: true
}).change(function () {
var id = $(this).val();
$("#subcategory-chained").select2("enable",false);
categoryChained("subcategory-chained",id);
});
$(".select-category-chained").select2({
title: "Select An Option",
placeholder: "Select An Option",
allowClear: true
})
$(".infinite-chained").select2({
title: "Select option from list",
placeholder: "Click to select an option",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
var attr = $(this).attr('next');
var selectName = $(this).prop('name');
if ( selectName=='ttid' || attr =='ttid' ) {
$("#" + attr).select2("enable",false);
categoryChained(attr,id);
sessionStorage.setItem("select2-"+selectName+path2,id);
}
}).on("select2-close", function () {
setTimeout(function() {
$('.select2-container-active').removeClass('select2-container-active');
$(':focus').blur();
}, 1);
});
$("#subcategory-chained").select2();
$(".combobox").select2();
$(".search-chained").select2();
$("select#country-chained").select2({
title: "",
placeholder: "",
val: "",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
$("#state-chained").select2("enable",false);
getStateList("state-chained",id);
var state = "";
if (id == "CA") {
state = "Province";
} else if (id == "UK") {
state = "Region";
} else if (id == "US" || id == "AU") {
state = "State";
} else {
state = "Region";
}
$("#state-chained").prev(".control-label").text(state);
});
$("#state-chained").select2();
$("#state-chained").on("select2-open", function(event) {
event.preventDefault();
var id = $("#country-chained").val();
var count = $('#state-chained option').length;
if (id != "" && count <= 2) {
$("#state-chained").select2("enable",false);
getStateList("state-chained",id);
var state = "";
if (id == "CA") {
state = "Province";
} else if (id == "UK") {
state = "Region";
} else if (id == "US" || id == "AU") {
state = "State";
} else {
state = "Region";
}
$("#state-chained").prev(".control-label").text(state);
}
});
$("#country-chained-2").select2({
title: "Select Country",
placeholder: "(select country)",
val: "",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
$("#state-chained-2").select2("enable",false);
getStateList("state-chained-2",id);
var state = "";
if (id == "CA") {
state = "Province";
} else if (id == "UK") {
state = "Region";
} else if (id == "US" || id == "AU") {
state = "State";
} else {
state = "Region";
}
$("#state-chained-2").prev(".control-label").text(state);
});
$("#state-chained-2").select2();
$("#profession_id").select2({
placeholder: "Select From List",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
getSecondLevelAccount("category_id",id);
});
$("#sid").select2({
title: "Select An Option",
placeholder: "Select An Option",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
}).change(function () {
var id = $(this).val();
$("#tid").select2("enable",false);
getSecondLevel("tid",id);
$("#tid").select2("open");
sessionStorage.setItem("select2-sid"+path2,id);
});
$("#location_value_dropdown").select2({
title: "(optional)",
placeholder: "(optional)",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
});
$("#tid").select2({
title: "Select An Option",
placeholder: "Select An Option",
allowClear: true,
formatNoMatches: function () {
return "No matches found";
}
});
$("#location_value_dropdown").select2({
title: "(optional)",
placeholder: "(optional)",
allowClear: true
});
}
if(preloaded_ttid !== false || preloaded_tid !== false || preloaded_sid !== false){
$(document).ready(function(){
// Skip if homepage widget already handles preload
if(window._bdCategoryPreloaded) return;
if(preloaded_sid !== false && $("#sid").length > 0){
select2OnFormClick();
setTimeout(() => {
$("#sid").select2('val', preloaded_sid);
$('#sid').trigger('change');
}, 500);
}else if(preloaded_tid !== false && $("#sid").length <= 0){
select2OnFormClick();
setTimeout(() => {
$("#tid").select2('val', preloaded_tid);
$('#tid').trigger('change');
}, 500);
}
});
}
</script>
<script>
// Function to add aria-label to <select> elements without it, for better pagespeed accessibility score
$(document).ready(function() {
var ariaLabelCounter = {}; // Object to keep track of aria-label counts for uniqueness
// Iterate over each select element that does not have an aria-label
$('select:not([aria-label])').each(function() {
// Use the ID or placeholder as the base for the aria-label, stripping HTML tags
var baseLabel = this.id || $(this).attr('placeholder') || 'select';
baseLabel = baseLabel.replace(/<[^>]*>/g, '').trim(); // Remove HTML tags and trim
// Ensure uniqueness of each aria-label
ariaLabelCounter[baseLabel] = (ariaLabelCounter[baseLabel] || 0) + 1;
var ariaLabel = baseLabel + '-' + ariaLabelCounter[baseLabel];
// Truncate aria-label to 100 characters
ariaLabel = ariaLabel.length > 100 ? ariaLabel.substring(0, 100) : ariaLabel;
// Set the aria-label attribute to the unique label
$(this).attr('aria-label', ariaLabel);
});
});
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://helpsellmyfsbo.com/#website",
"name": "HELP Sell My FSBO",
"url": "https://helpsellmyfsbo.com/",
"inLanguage": "en-US",
"potentialAction": {
"@type": "SearchAction",
"target": "https://helpsellmyfsbo.com/search_results?q={search_term_string}",
"query-input": "required name=search_term_string",
"name": "Search Directory: HELP Sell My FSBO"
},
"publisher": {
"@id": "https://helpsellmyfsbo.com/#organization"
}
},
{
"@type": "Organization",
"@id": "https://helpsellmyfsbo.com/#organization",
"name": "HELP Sell My FSBO",
"description": "Search the most complete fsbo directory. Find fsbos.",
"url": "https://helpsellmyfsbo.com/",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://helpsellmyfsbo.com/#webpage"
},
"contactPoint": [
{
"@type": "ContactPoint",
"email": "support@helpsellmyfsbo.com",
"contactType": "customer support",
"availableLanguage": [
"en"
],
"areaServed": "US"
}
],
"areaServed": {
"@type": "Country",
"name": "US"
},
"telephone": "1 (855) 466-6070",
"logo": {
"@type": "ImageObject",
"@id": "https://helpsellmyfsbo.com/#logo",
"url": "https://helpsellmyfsbo.com/images/HSMF-Logo-Long-Trans-WtCmp-450x70.png"
},
"image": {
"@type": "ImageObject",
"@id": "https://helpsellmyfsbo.com/#image",
"url": "https://helpsellmyfsbo.com/images/HSMF-Logo-Long-Trans-WtCmp-450x70.png"
},
"keywords": [
"For Sale By Owner",
"FSBO",
"HELP Sell My FSBO",
"HELP Sell My FSBO",
"FSBO",
"For Sale By Owner"
]
}
]
}</script>
<script>
// Bootstrap Icons fallback loader - ensures Bootstrap Icons work even if HEAD widget is customized, do not delete
(function() {
if (!document.querySelector('link[href*="bootstrap-icons"]')) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://www.optimizecdn.com/directory/cdn/assets/bootstrap/fonts/bootstrap-icons.min.css?v=1.13.1';
document.head.appendChild(link);
}
})();
</script>
<style type='text/css'> .input-group.normal-autosuggest input,.input-group.sm-autosuggest input, .input-group.md-autosuggest input {
border-radius: 0 8px 8px 0 !important;
}
.normal-autosuggest .twitter-typeahead, .sm-autosuggest .twitter-typeahead, .md-autosuggest .twitter-typeahead, .large-autosuggest .twitter-typeahead {
display: inline-block;
height: 25px;
position: relative;
width: 100%;
}
.input-group.normal-autosuggest .twitter-typeahead, .input-group.sm-autosuggest .twitter-typeahead, .input-group.large-autosuggest .twitter-typeahead:not(.search_box .twitter-typeahead) {
width: inherit;
}
.normal-autosuggest .twitter-typeahead .clear_content.medium{
bottom: 0px;
}
.sm-autosuggest .twitter-typeahead .clear_content.small{
bottom: -4px;
}
.md-autosuggest.input-group .twitter-typeahead .clear_content.medium {
bottom: -2px;
}
.md-autosuggest .twitter-typeahead {
height: 32px;
}
.md-autosuggest .input-group-addon + .input_wrapper .twitter-typeahead {
height: 38px;
vertical-align: top;
}
.md-autosuggest-input + .clear_content.medium {
bottom: 0px;
}
.large-autosuggest .twitter-typeahead {
height: 40px;
}
.normal-autosuggest .twitter-typeahead{
height: 38px;
}
.normal-autosuggest .twitter-typeahead .tt-hint, .sm-autosuggest .twitter-typeahead .tt-hint {
background: #fff !important;
border: 1px solid #ccc!important;
border-radius: 0 8px 8px 0;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
color: transparent;
left: 0;
padding: 4px 11px;
position: absolute;
top: 0;
width: 100%;
font-size:12px;
}
.normal-autosuggest.input-group-addon .fa, .sm-autosuggest .input-group-addon .fa, .input-group-sm .input-group-addon .fa {font-size:12px}
.md-autosuggest .twitter-typeahead .tt-hint {
height: 100%;
background: #ffffff none repeat scroll 0 0 !important;
border: 1px solid #cccccc !important;
border-radius: 0 8px 8px 0;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset !important;
color: rgba(0, 0, 0, 0);
left: 0;
padding: 6px 11px;
position: absolute;
top: 0;
width: 100%;
}
.large-autosuggest {background: #fff !important;border-radius:10px;}
.large-autosuggest input {width: 100%!important;box-shadow:none; border-radius: 10px;}
.input-group.large-autosuggest input,.input-group.large-autosuggest .twitter-typeahead .tt-hint {
border-radius: 0 10px 10px 0!important;
}
.large-autosuggest .twitter-typeahead .tt-hint {
background: #fff !important;
border: 1px solid #ccc!important;
border-radius: 10px;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset!important;
color: transparent;
left: 0;
position: absolute;
top: 0;
width: 100%;
font-size: 18px;
height: 46px;
line-height: 1.33333;
padding: 10px 15px;
}
.tt-dataset .empty-message {
display: none !important;
}
.twitter-typeahead .tt-query {background-color:#fff!important}
.input-group.large-autosuggest span:first-child .tt-hint {border-radius: 0 !important;}
span.tt-dropdown-menu {
border: 1px solid #FCFCFC;
border-radius: 5px;
box-shadow: 0 5px 10px rgba(0,0,0,.2);
width: 100% !important;
}
.tt-is-under-cursor a.suggest-link {
background: #55ACEE;
}
.tt-is-under-cursor .media-heading,
.tt-is-under-cursor .suggest-origin,
.tt-is-under-cursor .location{
color:#fff!important;
}
.tt-suggestion .media .media-body .suggest-origin {
color: rgba(45, 91, 137,0.9);
padding: 1px 0;
border-radius: 6px;
font-weight: bold;
line-height: 12px;
}
.tt-suggestion {
background: #fff;
border-bottom: 1px solid #eee;
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
body .tt-suggestions .media.br-bottom img {
max-width: 45px;
height: auto;
}
body .tt-suggestions .media-body span {
font-size: 10px;
}
body .tt-suggestions .media-body h4 {
font-size: 12px;
margin: 2px 0px;
text-transform: capitalize;
}
a.suggest-link {
padding: 5px;
display: block;
}
a.suggest-link img {
border-radius: 100px;
display: block;
margin: 0 auto;
height: 100%!important;
width: 100%;
object-fit: cover;
}
.left-suggest-col {
display: inline-block;
vertical-align: middle;
width: 44px;
height: 44px;
}
.right-suggest-col {
display: inline-block;
padding-left: 1%;
text-align: left;
vertical-align: middle;
width: calc(100% - 1% - 50px);
}
p.media-heading {
color: #333;
font-size: 12px;
font-weight: 600;
margin-bottom: 0;
}
p.suggest-origin {
font-size: 10px;
color: #333;
margin:0;
}
p.location {
color: #333;
font-size: 10px;
margin: 2px 0;
}
body .tt-is-under-cursor a.suggest-link {
background: #F7F7F7;
}
body .tt-is-under-cursor .media-heading, body .tt-is-under-cursor .suggest-origin, body .tt-is-under-cursor .location {
color: #333!important;
}
a.suggest-link[data-heading="heading"] {
pointer-events: none;
cursor: default;
text-decoration: none;
}
body .tt-is-under-cursor a.suggest-link[data-heading="heading"] {
background: rgb(254, 102, 13);
}
/* --- all the novalue css --- */
a.suggest-link .suggest-origin[data-state="novalue"] {
display: none;
}
a.suggest-link .location[data-state="novalue"] {
display: none;
}
a.suggest-link img[data-state="novalue"] {
display: none;
}
a.suggest-link .suggest-origin[data-state="heading"] {
display: none;
}
a.suggest-link .media-heading[data-heading="heading"] {
color:rgb(255, 255, 255)!important;
font-weight: bold;
padding: 4px;
font-size: 13px;
}
.left-suggest-col[data-photo="novalue"], .left-suggest-col[data-photo="undefined"] {
display: none;
}
.right-suggest-col[data-photo="novalue"], .right-suggest-col[data-photo="undefined"] {
width: 100%;
}
a.suggest-link[href="novalue"] {
cursor: default !important;
pointer-events: none;
}
a.suggest-link[data-heading="heading"] {
background-color: rgb(254, 102, 13);
}
div.content-shell {
overflow: inherit;
}
span.tt-dropdown-menu div {
float: none;
}
.tt-menu {
border-radius: 0 0 6px 6px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
overflow: hidden;
width: 100%;
z-index: 150 !important;
}
.tt-menu .tt-dataset {
overflow-y: auto;
max-height: 200px;
} </style><script>
window.addEventListener('load', () => {
let embedlyClass = document.querySelector('.fr-embedly');
if (typeof embedlyClass != "undefined" && embedlyClass != null) {
let embedlyURI = "https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/embedly_widget.min.js";
let head = document.getElementsByTagName("head")[0];
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = embedlyURI;
script.async = true;
script.onload = function() {
setTimeout(function() {
if (typeof embedly !== 'undefined' && embedly.card) {
document.querySelectorAll('.embedly-card').forEach(function(card) {
embedly.card(card);
});
}
}, 500);
};
head.appendChild(script);
}
});
</script><script type="text/javascript" src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/jquery.lazy/1.7.9/jquery.lazy.min.js"></script><script>
$(function () {
$(".lazyloader").Lazy({
afterLoad: function(element) {
$(".gridView.activeView").click();
}
});
});
$("button[class*='slick'],button[id*='slick']").click(function () {
$(this).parents(".row").find(".lazyloader").lazy({
bind: "event",
delay: 0
});
});
$("[class*='slick'],[id*='slick']").on("swipe",function(){
$(this).parents(".row").find(".lazyloader").lazy({
bind: "event",
delay: 0
});
});
</script><script defer src="https://www.optimizecdn.com/directory/cdn/assets/bootstrap/js/websiteScripts.min.js?v=8.0.0"></script>
</body>
</html>Shown as plain text. Nothing from helpsellmyfsbo.com runs in your browser. Underlined links open their own code view, and line numbers give you a link to share.