PageSourceSearch

https://www.youhaverealty.com/11/search/11

html youhaverealty.com collected 2026-10-07 15:34:48 UTC 72,379 bytes, 1,647 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" ng-app="dpiApp">
3
4<head>
5
6
7
8    <meta charset="utf-8">
9<meta name="viewport" content="width=device-width, initial-scale=1.0">
10    <meta http-equiv="X-UA-Compatible" content="IE=edge">
11    <meta name="google-site-verification"
12        content="" />
13    <meta name="viewport" content="width=device-width, initial-scale=1">
14    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
15    <title>
16         Vivian Lehman You Have Realty | Search
17    </title>
18
19
20
21
22
23<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-pap0P6p6z+zDlZ7+2Mxd6c2/RbT+pkkHp/0VJ6cZq1a5v3xYxXQkYTZKghxFN3XfPt1nLkD+q61V+0rJ0T6Uzg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
24
25
26
27
28    <link rel="icon" type="image/png" href="https://www.youhaverealty.com/themes/6898/images/fav.jpg"
29        sizes="24x24">
30<script src="https://kit.fontawesome.com/0372972d6b.js" crossorigin="anonymous"></script>
30
31    <meta name="description"
32        content="Now it’s easy to search the MLS for active Properties for Sale, for Rent, and view New Developments with floor plans. All active listings with photos and details.
33 - You Have Realty" />
34    <meta property="og:title"
35        content="Vivian Lehman You Have Realty | Search" />
36    <meta property="og:description"
37        content="Now it’s easy to search the MLS for active Properties for Sale, for Rent, and view New Developments with floor plans. All active listings with photos and details.
38
39Now it’s easy to search the MLS for active Properties for Sale, for Rent, and view New Developments with floor plans. All active listings with photos and details.
40" />
41    <meta property="og:type" content="website" />
42
43<script src="https://kit.fontawesome.com/0372972d6b.js" crossorigin="anonymous"></script>
43
44<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
45
46        <meta property="og:image"
47        content="https://www.youhaverealty.com/uploads/default_template/medium/default_share.jpg" />
48        <meta property="og:url" content="" />
49    <meta itemprop="description"
50        content="Now it’s easy to search the MLS for active Properties for Sale, for Rent, and view New Developments with floor plans. All active listings with photos and details.
51
52Now it’s easy to search the MLS for active Properties for Sale, for Rent, and view New Developments with floor plans. All active listings with photos and details.
53">
54    <!-- Bootstrap -->
55    <link href="https://www.youhaverealty.com/themes/public-common-files/bootstrap/css/bootstrap.min.css" rel="stylesheet">
56    <link rel="stylesheet" type="text/css"
57        href="https://www.youhaverealty.com/themes/6898/css/animate.min.css" />
58    <link rel="stylesheet" type="text/css"
59        href="https://www.youhaverealty.com/themes/6898/css/overlay.css" />
60    <link rel="stylesheet" type="text/css"
61        href="https://www.youhaverealty.com/themes/6898/css/swiper-bundle.min.css" />
62    <link rel="stylesheet" type="text/css"
63        href="https://www.youhaverealty.com/themes/6898/css/lightslider.min.css" />
64    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/bootstrap-utilities.css">
65    <!-- Custom CSS -->
66    <link rel="stylesheet" type="text/css"
67        href="https://www.youhaverealty.com/themes/6898/css/jquery-ui-1.12.1.css" />
68    <link rel="stylesheet" type="text/css"
69        href="https://www.youhaverealty.com/themes/6898/css/chosen-1.4.2.css" />
70    <link rel="stylesheet" type="text/css"
71        href="https://www.youhaverealty.com/themes/6898/css/owl.carousel.min.css" />
72    <link rel="stylesheet" type="text/css"
73        href="https://www.youhaverealty.com/themes/6898/css/owl.theme.default.min.css" />
74
75
76   <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
77         
77<script src="https://kit.fontawesome.com/0372972d6b.js" crossorigin="anonymous"></script>
77
78      
78<script src="https://www.youhaverealty.com/themes/public-common-files/js/main.js"></script>
78
79      
79<script src="https://www.youhaverealty.com/themes/public-common-files/js/modernizr.js"></script>
79
80      
80<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
80
81
82    <link href="https://www.youhaverealty.com/themes/6898/css/jquery.mCustomScrollbar.css"
83        rel="stylesheet">
84    <link rel='stylesheet' href='https://www.youhaverealty.com/themes/6898/css/loading-bar.min.css'
85        type='text/css' media='all' />
86    <!-- menu extra items -->
87    <link href="https://www.youhaverealty.com/themes/6898/css/tutorial.css" rel="stylesheet">
88    <link href="https://www.youhaverealty.com/themes/6898/css/style.css?v=1775718994" rel="stylesheet">
89<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAfUt0e88sbSCGqblsMOhPdYarM1doX254&libraries=drawing&callback=Function.prototype&v=3.64"></script>
89<link href="https://www.youhaverealty.com/themes/6898/css/search-page-style.css?v=1775718994" rel="stylesheet">    <link href="https://www.youhaverealty.com/themes/6898/css/dev.css" rel="stylesheet">
90    <link href="https://www.youhaverealty.com/themes/6898/css/responsive.css" rel="stylesheet">
91<link href="https://www.youhaverealty.com/themes/6898/css/aistyle.css?v=1709649869" rel="stylesheet"><link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
92
93    
93<script src="https://www.youhaverealty.com/themes/public-common-files/js/modernizr.js"></script>
vendor: 1 bytes, line 93
93
94<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
94
95
96    <style>  [ng-cloak], [ng\:cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak { display: none !important; }</style>
97    
97<script>
98        var base_url = 'https://www.youhaverealty.com';
99        var current_theme = '6898';
100var html_version = "1791387288";
101                            var mls_ids = "[1,4]";        var uri_prefix = '/';
102        var user_id = '6898';
103        var theme_image_url = '/../dpi_beta/uploads/';
104        var ssr_page = '';
105    </script>
105
106    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
107    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
108    <!--[if lt IE 9]>
109            
109<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
109
110            
110<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
110
111            <![endif]-->
112    <base href="https://www.youhaverealty.com/">
113    <!-- $uri_prefix made in Admin\Masters\ThemePreviewController -->
114    
114<script>
115        (function (i, s, o, g, r, a, m) {
116            i['GoogleAnalyticsObject'] = r;
117            i[r] = i[r] || function () {
118                (i[r].q = i[r].q || []).push(arguments)
119            }, i[r].l = 1 * new Date();
120            a = s.createElement(o),
121                m = s.getElementsByTagName(o)[0];
122            a.async = 1;
123            a.src = g;
124            m.parentNode.insertBefore(a, m)
125        })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
126    </script>
126
127
128<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
129<script src="https://use.fontawesome.com/8ef1806ee0.js"></script>
vendor: 1 bytes, line 129
129
130<script>
131    window.addEventListener('load', function() {
132        console.log('Checking URL parameters for auth token...');
133        
134        // Use URLSearchParams to extract query parameters directly
135        const urlParams = new URLSearchParams(window.location.search);
136        
137        const token = urlParams.get('auth_token');
138        const userInfo = urlParams.get('usr_info');
139        // Edit params
140        const saveSearchEditing = urlParams.get('save_search_editing');
141        const saveSearchId = urlParams.get('save_search_id');
142        const polygonLatLongForSavedSearch = urlParams.get('polygon_lat_long_for_saved_search');
143        const ngStorageSearchParams = urlParams.get('ngStorage-search_params');
144        const hitSavedSearch = urlParams.get('hit_saved_search');
145        
146        console.log('Token from URL:', token);
147
148        if (token) {
149            console.log('will run after 3sec');
150            
151            // setTimeout(() => {
152                console.log('Storing auth token and user info in localStorage...');
153                localStorage.setItem('access_token', token);
154                if (userInfo) localStorage.setItem('usr_info', userInfo);
155
156                // Clean URL
157                const cleanUrl = window.location.pathname + window.location.hash;
158                window.history.replaceState({}, document.title, cleanUrl);
159                localStorage.setItem('save_search_editing', saveSearchEditing);
160                localStorage.setItem('save_search_id', saveSearchId);
161                localStorage.setItem('polygon_lat_long_for_saved_search', polygonLatLongForSavedSearch);
162                console.log('typeof localStorage.getItem(ngStorage-search_params)- ', typeof localStorage.getItem('ngStorage-search_params'));
163                console.log('typeof localStorage.getItem(ngStorage-search_params) !== undefined ', typeof localStorage.getItem('ngStorage-search_params') !== 'undefined');
164                
165                console.log('localStorage.getItem(ngStorage-search_params)', localStorage.getItem('ngStorage-search_params'));
166                
167                console.log('ngStorageSearchParams  -', ngStorageSearchParams);
168                
169                if (typeof localStorage.getItem('ngStorage-search_params') !== 'undefined') {
170                    console.log('ngstorage search setting');
171                    
172                    localStorage.setItem('ngStorage-search_params', ngStorageSearchParams);
173                    localStorage.setItem('hit_saved_search', hitSavedSearch);
174                    console.log('localStorage.getItem(ngStorage-search_params)222', localStorage.getItem('ngStorage-search_params'));
175                }
176                if (angular) {
177                    console.log('Setting in to AngularJS');
178                    angular.element(document).ready(function () {
179                        var scope = angular.element(document.querySelector('[ng-app]')).scope();
180                        scope.$apply(function() {
181                            scope.is_front_logged = 1;  // Update the variable in AngularJS scope
182                        });
183                        if (ngStorageSearchParams) {
184                            console.log('Setting ngStorage.search_params...');
185                            var $localStorage = angular.element(document.querySelector('[ng-app]')).injector().get('$localStorage');
186                            $localStorage.search_params = ngStorageSearchParams;
187                        }
188                    });
189                } else {
190                    console.log('AngularJS not found, cannot update scope variable.');
191                }
192
193                
194            // }, 10000);
195        }
196    });
197
198    function updateCrmLink(el) {
199        var encodedId = encodeURIComponent(
200            btoa(unescape(encodeURIComponent(user_id)))
201        );
202
203        el.href = 'https://crm.dpirealtywebsites.com/login?member_id=' + encodedId;
204    }
205
206</script>
206  
207
208                        <link rel="stylesheet"  href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css"/>
209                        
209<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
209
210                    </head></head>
211
212<body ng-controller='indexcontroller' ng-cloak ng-show="show_body">
213    <div id="page">
214        <div id="fb-root"></div>
215        <!--
215<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.3&appId=295624401368296&autoLogAppEvents=1"></script>
215-->
216        
216<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_GB/sdk.js?version=v10.0">
217        </script>
217
218        <!-- Dynamic Header Start -->
219    
220
221<header id="header" class="header d-flex align-items-center light-background">
222
223
224    <div class="container-fluid position-relative d-flex align-items-center justify-content-between" style="width: 100%;">
225
226      <a href="https://www.youhaverealty.com/" class="logo d-flex align-items-center me-auto me-xl-0">
227        <!-- Uncomment the line below if you also wish to use an image logo -->
228        <img src="https://www.youhaverealty.com/themes/6898/images/vi-Logo.png" alt=""> 
229
230      </a>
231
232
233
234
235      <nav id="navmenu" class="navmenu">
236        <ul>
237                      
238
239
240
241
242
243                         
244 <li data-is-active="active"><a href="https://www.youhaverealty.com/">Home</a></li>
245
246
247
248
249
250
251
252
253 <li data-is-active="active"><a href="https://www.youhaverealty.com/9/about/9">About</a></li>
254
255 <li data-is-active="active"><a href="https://www.youhaverealty.com/15/our_team/15">Our team</a></li>
256
257                   <li class="dropdown">
258                        <a href="#"><span>Search</span> <i class="fa fa-chevron-down toggle-dropdown" style="font-size:6px;margin-top: 2 px;"></i></a>
259                        <ul>
260
261                           <li><a href="https://www.youhaverealty.com/for_sale">For Sale</a></li>
262                           <li><a href="https://www.youhaverealty.com/for_rent">For Rent</a></li>
263
264
265                           
266
267                           <li><a href="https://www.youhaverealty.com/11/search/11">Property Search</a></li>
268
269
270                        </ul>
271                     </li>
272                           <li><a href="https://www.youhaverealty.com/our_listings">Featured Listings</a></li>
273
274
275
276                           <li><a href="https://www.youhaverealty.com/existing_developments">Developments</a></li>
277
278                     
279                     
280                     <li class="dropdown">
281                        <a href="#"><span>Resources</span> <i class="fa fa-chevron-down toggle-dropdown"  style="font-size:6px;margin-top: 2px;"></i></a>
282                        <ul>
283
284  
285<li><a href="https://www.youhaverealty.com/195/free_home_evaluation/278">Free Home Evaluation</a></li>
286
287<li><a href="https://www.youhaverealty.com/dream-home-finder">Dream Home Finder</a></li>
288
289<li><a href="https://www.youhaverealty.com/median-home-values"> AI Median Home Values</a></li>
290
291<li><a href="https://www.youhaverealty.com/mortage-calculator">Mortgage Calculator</a></li>
292
293
294                        </ul>
295                     </li>
296
297
298                     <li><a href="https://www.youhaverealty.com/blog">Blog</a></li>
299
300                     <li><a href="https://www.youhaverealty.com/17/contact/17">Contact</a></li>
301    <li><a href="tel:{{agentDetails.offc_phone}}">  {{agentDetails.offc_phone}}</a> </li>
302
303        </ul>
304        <i class="mobile-nav-toggle d-xl-none fa fa-bars" style="font-size: 20px;margin-left: 11px;margin-right: -5px;"></i>
305      </nav>
306
307
308
309    </div>
310  </header>
311
312
313
314
315
316
317
318
319        <!--/.site-header -->
320        <!-- Dynamic Header End -->
321        <!-- This is the place where the dynamic html will be placed start -->
322        <div ng-if="is_maintain==1" class="text-center">
323            <img class="img-responsive" ng-src="https://www.youhaverealty.com/backend/images/underconstruction.png"
324                style="display: inline-block;">
325            <h4>{{status_msg}}</h4>
326        </div>
327                <ng-view ng-if="is_maintain==0" autoscroll="true">
328        </ng-view>
329        <!-- This is the place where the dynamic html will be placed end -->
330
331<style>
332.modern-footer {
333background: radial-gradient(#14629a, #042034);
334  color: #ffffff;
335  padding: 60px 0 0 0;
336  font-size: 15px;
337}
338
339.modern-footer .footer-logo img {
340  max-width: 220px;
341  width: 100%;
342  height: auto;
343  display: block;
344  margin-bottom: 20px;
345}
346
347.modern-footer .footer-text {
348  color: rgba(255,255,255,0.75);
349  line-height: 26px;
350  margin-bottom: 25px;
351}
352
353.modern-footer .footer-title {
354  font-size: 18px;
355  font-weight: 700;
356  color: #ffffff;
357  margin-bottom: 20px;
358  text-transform: uppercase;
359  letter-spacing: 1px;
360}
361
362.modern-footer .footer-contact-list,
363.modern-footer .footer-links {
364  list-style: none;
365  padding: 0;
366  margin: 0;
367}
368
369.modern-footer .footer-contact-list li,
370.modern-footer .footer-links li {
371  margin-bottom: 12px;
372  color: rgba(255,255,255,0.82);
373  line-height: 24px;
374}
375
376.modern-footer .footer-links a,
377.modern-footer .footer-contact-list a,
378.modern-footer .footer-bottom a {
379  color: #ffffff;
380  text-decoration: none;
381  transition: all 0.3s ease;
382}
383
384.modern-footer .footer-links a:hover,
385.modern-footer .footer-contact-list a:hover,
386.modern-footer .footer-bottom a:hover {
387  color: #c9a96a;
388  text-decoration: none;
389}
390
391.modern-footer .social-icons {
392  list-style: none;
393  padding: 0;
394  margin: 0;
395  display: flex;
396  flex-wrap: wrap;
397}
398
399.modern-footer .social-icons li {
400  margin-right: 10px;
401  margin-bottom: 10px;
402}
403
404.modern-footer .social-icons a {
405  width: 42px;
406  height: 42px;
407  border: 1px solid rgba(255,255,255,0.18);
408  border-radius: 50%;
409  display: flex;
410  align-items: center;
411  justify-content: center;
412  background: rgba(255,255,255,0.04);
413  transition: all 0.3s ease;
414}
415
416.modern-footer .social-icons a:hover {
417  background: #c9a96a;
418  border-color: #c9a96a;
419  transform: translateY(-2px);
420}
421
422.modern-footer .social-icons svg {
423  width: 18px;
424  height: 18px;
425  fill: #ffffff;
426}
427
428.modern-footer .contact-name {
429  font-size: 22px;
430  font-weight: 700;
431  color: #ffffff;
432  margin-bottom: 10px;
433  line-height: 30px;
434}
435
436.modern-footer .footer-divider {
437  border-top: 1px solid rgba(255,255,255,0.10);
438  margin-top: 35px;
439}
440
441.modern-footer .footer-bottom {
442  padding: 20px 0;
443  font-size: 13px;
444  color: rgba(255,255,255,0.70);
445}
446
447.modern-footer .footer-bottom-left {
448  display: flex;
449  align-items: flex-start;
450}
451
452.modern-footer .footer-bottom-left img {
453  max-height: 52px;
454  width: auto;
455  margin-right: 12px;
456  margin-top: 2px;
457}
458
459.modern-footer .footer-bottom p {
460  margin-bottom: 0;
461  line-height: 22px;
462}
463
464.modern-footer .powered-by {
465  text-align: right;
466}
467
468.modern-footer .icon-inline {
469  width: 18px;
470  display: inline-block;
471  text-align: center;
472  margin-right: 8px;
473}
474
475@media (max-width: 991px) {
476  .modern-footer {
477    padding-top: 45px;
478  }
479
480  .modern-footer .footer-col {
481    margin-bottom: 35px;
482  }
483
484  .modern-footer .powered-by {
485    text-align: left;
486    margin-top: 15px;
487  }
488
489  .modern-footer .footer-bottom-left {
490    margin-bottom: 15px;
491  }
492}
493</style>
494
495<footer class="modern-footer">
496  <div class="container">
497    <div class="row">
498
499      <!-- Column 1 -->
500      <div class="col-lg-4 col-md-6 footer-col">
501        <div class="footer-logo">
502          <img src="https://www.youhaverealty.com/themes/6898/images/vi-Logo.png" alt="Logo">
503        </div>
504
505        <p class="footer-text">
506          Real estate guidance, local expertise, and personalized service to help you buy, sell, or invest with confidence.
507        </p>
508
509        <ul class="social-icons">
510          <li ng-if="agentDetails.fb_url!=''">
511            <a href="{{ agentDetails.fb_url | httpCheck }}" target="_blank" aria-label="Facebook">
512              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06H297V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"/></svg>
513            </a>
514          </li>
515
516          <li ng-if="agentDetails.twitter_url!=''">
517            <a href="{{ agentDetails.twitter_url | httpCheck }}" target="_blank" aria-label="X">
518              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48z"/></svg>
519            </a>
520          </li>
521
522          <li ng-if="agentDetails.linkedin_url!=''">
523            <a href="{{ agentDetails.linkedin_url | httpCheck }}" target="_blank" aria-label="LinkedIn">
524              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.3 0-55.7 37.7-55.7 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.7-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"/></svg>
525            </a>
526          </li>
527
528       <li ng-if="agentDetails.instagram_url!=''">
529  <a href="{{ agentDetails.instagram_url | httpCheck }}" target="_blank" aria-label="Instagram">
530    <i class="bi bi-instagram"></i>
531  </a>
532</li>
533
534<li ng-if="agentDetails.youtube_url!=''">
535  <a href="{{ agentDetails.youtube_url | httpCheck }}" target="_blank" aria-label="YouTube">
536    <i class="bi bi-youtube"></i>
537  </a>
538</li>
539
540          <li ng-if="agentDetails.google_url!=''">
541            <a href="{{ agentDetails.google_url | httpCheck }}" target="_blank" aria-label="Google">
542              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 488 512"><path d="M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"/></svg>
543            </a>
544          </li>
545        </ul>
546      </div>
547
548      <!-- Column 2 -->
549      <div class="col-lg-4 col-md-6 footer-col">
550        <h5 class="footer-title">Contact</h5>
551
552        <div class="contact-name">
553          {{agentDetails.first_name+''+((agentDetails.middle_name_display==1)?' '+agentDetails.middle_name:'')+' '+agentDetails.last_name}}
554        </div>
555
556        <ul class="footer-contact-list">
557          <li ng-if="agentDetails.account_type=='individual'">{{agentDetails.title}}</li>
558          <li>{{agentDetails.company}}</li>
559          <li>
560            {{ agentDetails.address1 ? agentDetails.address1 : '' }}{{ agentDetails.address2 ? ', ' + agentDetails.address2 : '' }}<br>
561            {{ agentDetails.city_name ? agentDetails.city_name : '' }}{{ agentDetails.state_code ? ', ' + agentDetails.state_code : '' }}{{ agentDetails.zip ? ', ' + agentDetails.zip : '' }}
562          </li>
563          <li>
564            <span class="icon-inline"><i class="fa fa-phone"></i></span>
565            <a href="tel:{{ agentDetails.offc_phone }}">{{ agentDetails.offc_phone }}</a>
566          </li>
567          <li>
568            <span class="icon-inline"><i class="fa fa-envelope"></i></span>
569            <a href="mailto:{{ agentDetails.account_email }}">{{ agentDetails.account_email }}</a>
570          </li>
571        </ul>
572      </div>
573
574      <!-- Column 3 -->
575      <div class="col-lg-4 col-md-12 footer-col">
576        <h5 class="footer-title">Quick Links</h5>
577
578        <ul class="footer-links">
579          <li>
580            <a href="https://www.youhaverealty.com/107/privacy_policy/766">Privacy Policy</a>
581          </li>
582          <li>
583            <a href="#" onclick="updateCrmLink(this);" target="_blank">Agent Login</a>
584          </li>
585          <li ng-hide="is_front_logged!=0">
586            <a href="javascript:void(0)" ng-click="showClientLoginPopup()">Guest Login</a>
587          </li>
588          <li ng-show="is_front_logged!=0">
589            <a href="javascript:void(0)" ng-click="logout()">Logout</a>
590          </li>
591        </ul>
592      </div>
593
594    </div>
595
596    <div class="footer-divider"></div>
597
598    <div class="row footer-bottom">
599      <div class="col-lg-8">
600        <div class="footer-bottom-left">
601          <img src="https://www.youhaverealty.com/themes/6898/images/whiteR.png" alt="Equal Housing Logo">
602          <p>
603            ADA Compliance: In concurrence with the National Association of Realtors guidelines,
604            Vivian  Lehman is committed to providing an accessible website. If you have
605            difficulty accessing content, difficulty viewing a file on the website, or notice any
606            accessibility problems, please contact me at 407-733-4700 to specify the nature
607            of the issue and any assistive technology you use.
608          </p>
609        </div>
610      </div>
611
612      <div class="col-lg-4 powered-by">
613        <p>
614          Powered by
615          <a href="http://dpishowcase.com/" target="_blank">DPI Realty Websites</a><br>
616          &copy; 2026 DPI Realty Websites. All Rights Reserved.
617        </p>
618      </div>
619    </div>
620  </div>
621</footer>
622
623    <!-- Dyanamic Footer For Preview Page End-->
624    </div>
625    <!--/#page-->
626   <a href="#" data-toggle="modal" data-target="#myModal"> <img src="https://www.youhaverealty.com/themes/6898/images/ADA.png" alt="Floating Icon" class="floating-left"></a> 
627
628
629<style>
630
631  .floating-left {
632    position: fixed;
633    bottom: 20px;   /* distance from bottom */
634    left: 20px;     /* distance from left */
635    width: 50px;    /* adjust size */
636    height: auto;
637    z-index: 9999;  /* keep it above other content */
638    cursor: pointer;
639  }
640
641  /* Optional: add hover effect */
642  .floating-left:hover {
643    opacity: 0.8;
644    transform: scale(1.05);
645    transition: all 0.2s ease-in-out;
646  }
647</style>
648
649
650
651   
652
653
654
655    <!-- start ada modal -->
656    <div class="modal fade" id="myModal" role="dialog">
657        <div class="modal-dialog">
658            <div class="modal-content">
659                <div class="modal-header">
660                    <button type="button" class="close" data-dismiss="modal">&times;</button>
661                    <h4 class="modal-title">Accessibility Widget</h4>
662                </div>
663                <div class="modal-body">
664                    <table class="table table-bordered">
665                        <thead>
666                        </thead>
667                        <tbody>
668                            <tr>
669                                <td>
670                                    <button id="bigtext" type="button" class="btn btn-primary" onclick="bigSize()">
671                                        Bigger Text
672                                    </button>
673                                    <div id="progress"></div>
674                                </td>
675                                <td>
676                                    <button id="stext" type="button" class="btn btn-primary" onclick="speechtext()">
677                                        Speechd Text
678                                    </button>
679                                </td>
680                            </tr>
681                        </tbody>
682                    </table>
683                </div>
684            </div>
685        </div>
686    </div>
687    <!-- end ada modal -->
688
689
690
691<!-- Agent Floating Icon -->
692<div class="agent-icon" id="agentIcon">
693  <img src="https://www.youhaverealty.com/themes/6898/images/pop999.png" alt="Agent">
694</div>
695
696<!-- Agent Popup Box -->
697<div class="agent-popup" id="agentPopup">
698  <span class="close" id="closePopup">&times;</span>
699  <div class="text-center">
700    <img src="https://www.youhaverealty.com/themes/6898/images/pop999.png" class="agent-photo" alt="Realtor">
701    <h3 class="font-weight-bold mb-1">{{ agentDetails.first_name + '' + ((agentDetails.middle_name_display == 1) ? ' ' + agentDetails.middle_name : '') + ' ' + agentDetails.last_name }}</h3>
702    <p class="small text-muted">I believe real estate is about more than a transaction—it’s about your legacy. I would love to hear your vision for the future. Let’s connect below.</p>
703    <a href="tel:{{ agentDetails.offc_phone }}" class="btn btn-outline-primary btn-sm">📞 Call or Text</a>
704    <a href="mailto:{{ agentDetails.account_email }}" class="btn btn-primary btn-sm">📧 Email </a>
705  </div>
706</div>
707
708
709
710
711
712    <!-- Bower js -->
713    
713<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/jquery/dist/jquery.min.js"></script>
713
714    
714<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular/angular.min.js"></script>
vendor: 1 bytes, line 714
714
715<script src="https://www.youhaverealty.com/themes/public-common-files/js/angular-ui-router.min.js"></script>
715    
715<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/bootstrap/dist/js/bootstrap.min.js">
716</script>
716
717    
717<script
718    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-animate/angular-animate.min.js">
719</script>
719
720    
720<script
721    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-cookies/angular-cookies.min.js">
722</script>
722
723    
723<script
724    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-resource/angular-resource.min.js">
725</script>
725
726    
726<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-route/angular-route.min.js">
727</script>
727
728    
728<script
729    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-sanitize/angular-sanitize.min.js">
730</script>
730
731    
731<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-touch/angular-touch.min.js">
732</script>
732
733    
733<script
734    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-update-meta/dist/update-meta.min.js">
735</script>
735
736    
736<script
737    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/marker_cluster/src/markerclusterer.js">
738</script>
738
739    
739<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/ng-idle/angular-idle.min.js">
740</script>
740
741    
741<script type="text/javascript" src="https://www.youhaverealty.com/themes/public-common-files/js/lodash.min-2.4.1.js">
742</script>
742
743    
743<script type="text/javascript" src="https://www.youhaverealty.com/themes/public-common-files/js/angular-highlightjs.js">
744</script>
744
745    
745<script type="text/javascript" src="https://www.youhaverealty.com/themes/public-common-files/js/ui-bootstrap-tpls-1.0.0.js">
746</script>
746
747    
747<script src="https://www.youhaverealty.com/themes/public-common-files/bootstrap/js/bootstrap-hover-dropdown.min.js">
748</script>
748
749    
749<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/moment/moment.js"></script>
749
750    
750<script
751    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js">
752</script>
752
753    
753<script type="text/javascript" src="https://www.youhaverealty.com/themes/public-common-files/js/swiper-bundle.min.js">
754</script>
754
755    
755<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/jquery-ui/jquery-ui.min.js"></script>
755
756    
756<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/oclazyload/dist/ocLazyLoad.min.js">
757</script>
757
758    
758<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/odometer/odometer.min.js"></script>
758
759    
759<script
760    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-odometer/dist/angular-odometer.min.js">
761</script>
761
762    
762<script
763    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-messages/angular-messages.min.js">
764</script>
764
765    
765<script
766    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-validation-match/dist/angular-validation-match.min.js">
767</script>
767
768    
768<script
769    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-loading-bar/build/loading-bar.min.js">
770</script>
770
771    
771<script src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-aria/angular-aria.min.js">
772</script>
772
773    
773<script
774    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-material/angular-material.min.js">
775</script>
775
776    
776<script
777    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-payments/lib/angular-payments.min.js">
778</script>
778
779    
779<script
780    src="https://www.youhaverealty.com/themes/public-common-files/bower_components/angular-tablesort/js/angular-tablesort.js">
781</script>
781
782    <!-- Bower js -->
783    <!-- Public js -->
784    
784<script type='text/javascript' src="https://www.youhaverealty.com/themes/public-common-files/js/loading-bar.min.js">
785</script>
785
786    
786<script src="https://www.youhaverealty.com/themes/public-common-files/js/angular-validator.min.js"></script>
786
787    
787<script src="https://www.youhaverealty.com/themes/public-common-files/js/jquery.flexslider.js"></script>
787
788    
788<script src="https://www.youhaverealty.com/themes/public-common-files/js/imgLiquid-min.js"></script>
788
789    
789<script src="https://www.youhaverealty.com/themes/public-common-files/js/jquery.simpleWeather.min.js"></script>
789
790    
790<script src="https://www.youhaverealty.com/themes/public-common-files/js/lightslider.min.js" type="text/javascript">
791</script>
791
792    
792<script src="https://www.youhaverealty.com/themes/public-common-files/js/jquery.mCustomScrollbar.concat.min.js"
793    type="text/javascript"></script>
793
794    
794<script src="https://www.youhaverealty.com/themes/public-common-files/js/chosen.jquery.min-1.4.2.js"></script>
794
795    
795<script src="https://www.youhaverealty.com/themes/public-common-files/js/angular-chosen.min.js"></script>
795
796    
796<script src="https://www.youhaverealty.com/themes/public-common-files/js/jquery.sticky-kit.min.js"></script>
796
797    
797<script src="https://www.youhaverealty.com/themes/public-common-files/js/ngStorage-0.3.6.min.js"></script>
797
798    
798<script src="https://www.youhaverealty.com/themes/public-common-files/js/ng-infinite-scroll.min.js"></script>
798
799    
799<script src="https://www.youhaverealty.com/themes/public-common-files/js/owl.carousel.js"></script>
799
800    <!-- extra menu items js -->
801    
801<script src="https://www.youhaverealty.com/themes/public-common-files/js/tutorial.js"></script>
801
802    
802<script src="https://www.youhaverealty.com/themes/public-common-files/js/isotope.pkgd.min.js"></script>
802
803    
803<script src="https://www.youhaverealty.com/themes/public-common-files/js/init.js"></script>
803
804    <!-- Public js -->
805    <!-- Angular Scripts -->
806    
806<script src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/config/angularconfig.js"></script>
806
807    
807<script src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/config/config-service.js"></script>
807
808    
808<script
809    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/app.js?v=1791380094">
810</script>
810
811    
811<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>
811
812    
812<script
813    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/shared/agent-register-modal.js?v=1782392222">
814</script>
vendor: 1 bytes, line 814
814
815<script
816    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/recentlysoldpropertycontroller.js?v=1789109828">
817</script>
817    
817<script
818    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/homecontroller.js?v=1785409119">
819</script>
vendor: 1 bytes, line 819
819
820<script
821    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/ourlistingscontroller.js?v=1789109828">
822</script>
822<script
823    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/mylistingscontroller.js?v=1789109828">
824</script>
824<script
825    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/resetpasswordcontroller.js?v=1782392222">
826</script>
826    
826<script
827    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/idxcontroller.js?v=1786709036">
828</script>
828
829    
829<script
830    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/databasepoweredcontroller.js?v=1782392222">
831</script>
831
832    
832<script
833    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/criteriacontroller.js?v=1782392222">
834</script>
834
835    
835<script
836    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/searchpropertycontroller.js?v=1790759615">
837</script>
vendor: 1 bytes, line 837
837
838<script
839    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/propertylistcriteriacontroller.js?v=1789109828">
840</script>
840    
840<script
841    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/projectcontroller.js?v=1782392222">
842</script>
842
843    
843<script
844    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/resourcescontroller.js?v=1784007458">
845</script>
845
846    
846<script
847    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/staticcontroller.js?v=1782392222">
848</script>
848
849    
849<script
850    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/registercontroller.js?v=1782392222">
851</script>
851
852    
852<script
853    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/listingcontroller.js?v=1782392222">
854</script>
854
855    
855<script
856    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/recentsalelistingcontroller.js?v=1782392222">
857</script>
857
858    
858<script
859    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/recentlyclosedsearchpropertycontroller.js?v=1782392222">
860</script>
860
861    
861<script
862    src="https://www.youhaverealty.com/resources/assets/themes/asset-common-files/controllers/commercialsearchcontroller.js?v=1785490177">
863</script>
863
864
865      
865<script src="https://www.youhaverealty.com/themes/public-common-files/js/main.js"></script>
865
866    
867    <!-- Code provided by Google -->
868    <div id="google_translate_element" style='display:none'></div>
869    
869<script type="text/javascript">
870        function googleTranslateElementInit() {
871            new google.translate.TranslateElement({
872                pageLanguage: 'en',
873                layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
874                autoDisplay: false
875            }, 'google_translate_element');
876        }
877    </script>
877
878    
878<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" type="text/javascript">
879    </script>
879
880    <!-- Flag click handler -->
881    
881<script type="text/javascript">
882        $('.translation-links a').click(function () {
883            let sel_html = $(this)[0].outerHTML;
884            console.log('sel_html', sel_html);
885            var lang = $(this).data('lang');
886            var $frame = $('.goog-te-menu-frame:first');
887            if (!$frame.size()) {
888                alert("Error: Could not find Google translate frame.");
889                return false;
890            }
891            $frame.contents().find('.goog-te-menu2-item span.text:contains(' + lang + ')').get(0).click();
892            $('.select-language').html(sel_html);
893            return false;
894        });
895
896        $(document).ready(function () {
897            $("#dpionloadloader").css("display", "block");
898        });
899    </script>
899
900
901    
901<script type="text/javascript">
902        // New Translation Element Init
903        function googleTranslateElementInit() {
904            new google.translate.TranslateElement({
905                pageLanguage: "en",
906                autoDisplay: false
907            },
908                "google_translate_element"
909            ); //remove the layout
910        }
911        // New Translation Element Init
912        // Flag click handler 
913        $(".translation-links a").click(function () {
914            var lang = $(this).data("lang");
915            var $frame = $(".goog-te-menu-frame:first");
916            if (!$frame.size()) {
917                alert("Error: Could not find Google translate frame.");
918                return false;
919            }
920            $frame.contents().find(".goog-te-menu2-item span.text:contains(" + lang + ")").get(0).click();
921            return false;
922        });
923        // New Translation code
924        $(document).ready(function () {
925            setTimeout(() => {
926                googleTranslateElementInit();
927                var lang = "English";
928                $("#google_translate_element select option").each(function () {
929                    if ($(this).text().indexOf(lang) > -1) {
930                        $(this).parent().val($(this).val());
931                        var container = document.getElementById(
932                            "google_translate_element"
933                        );
934                        var select = container.getElementsByTagName("select")[0];
935                        triggerHtmlEvent(select, "change");
936                    }
937                });
938                console.log("Translation reset");
939                // Hide the translation bar
940                $(".skiptranslate").hide();
941            }, 900);
942        });
943        function triggerHtmlEvent(element, eventName) {
944            var event;
945            if (document.createEvent) {
946                event = document.createEvent("HTMLEvents");
947                event.initEvent(eventName, true, true);
948                element.dispatchEvent(event);
949            } else {
950                event = document.createEventObject();
951                event.eventType = eventName;
952                element.fireEvent("on" + event.eventType, event);
953            }
954        }
955        // Flag click handler
956        $(".translation-links a").off("click").click(function (e) {
957            e.preventDefault();
958            console.log("Flag clicked");
959            var lang = $(this).data("lang");
960            $("#google_translate_element select option").each(function () {
961                if ($(this).text().indexOf(lang) > -1) {
962                    $(this).parent().val($(this).val());
963                    var container = document.getElementById(
964                        "google_translate_element"
965                    );
966                    var select = container.getElementsByTagName("select")[0];
967                    triggerHtmlEvent(select, "change");
968                }
969            });
970
971            // Hide the translation bar
972            $(".skiptranslate").hide();
973        });
974        // New Translation code
975    </script>
975
976    <!--start ada js -->
977    
977<script>
978        bcount = 0;
979
980        function bigSize() {
981            bcount++;
982            if (bcount == 1) {
983                document.getElementById("bigtext").innerHTML = 'Bigger Text <span class="glyphicon glyphicon-ok"></span>';
984                document.getElementById("progress").innerHTML =
985                    '<span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span>';
986                document.body.style.fontSize = "20px";
987            }
988            if (bcount == 2) {
989                document.getElementById("bigtext").innerHTML = 'Bigger Text <span class="glyphicon glyphicon-ok"></span>';
990                document.getElementById("progress").innerHTML =
991                    '<span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span>';
992                document.body.style.fontSize = "25px";
993            }
994            if (bcount == 3) {
995                document.getElementById("bigtext").innerHTML = 'Bigger Text <span class="glyphicon glyphicon-ok"></span>';
996                document.getElementById("progress").innerHTML =
997                    '<span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span><span class="glyphicon glyphicon-minus"></span>';
998                document.body.style.fontSize = "30px";
999            }
1000            if (bcount >= 4) {
1001                document.getElementById("bigtext").innerHTML = 'Bigger Text';
1002                document.getElementById("progress").innerHTML = '';
1003                document.body.style.fontSize = null;
1004                bcount = 0;
1005            }
1006        }
1007
1008        function speech(speechmsg) {
1009            var synth = window.speechSynthesis;
1010            synth.cancel();
1011            var utterance1 = new SpeechSynthesisUtterance(speechmsg);
1012            synth.speak(utterance1);
1013            speechmsg = '';
1014        }
1015
1016        function myFunction(e) {
1017            speech(e.target.innerText)
1018        }
1019        var count = 0;
1020
1021        function speechtext() {
1022            count++;
1023            if (count == 1) {
1024                speech('Screen reader enable');
1025                document.getElementById("stext").innerHTML =
1026                    'Speech Text <span class="glyphicon glyphicon-volume-up"></span>';
1027                document.addEventListener("click", myFunction);
1028            } else {
1029                speech('Screen reader disable');
1030                document.getElementById("stext").innerHTML = 'Speech Text';
1031                document.removeEventListener("click", myFunction);
1032                count = 0;
1033            }
1034        }
1035    </script>
1035
1036    <!--end ada js -->
1037    
1037<script src="https://apis.google.com/js/api:client.js"></script>
1037
1038    
1038<script>
1039        const modal_pic = '651809233.jpg';
1040        const gm_api_key = 'AIzaSyAfUt0e88sbSCGqblsMOhPdYarM1doX254';
1041    </script>
1041
1042    <div ng-controller="agentregistermodalcontroller">
1043        <modal></modal>
1044    </div>
1045    <!-- start ada css -->
1046    <style type="text/css">
1047        .modal-dialog {
1048            /*width: 350px;*/
1049            /*height: auto;*/
1050        }
1051
1052        .modal-backdrop {
1053            background-color: transparent;
1054        }
1055    </style>
1056    <!-- end ada css -->
1057
1058    
1058<script src="https://cdn.jsdelivr.net/npm/vanilla-hcaptcha"></script>
1058
1059
1060                                
1060<script>
1061                                    $(document).ready(function() {
1062                                        $(".main-menu ul li").has("ul").append("<span class='subToggle'></span>");
1063
1064                                        $(".subToggle").click(function() {
1065                                            $(this).prev("ul").slideToggle(0);
1066                                            $(this).toggleClass("active");
1067                                        });
1068
1069                                        $(".menu-open-btn").click(function() {
1070                                            $(".header-left").addClass("show");
1071                                            $("body").addClass("overflow");
1072                                            $(".page-overlay").show(0);
1073                                        });
1074
1075                                        $(".page-overlay,.menu-close-btn").click(function() {
1076                                            $(".header-left").removeClass("show");
1077                                            $("body").removeClass("overflow");
1078                                            $(".page-overlay").hide(0);
1079                                        });
1080
1081                                        $(".main-header .main-menu ul li a").click(function() {
1082                                            $(".header-left").removeClass("show");
1083                                            $("body").removeClass("overflow");
1084                                            $(".page-overlay").hide(0);
1085                                        });
1086
1087                                        $(window).resize(function() {
1088                                            if ($(window).width() > 1200) {
1089                                                $(".header-left").removeClass("show");
1090                                                $("body").removeClass("overflow");
1091                                                $(".page-overlay").hide(0);
1092                                                $(".subToggle").removeClass("active");
1093                                                $(".main-menu").find("ul").removeAttr("style");
1094                                            }
1095                                        });
1096                                    });
1097                                </script>
1097
1098
1099
1100
1101
1102<script>
1103  document.getElementById('agentIcon').addEventListener('click', function () {
1104    document.getElementById('agentPopup').style.display = 'block';
1105  });
1106
1107  document.getElementById('closePopup').addEventListener('click', function () {
1108    document.getElementById('agentPopup').style.display = 'none';
1109  });
1110
1111  // Optional: Click outside to close
1112  document.addEventListener('click', function (event) {
1113    const popup = document.getElementById('agentPopup');
1114    const icon = document.getElementById('agentIcon');
1115    if (!popup.contains(event.target) && !icon.contains(event.target)) {
1116      popup.style.display = 'none';
1117    }
1118  });
1119</script>
1119
1120
1121
1122
1123
1124
1125
1126
1127<!-- Client registration and registration popup -->
1128<div class="modal fade register-modal" tabindex="-1" role="dialog" id="clientRegistrationModal">
1129    <div class="modal-dialog modal-lg" role="document">
1130        <div class="modal-content">
1131
1132            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
1133                    aria-hidden="true">&times;</span></button>
1134
1135            <div class="register-modal-row">
1136                <div class="image-col">
1137                    <div class="image-holder">
1138                        <img src="https://www.youhaverealty.com/themes/6898/images/bea-PopUp.jpg">
1139                    </div>
1140
1141                </div> <!-- end image-col -->
1142
1143                <div class="register-content-col">
1144                    <div class="register-content-heading-block">
1145                        <h3 class="headingText">Let's Connect</h3>
1146                        <p class="sub-headingText">Sign up today and receive email alerts of new listings that come
1147                            on
1148                            the
1149                            market.</p>
1150                    </div>
1151
1152                    <div class="other-login">
1153
1154                        <div
1155                            class="other-btn-holder text-center d-md-flex flex-row align-items-center justify-content-center">
1156
1157                            <a class="btn other-btn mx-1 my-1" onclick="fblogin()"
1158                                ng-show="agentDetails.facebook_app_id && agentDetails.facebook_app_id != 'null'">
1159                                <img src="{{ base_url }}/uploads/index_files/icons/facebook-login.svg" width="10">Sign
1160                                in
1161                                with Facebook</a>
1162
1163                            <a class="btn other-btn mx-1 my-1" ng-click="loginWithGoogle()">
1164                                <img src="{{ base_url }}/uploads/index_files/icons/google-login.svg" width="17"> Sign
1165                                up
1166                                with Google </a>
1167
1168                        </div>
1169                        <div class="orDevider mt-4 mb-3 text-center">
1170                            <div class="orText">or Sign in with Email</div>
1171                        </div>
1172                    </div>
1173
1174                    <form angular-validator-submit="submitClientRegistration()" name="agentForm" angular-validator
1175                        novalidate>
1176                        <div class="form-area text-left">
1177                            <div class="form-group">
1178                                <label class="control-label">Name <sup class="text-danger">*</sup></label>
1179                                <input type="text" class="form-control" name="name" id="name" ng-model="agentform.name"
1180                                    required>
1181                                <div ng-show="agentForm.$submitted">
1182                                    <div ng-show="agentForm.name.$error.required" style="color:red">Name field is
1183                                        required</div>
1184                                </div>
1185                            </div>
1186                            <div class="form-group">
1187                                <label class="control-label">Email Address <sup class="text-danger">*</sup></label>
1188                                <input type="email" class="form-control" name="agent_email" id="agent_email"
1189                                    ng-model="agentform.email" required>
1190                                <div ng-show="agentForm.$submitted">
1191                                    <div ng-show="agentForm.agent_email.$error.required" style="color:red">Email
1192                                        field
1193                                        is required</div>
1194                                </div>
1195                            </div>
1196                            <div class="form-group">
1197                                <label class="control-label">Mobile Number <sup class="text-danger">*</sup></label>
1198                                <input type="text" class="form-control" name="primary_phone" id="primary_phone"
1199                                    ng-model="agentform.primary_phone" required>
1200                                <div ng-show="agentForm.$submitted">
1201                                    <div ng-show="agentForm.primary_phone.$error.required" style="color:red">
1202                                        Mobile
1203                                        Number field is required</div>
1204                                </div>
1205                            </div>
1206                            <div class="form-group">
1207                                <label class="control-label">What Zip Code Are You Interested In</label>
1208                                <input type="text" class="form-control" name="zip_code" id="zip_code"
1209                                    ng-model="agentform.zip_code">
1210                            </div>
1211
1212                    <div class="form-group">
1213                        <custom-captcha model="agentform.captcha"></custom-captcha>
1214                    </div>
1215                                            <div class="form-btn-holder">
1216                                <button type="submit" class="btn btn-comn-regal-blue btn-center">Register</button>
1217                            </div>
1218                        </div>
1219                    </form>
1220                    <p class="register-modal-infoText">Already Have an
1221                        Account?
1222                        Please <a ng-click="showClientLoginPopup()" style="cursor:pointer">Sign In</a></p>
1223
1224                </div> <!-- end register-content-col -->
1225            </div> <!-- end register-modal-row -->
1226        </div>
1227    </div>
1228</div>
1229<div class="modal fade register-modal" tabindex="-1" role="dialog" id="clientLoginModal">
1230    <div class="modal-dialog modal-lg" role="document">
1231        <div class="modal-content">
1232
1233            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
1234                    aria-hidden="true">&times;</span></button>
1235
1236            <div class="register-modal-row">
1237                <div class="image-col">
1238                    <div class="image-holder">
1239                        <img src="https://www.youhaverealty.com/themes/6898/images/bea-PopUp.jpg">
1240                    </div>
1241
1242                </div> <!-- end image-col -->
1243
1244                <div class="register-content-col">
1245                    <div class="register-content-heading-block">
1246                        <h3 class="headingText">Let's Connect</h3>
1247                        <p class="sub-headingText">Sign in to receive updates.</p>
1248                    </div>
1249
1250                    <div class="other-login">
1251
1252                        <div
1253                            class="other-btn-holder text-center d-md-flex flex-row align-items-center justify-content-center">
1254
1255                            <a class="btn other-btn mx-1 my-1" onclick="fblogin()"
1256                                ng-show="agentDetails.facebook_app_id && agentDetails.facebook_app_id != 'null'">
1257                                <img src="{{ base_url }}/uploads/index_files/icons/facebook-login.svg" width="10">Sign
1258                                in
1259                                with Facebook</a>
1260
1261                            <a class="btn other-btn mx-1 my-1" ng-click="loginWithGoogle()">
1262                                <img src="{{ base_url }}/uploads/index_files/icons/google-login.svg" width="17"> Sign
1263                                in
1264                                with Google </a>
1265
1266                        </div>
1267                        <div class="orDevider mt-4 mb-3 text-center">
1268                            <div class="orText">or Sign in with Email</div>
1269                        </div>
1270                    </div>
1271
1272                    <form angular-validator-submit="submitClientLogin()" name="agentForm" angular-validator novalidate>
1273                        <div class="form-area text-left">
1274                            <div class="form-group">
1275                                <label class="control-label">Email Address <sup class="text-danger">*</sup></label>
1276                                <input type="email" class="form-control" name="agent_email" id="agent_email"
1277                                    ng-model="agentform.email" required>
1278                                <div ng-show="agentForm.$submitted">
1279                                    <div ng-show="agentForm.agent_email.$error.required" style="color:red">Email
1280                                        field
1281                                        is required</div>
1282                                </div>
1283                            </div>
1284                            <div class="form-group">
1285                                <label class="control-label">Password <sup class="text-danger">*</sup></label>
1286                                <input type="password" class="form-control" name="password" id="password"
1287                                    ng-model="agentform.password" required>
1288                                <div ng-show="agentForm.$submitted">
1289                                    <div ng-show="agentForm.password.$error.required" style="color:red">Password
1290                                        is required</div>
1291                                </div>
1292                            </div>
1293
1294                    <div class="form-group">
1295                        <custom-captcha model="agentform.captcha"></custom-captcha>
1296                    </div>
1297                                            <div class="form-btn-holder">
1298                                <button type="submit" class="btn btn-comn-regal-blue btn-center">Login</button>
1299                            </div>
1300                        </div>
1301                    </form>
1302                    <p class="register-modal-infoText">Don't Have an
1303                        Account?
1304                        Please <a style="cursor: pointer;" ng-click="showClientRegistrationPopup()">Sign Up</a>
1305                    </p>
1306
1307                </div> <!-- end register-content-col -->
1308            </div> <!-- end register-modal-row -->
1309        </div>
1310    </div>
1311</div>
1312
1313<div class="modal fade register-modal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog"
1314    id="updateProfileModal">
1315    <div class="modal-dialog modal-md" role="document">
1316        <div class="modal-content p-5">
1317            <div class="row">
1318                <div class="col-md-12">
1319                    <div class="register-content-heading-block">
1320                        <h3 class="headingText">Complete the registration</h3>
1321                        <p class="sub-headingText">Complete the registration to receive updates</p>
1322                    </div>
1323                    <form angular-validator-submit="updateProfile()" name="agentForm" angular-validator novalidate>
1324                        <div class="form-area text-left">
1325                            <div class="form-group">
1326                                <label class="control-label">Mobile Number <sup class="text-danger">*</sup></label>
1327                                <input type="text" class="form-control" name="primary_phone" id="primary_phone"
1328                                    ng-model="agentform.primary_phone" required>
1329                                <div ng-show="agentForm.$submitted">
1330                                    <div ng-show="agentForm.primary_phone.$error.required" style="color:red">
1331                                        Mobile
1332                                        Number field is required</div>
1333                                </div>
1334                            </div>
1335                            <div class="form-group">
1336                                <label class="control-label">What Zip Code Are You Interested In</label>
1337                                <input type="text" class="form-control" name="zip_code" id="zip_code"
1338                                    ng-model="agentform.zip_code">
1339                            </div>
1340                            <div class="form-btn-holder">
1341                                <button type="submit" class="btn btn-comn-regal-blue btn-center">Update</button>
1342                            </div>
1343                        </div>
1344                    </form>
1345                </div> <!-- end register-content-col -->
1346            </div> <!-- end register-modal-row -->
1347            <br>
1348        </div>
1349    </div>
1350</div>                            
1351<script>
1352    let responseData = {};
1353    let clientEmail = "";
1354    responseData.booking_info = {};
1355
1356    function setupChatbotBooking(apiData, contact) {
1357        var injector = angular.element(document.body).injector();
1358        var BookingService = injector.get("BookingService");
1359        BookingService.setInitialData({
1360            member_id: user_id
1361        });
1362        BookingService.setAfterContact(apiData);
1363        return BookingService.isBookingLinkVisible();
1364    }
1365
1366    function onCrmChatReady(api) {
1367        api.on('lead_captured', function(lead) {
1368            console.log('lead_captured', lead);
1369            clientEmail = lead.email;
1370            responseData.booking_info.client_id = lead.client_id;
1371            responseData.booking_info.member_id = lead.member.id;
1372            responseData.booking_info.client_email = clientEmail;
1373
1374            // Member info
1375            responseData.booking_info.member_details = lead.member;
1376
1377            // Login here
1378            const payload = {
1379                page: "search",
1380                member_id: String(responseData.booking_info.member_id),
1381                client_id: lead.client_id
1382            };
1383            const loginUrl = base_url + "/firstclient/client-login";
1384            fetch(loginUrl, {
1385                    method: "POST",
1386                    credentials: "include", // Remove if not needed
1387                    headers: {
1388                        "Content-Type": "application/json"
1389                    },
1390                    body: JSON.stringify(payload)
1391                })
1392                .then(async (response) => {
1393                    if (!response.ok) {
1394                        throw new Error(`HTTP ${response.status}`);
1395                    }
1396
1397                    const data = await response.json();
1398                    // Login the user
1399                    const loginData = data.login_data;
1400                    if (loginData) {
1401                        localStorage.setItem('access_token', loginData.token);
1402                        localStorage.setItem('usr_info', loginData.encripted_usr_info);
1403                        var injector = angular.element(document.querySelector('[ng-app]')).injector();
1404                        var $rootScope = injector.get('$rootScope');
1405
1406                        $rootScope.$applyAsync(function() {
1407                            $rootScope.is_front_logged = 1;
1408                            $rootScope.refreshLoggedUser();
1409                        });
1410                        console.log("User logged in successfully");
1411                    }
1412                })
1413                .catch((error) => {
1414                    console.error("Save Search Error:", error);
1415                });
1416
1417            setupChatbotBooking(responseData, lead);
1418        });
1419        api.on('save_search', function(lead) {
1420            console.log(lead);
1421            // return;
1422
1423            // Saving the search
1424            // {
1425            //     "page": "search",
1426            //     "parsed_data": "{\"property_type\":\"\",\"property_types\":[\"Single Family\"],\"bedroom\":0,\"bathroom\":0,\"min_price\":100000,\"max_price\":1000000,\"search_listing_sort\":\"listprice_desc\",\"search_listing_date_sort\":\"listdate_\",\"image_category\":\"\",\"limit\":20,\"page\":1,\"advance_search\":\"{\\\"city\\\":[\\\"Miami\\\"],\\\"bedrooms\\\":0,\\\"bathrooms\\\":0}\",\"advance_search_updated\":\"{\\\"city\\\":[\\\"Miami\\\"]}\",\"agentid\":\"1150\",\"all_bound\":\"{}\",\"menu_id\":null,\"criteria_id\":null,\"page_name\":null}",
1427            //     "member_id": "1150"
1428            // }
1429
1430
1431            // const lead = {
1432            //     budget: "100000-2000000",
1433            //     client_id: 96522,
1434            //     email: "[email protected]",
1435            //     full_name: "Wasim Kabir",
1436            //     location: "Miami",
1437            //     member_id: 1150,
1438            //     move_time: "Next month",
1439            //     primary_phone: "9087654321",
1440            //     property_type: "Single Family",
1441            // }
1442
1443
1444
1445            // Parse budget
1446            let minPrice = null;
1447            let maxPrice = null;
1448
1449            if (lead.budget) {
1450                const budget = lead.budget.split("-").map(Number);
1451                if (budget.length === 1) {
1452                    // min 20% below budget, max 20% above budget
1453                    minPrice = Math.floor(budget[0] * 0.8);
1454                    maxPrice = Math.ceil(budget[0] * 1.2);
1455                } else if (budget.length > 1) {
1456                    minPrice = budget[0];
1457                    maxPrice = budget[1];
1458                }
1459            }
1460            // else {
1461            //     minPrice = budget[0] || null;
1462            //     maxPrice = budget.length > 1 ? budget[1] : null;
1463            // }
1464            let advanceSearch = {};
1465            let advanceSearchUpdated = {};
1466
1467            if (lead.zip_code != null && lead.zip_code != '') {
1468                // Advance search objects
1469                advanceSearch = {
1470                    zip_code: [lead.zip_code],
1471                    bedrooms: 0,
1472                    bathrooms: 0
1473                };
1474
1475                advanceSearchUpdated = {
1476                    zip_code: [lead.zip_code],
1477                };
1478            } else {
1479                // Advance search objects
1480                advanceSearch = {
1481                    // city: [lead.location],
1482                    city: [lead.city],
1483                    bedrooms: 0,
1484                    bathrooms: 0
1485                };
1486
1487                advanceSearchUpdated = {
1488                    // city: [lead.location]
1489                    city: [lead.city]
1490                };
1491            }
1492
1493
1494            // Build parsed_data
1495            const parsedData = {
1496                property_type: "",
1497                // property_types: [lead.property_type],
1498                property_types: [],
1499                bedroom: 0,
1500                bathroom: 0,
1501                min_price: minPrice,
1502                ...(maxPrice !== null && {
1503                    max_price: maxPrice
1504                }),
1505                search_listing_sort: "listprice_desc",
1506                search_listing_date_sort: "listdate_",
1507                image_category: "",
1508                limit: 20,
1509                page: 1,
1510                advance_search: JSON.stringify(advanceSearch),
1511                advance_search_updated: JSON.stringify(advanceSearchUpdated),
1512                agentid: String(lead.member.id),
1513                all_bound: "{}",
1514                menu_id: null,
1515                criteria_id: null,
1516                page_name: null
1517            };
1518
1519            // Final payload
1520            const payload = {
1521                page: "search",
1522                parsed_data: JSON.stringify(parsedData),
1523                member_id: String(responseData.booking_info.member_id),
1524                client_id: lead.client_id
1525            };
1526            // const saveSearchUrl = base_url + "/firstclient/save-search-and-login";
1527            const saveSearchUrl = base_url + "/firstclient/save-search";
1528            fetch(saveSearchUrl, {
1529                    method: "POST",
1530                    credentials: "include", // Remove if not needed
1531                    headers: {
1532                        "Content-Type": "application/json"
1533                    },
1534                    body: JSON.stringify(payload)
1535                })
1536                .then(async (response) => {
1537                    if (!response.ok) {
1538                        throw new Error(`HTTP ${response.status}`);
1539                    }
1540
1541                    const data = await response.json();
1542                    console.log("Save Search Success:", data);
1543                    // // Login the user
1544                    // const loginData = data.login_data;
1545                    // if(loginData) {
1546                    //     localStorage.setItem('access_token', loginData.token);
1547                    //     localStorage.setItem('usr_info', loginData.encripted_usr_info);
1548                    //     var injector = angular.element(document.querySelector('[ng-app]')).injector();
1549                    //     var $rootScope = injector.get('$rootScope');
1550
1551                    //     $rootScope.$applyAsync(function () {
1552                    //         $rootScope.is_front_logged = 1;
1553                    //         $rootScope.refreshLoggedUser();
1554                    //     });
1555                    //     console.log("User logged in successfully");
1556                    // }
1557                })
1558                .catch((error) => {
1559                    console.error("Save Search Error:", error);
1560                });
1561            console.log(lead);
1562        });
1563        api.on('schedule_calendar_booking', function(data) {
1564            console.log(responseData);
1565
1566            console.log("Minimize the chat");
1567            api.minimize();
1568
1569            console.log('schedule_calendar_booking', data);
1570            var injector = angular.element(document.body).injector();
1571
1572            if (!injector) {
1573                console.error('AngularJS injector not found.');
1574                return;
1575            }
1576
1577            injector.invoke(function(
1578                $compile,
1579                $rootScope,
1580                $timeout,
1581                BookingService
1582            ) {
1583
1584                BookingService.setInitialData({
1585                    member_id: responseData.booking_info.member_details.id
1586                });
1587
1588                BookingService.setAfterContact(responseData);
1589
1590                // Create a child scope
1591                var chatbotScope = $rootScope.$new();
1592
1593                // Give the directive its own member_details
1594                chatbotScope.chatbotMemberDetails = responseData.booking_info.member_details;
1595
1596                // Remove previous instance
1597                angular.element("#chatbot-slot-booking").remove();
1598                // Hide any modal-backdrop divs that might be present
1599                // <div class="modal-backdrop fade in"></div>
1600                // Remove the fade and in classes to prevent the backdrop from blocking interaction
1601                // $(".modal-backdrop").removeClass("fade in");
1602                $('.slotBookingModal').on('hidden.bs.modal', function() {
1603                    // 1. Remove the backdrop element from the DOM
1604                    $('.modal-backdrop').remove();
1605
1606                    // 2. Restore scrolling to the main page body
1607                    $('body').removeClass('modal-open');
1608                });
1609
1610                var el = angular.element(
1611                    '<div id="chatbot-slot-booking">' +
1612                    '<slot-booking ' +
1613                    'member-details="chatbotMemberDetails" ' +
1614                    'chatbot-mode="true">' +
1615                    '</slot-booking>' +
1616                    '</div>'
1617                );
1618
1619                angular.element(document.body).append(el);
1620
1621                $compile(el)(chatbotScope);
1622                chatbotScope.$digest();
1623
1624                $timeout(function() {
1625                    $rootScope.$broadcast("slotBooking:open");
1626                });
1627            });
1628
1629            document.addEventListener('bookingCompleted', (event) => {
1630                console.log(event.detail.booking_info);
1631                let bookingId = event.detail.booking_info.data.meeting_id;
1632                // Minimize the booking calendar
1633                $('.slotBookingModal').hide();
1634
1635                api.open();
1636                api.confirmBooking(bookingId);
1637            });
1638        });
1639    }
1640</script>
vendor: 1 bytes, line 1640
1640
1641<script src="https://chatbot.dpirealtywebsites.com/embed/chatbot-loader.js" data-member-id="6898"
1642    data-title="Chat with us" data-primary-color="#0d6efd"
1643    data-booking-url="https://new-crm.dpirealtywebsites.com/book?member_id=6898"
1644    data-callback="onCrmChatReady" defer></script>
1644
1645</body>
1646
1647</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.