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