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