1<!DOCTYPE html> 2<html lang="en-us"> 3 <head> 4 <link rel="preconnect" href="https://www.googletagmanager.com"> 5<link rel="preconnect" href="https://d1nn5t56all1qd.cloudfront.net">
5<script> 6 document.addEventListener("DOMContentLoaded", function(event) { 7 function usmPageRenderUtil(){var e=this;e.pageCategory="",e.heroElements=[],e.fpTime=null,e.fmpTime=null,e.fmpToTti=null,e.ttiTime=null,e.checker=null,e.waitTime=5e3,e.debug=!1,e.run=function(t){var n=t.heroElementIdentifiers||[".page-hero-element"];return e.pageCategory=t.pageCategory,e.debug=t.debug||!1,new Promise(function(t,r){e.observePaint().then(function(){e.observeHeroElements(n).then(function(){e.observeLongTasks().then(function(){e.fmpToTti=e.ttiTime-e.fmpTime,e.debug&&(console.log("FP: "+e.fpTime),console.log("FMP: "+e.fmpTime),console.log("FMP to TTI: "+e.fmpToTti),console.log("TTI: "+e.ttiTime)),t(e)})})})})},e.observePaint=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var r=n.getEntries();for(var i in r){var s=r[i],o=s.name;e.fpTime=performance.now();if("first-paint"===s.name){e.debug&&(console.log(s),console.log("metricName"),console.log(o)),t();return}}});r.observe({entryTypes:["paint"]})})},e.observeHeroElements=function(t){return new Promise(function(n,r){t=t.join(),e.debug&&console.log("Hero elements: "+t),e.heroElements=[].slice.call(document.querySelectorAll(t)),e.debug&&console.log("Hero elements count: ["+e.heroElements.length+"]");var i=new MutationObserver(function(t){for(var r=0;r<e.heroElements.length;r++){var s=e.heroElements[r];document.contains(s)&&e.heroElements.splice(r,1)}e.heroElements.length<=0&&(i.disconnect(),e.fmpTime=performance.now(),e.debug&&console.log("Hero observer disconnected. ["+e.getCurrentTime(!0)+"] Unix: ["+e.getCurrentTime()+"]"),n()),e.debug&&console.log("Hero elements not displayed. ["+e.heroElements.length+"].")});i.observe(document,{attributes:!0,childList:!0,characterData:!1,subtree:!0})})},e.observeLongTasks=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var i=n.getEntries();for(var s in i){var o=i[s];o instanceof PerformanceLongTaskTiming&&(e.debug&&console.log(o),e.scheduleCheck(r,t))}});r.observe({entryTypes:["longtask"]})})},this.scheduleCheck=function(e,t){var n=this,r=performance.now();clearTimeout(this.checker),this.checker=setTimeout(function(){n.ttiTime=r,e.disconnect(),t(),n.debug&&console.log("Performance observer disconnected. ["+n.getCurrentTime(!0)+"] Unix: ["+n.getCurrentTime()+"]")},n.waitTime)},e.getCurrentTime=function(e){return e===!0?(new Date).toUTCString():(new Date).getTime()},e.getPayload=function(){return{"Time to Interactive":e.formatTime(e.ttiTime),"First Paint":e.formatTime(e.fpTime),"First Meaningful Paint":e.formatTime(e.fmpTime),"FMP to TTI":e.formatTime(e.fmpToTti),"Page Category":e.pageCategory}},e.formatTime=function(e){e/=1e3;var t=Math.pow(10,1);return Math.round(e*t)/t}}; 8 var renderUtil = new usmPageRenderUtil(); 9 var debug = false; 10 renderUtil.run({heroElementIdentifiers: ["#register-form",".facebook-wrapper"], pageCategory: "User Register", debug: debug}).then(function (renderUtil) { 11 if (debug) { 12 console.log(renderUtil.getPayload()); 13 } 14 }); 15 }); 16 </script>
16<script> 17window.dataLayer = window.dataLayer || []; 18window.dataLayer.push({"hasSEO":"UA-73987-39","hasGlobalRE":"UA-73987-25","hasPremium":"UA-73987-27","hasCompassV2":"UA-73987-51","NumberOfAgents":150,"NumberOfAgentWebsites":0,"MLS":["ME_MAINE_API"],"CallTracking":false,"MapSearchV2":true,"OffMarketProperty":false,"VendorsPage":false,"Blog":true,"LuxuryBuildings":false,"TownPages":true,"MarketReportTool":true,"AVMTool":true,"LeadRouter":true}); 19</script>
19 20�<!-- Google Tag Manager --> 21�
21<script>
vendor: 317 bytes, line 21
21(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
21GTM-NR38L3C
vendor: 3 bytes, line 21
21');
21</script>
21 22�<!-- End Google Tag Manager --> 23�<title>Realty of Maine</title> 24 <meta name="description" content="" /> 25 <meta name="author" content="Realty of Maine" /> 26 <link rel="canonical" href="https://realtyofmaine.com/user/register/"/> 27 <link rel="copyright" href="https://d.usmre.com/UnionStreetMediaTermsofUse.pdf"/><meta property="fb:app_id" content="372025886539584" /> 28 <meta property="og:title" content="Realty of Maine" /> 29 <meta property="og:description" content="" /> 30 <meta property="og:url" content="https://realtyofmaine.com/user/register/" /> 31 <meta property="og:type" content="website" /> 32 <meta property="og:site_name" content="Realty of Maine" /> 33 <meta name="twitter:card" content="summary" /> 34 <meta name="twitter:title" content="Realty of Maine" /> 35 <meta name="twitter:description" content="" /> 36 <meta name="google-site-verification" content="P9mjE_lN852pGExOE3gfh7g_lc118j74s18f0cET8WI" /> 37 <meta name="msvalidate.01" content="7AFB407F61E561ABD1320A24E73E1F9A" /> 38 <link rel="shortcut icon" href="https://s3.amazonaws.com/files.usmre.com/8625/i/favicon.png?t=1672339491" /> 39<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 40<meta name="viewport" content="width=device-width, initial-scale=1"> 41<link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/8625/styles.min.css?version=1790366294" media="screen" /><link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/layouts/46/print.css?version=1740650949" media="print" />
41<script src="https://kit.fontawesome.com/c7bcd66c3f.js" crossorigin="anonymous"></script>
41<script>/** vim: et:ts=4:sw=4:sts=4 42 * @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors. 43 * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE 44 */ 45var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}}function eachReverse(e,t){if(e){var i;for(i=e.length-1;i>-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t<e.length;t++)if(i=e[t],"."===i)e.splice(t,1),t-=1;else if(".."===i){if(0===t||1===t&&".."===e[2]||".."===e[t-1])continue;t>0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h,m,g=i&&i.split("/"),v=y.map,x=v&&v["*"];if(e&&(e=e.split("/"),d=e.length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[d])&&(e[d]=e[d].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&g&&(m=g.slice(0,g.length-1),e=m.concat(e)),t(e),e=e.join("/")),r&&v&&(g||x)){a=e.split("/");e:for(s=a.length;s>0;s-=1){if(c=a.slice(0,s).join("/"),g)for(u=g.length;u>0;u-=1)if(o=getOwn(v,g.slice(0,u).join("/")),o&&(o=getOwn(o,c))){p=o,f=s;break e}!l&&x&&getOwn(x,c)&&(l=getOwn(x,c),h=s)}!p&&l&&(p=l,f=h),p&&(a.splice(0,f,p),e=a.join("/"))}return n=getOwn(y.pkgs,e),n?n:e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):e.indexOf("!")===-1?i(e,p,n):e:(h=i(e,p,n),c=o(h),d=c[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;
45for(d();O.length;){if(e=O.shift(),null===e[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;return this.shim?void q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()})):e.prefix?this.callPlugin():this.load()}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&(t=this.module,t?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),d=getOwn(S,o.id),void(d&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit
45("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(i.indexOf("?")===-1?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t,i;e="string"==typeof e?{name:e}:e,i=e.name,t=e.location,t&&(y.paths[i]=e.location),y.pkgs[i]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(a(null,t)),f.skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return n!==-1&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){var t=getOwn(S,e.id);t&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(i=O.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,n=e.split("/"),o=n.length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js"),s=("/"===s.charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.3",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),n=getOwn(contexts,a),n||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()}
45,require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||mainScript.indexOf("!")!==-1||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")])),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout);</script>
45<script type="text/javascript"> 46 var requireConfig = {"waitSeconds":20,"baseUrl":"https:\/\/d1mlo4htassgww.cloudfront.net\/shipyard\/build\/","paths":{"async":"profiles\/default","bootstrap":"profiles\/default","goog":"profiles\/default","jquery":"profiles\/default","jquery.browser":"profiles\/default","jquery.deparam":"profiles\/default","jquery.dropdownchecklist":"profiles\/default","jquery.form":"profiles\/default","jquery.history":"profiles\/default","jquery.html5-placeholder-shim":"profiles\/default","jquery.inview":"profiles\/default","jquery.usmNlsShipyard":"profiles\/default","jquery.pageitems":"profiles\/default","jquery.usmajaxtogglebutton":"profiles\/default","jquery.usmmortgageestimate":"profiles\/default","jquery.usmtruncate":"profiles\/default","jquery.validation":"profiles\/default","jquery.validation-extensions-usm":"profiles\/default","jqueryui":"profiles\/default","knockout":"knockout-2.3.0","owlcarousel":"profiles\/default","picturefill.min":"profiles\/default","propertyParser":"profiles\/default","shim.polyfills":"profiles\/default","captcha":"profiles\/default","shipyard":"profiles\/default","static-map-search":"profiles\/default","usm":"profiles\/default","usm.analytics":"profiles\/default","usm.cookie":"profiles\/default","usm.url":"profiles\/default","usm.user":"profiles\/default","usm.favorite":"profiles\/default","usm.savesearch":"profiles\/default","usm.modalform":"profiles\/default","usm.dynamicsearch":"profiles\/default","LLSDKsJS":"https:\/\/sdk.locallogic.co\/sdks-js\/1.19.30\/index.umd","webfontloader":"\/\/ajax.googleapis.com\/ajax\/libs\/webfont\/1\/webfont","Leaflet":"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.0.1\/leaflet","mapboxgl":"https:\/\/api.tiles.mapbox.com\/mapbox-gl-js\/v0.42.0\/mapbox-gl","plunk":"plunkComponents.min","emblaCarousel":"https:\/\/unpkg.com\/[email protected]\/embla-carousel.umd","emblaCarouselAutoplay":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-autoplay.umd","emblaCarouselClassNames":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-class-names.umd","emblaCarouselFade":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-fade.umd","emblaCarouselPlugins":"emblaCarouselPlugins","map.regions":"\/realestate\/regions\/?json","jquery.validationextensionsusm":"\/data\/shipyard\/js\/jquery.validation-extensions-usm"}}; 47 requireConfig.urlArgs = function(id, url) { 48 var args = ""; 49 if (url.indexOf("d1nn5t56all1qd") <= 0 && url.indexOf("dy0meowegjlo2") <= 0) { 50 args = "version=1790777761"; 51 return (url.indexOf("?") === -1 ? "?" : "&") + args; 52 } 53 54 return ""; 55 }; 56 57 require.config(requireConfig); 58 </script>
58 59
59<script type="text/javascript">require(["profiles/default", "usm", "usm.calltracking", "usm.goscript"], function (listing, usm) { 60 if (usm.touchSupport) { require(["profiles/touch"]); } 61 });</script>
vendor: 73 bytes, line 61
61<script async src="https://www.google.com/recaptcha/enterprise.js?render=
616Ld4ApEpAAAAACsg0ljxwxjJvWQf85-Zxz7WBOSS
vendor: 24 bytes, lines 61-62
61"></script> 62
62<link rel="preconnect" href="https://www.google.com"> 63 <link rel="preconnect" href="https://www.gstatic.com" crossorigin> 64</head> 65�<body class="register array1-user array1-register fall" data-site-type="shipyard" data-re-captcha-site-key="6Ld4ApEpAAAAACsg0ljxwxjJvWQf85-Zxz7WBOSS"> 66�<!-- Google Tag Manager (noscript) -->
vendor: 63 bytes, lines 66-67
66 67�<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
67GTM-NR38L3C
vendor: 84 bytes, lines 67-68
67" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 68�
68<!-- End Google Tag Manager (noscript) --> 69�<header class="utilBarWrap"> 70 <div id="sidebar3"><div id="codewidget-154632" class="widget code codewidget container"><div class="widget-inner"> 71 <a href="/"> 72 <img 73 src="https://s3.amazonaws.com/files.usmre.com/8625/hor-white-logo.png" 74 alt="Realty of Maine Logo" 75 fetchpriority="high" 76 /> 77 </a> 78</div> 79</div><div id="codewidget-154470" class="widget code codewidget container"><div class="numbers"> 80 <div class="phone-dropdown offices"> 81 <span style="display: none;"><i class="fas fa-map-marker-alt"></i><a href="#">Offices</a></span> 82 <div class="dropdown dropdown1 collapse"> 83 <span>Bangor</span> 84 <p><a href="tel:+12079426310">(207) 942-6310</a></p> 85 <span>Belfast</span> 86 <p><a href="tel:+12073386800">(207) 338-6800</a></p> 87 <span>Brunswick</span> 88 <p><a href="tel:+12074062084">(207) 406-2084</a></p> 89 <span>Dover Foxcroft</span> 90 <p><a href="tel:+12079426310">(207) 942-6310</a></p> 91 <span>Ellsworth</span> 92 <p><a href="tel:+12076672300">(207) 667-2300</a></p> 93 <span>Greenville</span> 94 <p><a href="tel:+12076956073">(207) 695-6073</a></p> 95 <span>Lincoln</span> 96 <p><a href="tel:+12079426310">(207) 942-6310</a></p> 97 <span>South China</span> 98 <p><a href="tel:+12074454027">(207) 445-4027</a></p> 99 <span>Winter Harbor</span> 100 <p><a href="tel:+12079637927">(207) 963-7927</a></p> 101 </div> 102 </div> 103 <div class="email"> 104 <span><i class="fa fa-envelope"></i> <a href="/contact-us/">[email protected]</a></span> 105 </div> 106 <div class="header-user"> 107 <span class="header-user-logged-out"> 108 <div class="header-user-login"> 109 <div class="login-link"> 110 <a href="/user/login/" rel="nofollow">Log In</a> 111 </div> 112 </div> 113 <div class="header-user-register"> 114 <div class="register-link"> 115 <span>or</span> 116 <a href="/user/register/" rel="nofollow">Sign Up</a> 117 </div> 118 </div> 119 </span> 120 <span class="header-user-logged-in"> 121 <a href="/user/">ACCOUNT</a> 122 </span> 123 </div> 124</div></div><div id="menuwidget-154472" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Header Navigation</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-154472"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-129720"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-129720" class="dropdown-toggle" role="menuitem">Search<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-129720" role="menu"><li role="presentation" class=" menu-item-129720-clone"><a href="/listings/" target="_self" role="menuitem">Search</a></li><li role="presentation" class=" menu-item-129721"><a href="/listings/?status=Closed" target="_self" role="menuitem">Sold Search</a></li><li role="presentation" class=" menu-item-134446"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li></ul></li><li role="presentation" class="has-children menu-item-129674"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-129674" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-129674" role="menu"><li role="presentation" class=" menu-item-129889"><a href="/by-location/bangor/" target="_self" role="menuitem">Bangor</a></li><li role="presentation" class=" menu-item-134722"><a href="/by-location/near-belfast/" target="_self" role="menuitem">Belfast</a></li><li role="presentation" class=" menu-item-129890"><a href="/by-location/near-brunswick/" target="_self" role="menuitem">Brunswick</a></li><li role="presentation" class=" menu-item-134725"><a href="/by-location/near-dover-foxcroft/" target="_self" role="menuitem">Dover-Foxcroft</a></li><li role="presentation" class=" menu-item-129891"><a href="/by-location/near-ellsworth/" target="_self" role="menuitem">Ellsworth</a></li><li role="presentation" class=" menu-item-134723"><a href="/by-location/near-moosehead-lake-region/" target="_self" role="menuitem">Greenville</a></li><li role="presentation" class=" menu-item-134724"><a href="/by-location/near-lincoln/" target="_self" role="menuitem">Lincoln</a></li><li role="presentation" class=" menu-item-129892"><a href="/by-location/near-south-china/" target="_self" role="menuitem">South China</a></li><li role="presentation" class=" menu-item-129893"><a href="/by-location/near-winter-harbor/" target="_self" role="menuitem">Winter Harbor</a></li></ul></li><li role="presentation" class=" menu-item-131753"><a href="/home/relocation-services/" target="_self" role="menuitem">Relocation</a></li><li role="presentation" class="has-children menu-item-135105"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu
124-135105" class="dropdown-toggle" role="menuitem">Buy<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-135105" role="menu"><li role="presentation" class=" menu-item-129879"><a href="/buyers/" target="_self" role="menuitem">Buying with ROM</a></li><li role="presentation" class=" menu-item-129881"><a href="/by-type/commercial/" target="_self" role="menuitem">Commercial</a></li><li role="presentation" class=" menu-item-129882"><a href="/by-type/log-homes/" target="_self" role="menuitem">Luxury Log Homes</a></li><li role="presentation" class=" menu-item-129883"><a href="/bangor/vacation-homes/" target="_self" role="menuitem">Vacation Properties</a></li><li role="presentation" class=" menu-item-139675"><a href="/about-realty-of-maine/wire-fraud-awareness/" target="_self" role="menuitem">Wire Fraud Awareness</a></li></ul></li><li role="presentation" class="has-children menu-item-135106"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-135106" class="dropdown-toggle" role="menuitem">Sell<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-135106" role="menu"><li role="presentation" class=" menu-item-129885"><a href="/sellers/" target="_self" role="menuitem">Selling with ROM</a></li><li role="presentation" class=" menu-item-129886"><a href="/sellers/preparing-to-sell/" target="_self" role="menuitem">Selling Process</a></li><li role="presentation" class=" menu-item-129887"><a href="/realestate/market-report/" target="_self" role="menuitem">Current Market Report</a></li><li role="presentation" class=" menu-item-129888"><a href="/home-worth/" target="_self" role="menuitem">What's My Home Worth</a></li><li role="presentation" class=" menu-item-139362"><a href="/about-realty-of-maine/wire-fraud-awareness/" target="_self" role="menuitem">Wire Fraud Awareness</a></li></ul></li><li role="presentation" class="has-children menu-item-135107"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-135107" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-135107" role="menu"><li role="presentation" class=" menu-item-147533"><a href="/rss-feed/" target="_self" role="menuitem">Blog</a></li><li role="presentation" class=" menu-item-129894"><a href="/realestate/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-129896"><a href="/realty-of-maine-cares/" target="_self" role="menuitem">ROM Cares</a></li><li role="presentation" class=" menu-item-129897"><a href="/about-realty-of-maine/" target="_self" role="menuitem">ROM History</a></li><li role="presentation" class=" menu-item-163336"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li><li role="presentation" class=" menu-item-129901"><a href="/careers-with-realty-of-maine/" target="_self" role="menuitem">Join ROM Team</a></li><li role="presentation" class=" menu-item-167901"><a href="https://wefacethefight.org/" target="_blank" rel="noopener" role="menuitem">Support Veterans in Crisis</a></li></ul></li><li role="presentation" class=" menu-item-129679"><a href="/contact/#group4" target="_self" role="menuitem">Contact</a></li><li role="presentation" class=" menu-item-163337"><a href="/careers-with-realty-of-maine/" target="_self" role="menuitem">Careers</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-154472" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-154472"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-129720"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-129720" class="dropdown-toggle" role="menuitem">Search<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-129720" role="menu"><li role="presentation" class=" menu-item-129720-clone"><a href="/listings/" target="_self" role="menuitem">Search</a></li><li role="presentation" class=" menu-item-129721"><a href="/listings/?status=Closed" target="_self" role="menuitem">Sold Search</a></li><li role="presentation" class=" menu-item-134446"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li></ul></li>
124<li role="presentation" class="has-children menu-item-129674"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-129674" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-129674" role="menu"><li role="presentation" class=" menu-item-129889"><a href="/by-location/bangor/" target="_self" role="menuitem">Bangor</a></li><li role="presentation" class=" menu-item-134722"><a href="/by-location/near-belfast/" target="_self" role="menuitem">Belfast</a></li><li role="presentation" class=" menu-item-129890"><a href="/by-location/near-brunswick/" target="_self" role="menuitem">Brunswick</a></li><li role="presentation" class=" menu-item-134725"><a href="/by-location/near-dover-foxcroft/" target="_self" role="menuitem">Dover-Foxcroft</a></li><li role="presentation" class=" menu-item-129891"><a href="/by-location/near-ellsworth/" target="_self" role="menuitem">Ellsworth</a></li><li role="presentation" class=" menu-item-134723"><a href="/by-location/near-moosehead-lake-region/" target="_self" role="menuitem">Greenville</a></li><li role="presentation" class=" menu-item-134724"><a href="/by-location/near-lincoln/" target="_self" role="menuitem">Lincoln</a></li><li role="presentation" class=" menu-item-129892"><a href="/by-location/near-south-china/" target="_self" role="menuitem">South China</a></li><li role="presentation" class=" menu-item-129893"><a href="/by-location/near-winter-harbor/" target="_self" role="menuitem">Winter Harbor</a></li></ul></li><li role="presentation" class=" menu-item-131753"><a href="/home/relocation-services/" target="_self" role="menuitem">Relocation</a></li><li role="presentation" class="has-children menu-item-135105"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-135105" class="dropdown-toggle" role="menuitem">Buy<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-135105" role="menu"><li role="presentation" class=" menu-item-129879"><a href="/buyers/" target="_self" role="menuitem">Buying with ROM</a></li><li role="presentation" class=" menu-item-129881"><a href="/by-type/commercial/" target="_self" role="menuitem">Commercial</a></li><li role="presentation" class=" menu-item-129882"><a href="/by-type/log-homes/" target="_self" role="menuitem">Luxury Log Homes</a></li><li role="presentation" class=" menu-item-129883"><a href="/bangor/vacation-homes/" target="_self" role="menuitem">Vacation Properties</a></li><li role="presentation" class=" menu-item-139675"><a href="/about-realty-of-maine/wire-fraud-awareness/" target="_self" role="menuitem">Wire Fraud Awareness</a></li></ul></li><li role="presentation" class="has-children menu-item-135106"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-135106" class="dropdown-toggle" role="menuitem">Sell<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-135106" role="menu"><li role="presentation" class=" menu-item-129885"><a href="/sellers/" target="_self" role="menuitem">Selling with ROM</a></li><li role="presentation" class=" menu-item-129886"><a href="/sellers/preparing-to-sell/" target="_self" role="menuitem">Selling Process</a></li><li role="presentation" class=" menu-item-129887"><a href="/realestate/market-report/" target="_self" role="menuitem">Current Market Report</a></li><li role="presentation" class=" menu-item-129888"><a href="/home-worth/" target="_self" role="menuitem">What's My Home Worth</a></li><li role="presentation" class=" menu-item-139362"><a href="/about-realty-of-maine/wire-fraud-awareness/" target="_self" role="menuitem">Wire Fraud Awareness</a></li></ul></li><li role="presentation" class="has-children menu-item-135107"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-135107" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-135107" role="menu"><li role="presentation" class=" menu-item-147533"><a href="/rss-feed/" target="_self" role="menuitem">Blog</a></li><li role="presentation" class=" menu-item-129894"><a href="/realestate/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-129896"><a href="/realty-of-maine-cares/" target="_self" role="menuitem">ROM Cares</a></li><li role="presentation" class=" menu-item-129897"><a href="/about-realty-of-maine/" target="_self" role="menuitem">ROM History</a></li><li role="presentation" class=" menu-item-163336"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li><li role="presentation" class=" menu-item-129901"><a href="/careers-with-realty-of-maine/" target="_self" role="menuitem">Join ROM Team</a></li><li role="presentation" class=" menu-item-167901"><a href="https://wefacethefight.org/" target="_blank" rel="noopener" role="menuitem">Support Veterans in Crisis</a></li></ul></li>
124<li role="presentation" class=" menu-item-129679"><a href="/contact/#group4" target="_self" role="menuitem">Contact</a></li><li role="presentation" class=" menu-item-163337"><a href="/careers-with-realty-of-maine/" target="_self" role="menuitem">Careers</a></li></ul><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div></div> 125</header> 126<div class="topWrap"> 127 <div id="top"><div id="autosuggestionsearch-159646" class="widget autosuggestionsearch container"><div class="autosuggest widget-autosuggest"><div class="widget-inner"><form action="/listings/" method="get"><div class="autosuggest-title" id="autosuggest-title"><h3 class="widget-title">It's Time To Move!</h3></div><div class="autosuggest-searchbar"><input type="search" placeholder="City, Address, Zip, Neighborhood, MLS Number, High School..." aria-label=" Search: City, Address, Zip, Neighborhood, MLS Number, High School... Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu. " autocomplete="off" name="autosuggest-search-query" id="autosuggest-search-query-159646" maxlength="200" class="search-input form-control"/><div class="buttons"><div class="autosuggest-loader"></div><button class="usm-btn btn-search" id="autosuggest-search-button" role="button" aria-label="Search"><span>Search</span><i class="fa fa-search"></i></button></div></div><div class="autosuggest-links"><div class="col-links"><a href="/realestate/mlssearch/" class="usm-btn btn-link advanced-search" id="autosuggest-advanced-search">Advanced Search</a></div></div></form></div></div></div><div id="slideshow-156253" class="widget slideshow container"><div class="slideshow-wrapper" id="carousel-156253"><div class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt="Rocky Shore on Maine Coast" src="https://d3w216np43fnr4.cloudfront.net/8625/156253/1-original.jpg?version=1611933484" srcset="https://d3w216np43fnr4.cloudfront.net/8625/156253/1-original.jpg?version=1611933484 1920w,https://d3w216np43fnr4.cloudfront.net/1170x1170/8625/156253/1.jpg?version=1611933489 1170w,https://d3w216np43fnr4.cloudfront.net/970x970/8625/156253/1.jpg?version=1611933493 970w,https://d3w216np43fnr4.cloudfront.net/750x750/8625/156253/1.jpg?version=1611933498 750w,https://d3w216np43fnr4.cloudfront.net/320x320/8625/156253/1.jpg?version=1611933501 320w"/></div></div></div></div></div></div> 128</div> 129<div class="sub1Wrap"> 130 <div id="group1"></div> 131</div> 132<div class="sub2Wrap"> 133 <div id="group2"></div> 134</div> 135<section id="wrapper"> 136 <div class="content-row"> 137 <div class="contentWrap"> 138 <main> 139 140<section class="register-wrap"> 141 <div class="register-header"> 142 <div class="register-header-left"> 143 <h1>Register With Us</h1> 144 </div> 145 <div class="register-header-right"> 146 <div class="register-info-items"> 147 <div class="register-info-item"> 148 <span class="info-icon"> 149 <i class="fa fa-home"></i> 150 <i class="fa fa-check"></i> 151 </span> 152 <span class="info-text"> 153 Get Tailored <br> 154 Listing Updates 155 </span> 156 </div> 157 <div class="register-info-item"> 158 <span class="info-icon"> 159 <i class="fa fa-heart"></i> 160 <i class="fa fa-check"></i> 161 </span>
162 <span class="info-text"> 163 Save Your <br> 164 Favorite Listings 165 </span> 166 </div> 167 <div class="register-info-item"> 168 <span class="info-icon"> 169 <i class="fa fa-sliders"></i> 170 <i class="fa fa-check"></i> 171 </span> 172 <span class="info-text"> 173 Save Your <br> 174 Search Criteria 175 </span> 176 </div> 177 <div class="register-info-item"> 178 <span class="info-icon"> 179 <i class="fa fa-bar-chart"></i> 180 <i class="fa fa-check"></i> 181 </span> 182 <span class="info-text"> 183 Local Insights <br> 184 & More 185 </span> 186 </div> 187 </div> 188 </div> 189 </div> 190 <div class="register-left-wrap"> 191 <div class="register-group"> 192 <div id="register-cta"> 193 194 Save time! Join now by creating a FREE account to save your favorite listings, create custom searches, and get tailored listing notifications. Found your dream home? Opt out of notifications at any time. 195 196 </div> 197 </div> 198 199 200 <div class="social-opt-in-scope" data-opt-in-mode="required"> 201 <div class="register-group"> 202 <div class="social-opt-in-consent form-group" style="display:none;"> 203 <div class="checkbox form-group"> 204 <label> 205 <input type="checkbox" class="social-opt-in-checkbox" id="SocialOptIn"> 206 I agree to receive marketing and customer service calls and text messages from Realty of Maine. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>. 207 </label> 208 </div> 209 <p class="help-block social-opt-in-hint">Check the box above to continue.</p> 210 <div class="alert alert-danger social-opt-in-alert" style="display:none;">Please subscribe to create an account.</div> 211 </div> 212 </div> 213 <div class="register-group"> 214 <div class="google-login social-login-gated" data-provider="google"> 215 216 <style type="text/css"> 217 .google-auth { 218 margin-bottom: 15px; 219 } 220 .google-auth iframe, 221 .google-auth div div div { 222 margin: 0 auto !important; 223 } 224 .question-merge-google-account { 225 text-align: center; 226 } 227 .question-merge-google-account .alert-title { 228 margin-bottom: 15px; 229 } 230 .question-merge-google-account form { 231 display: inline-block; 232 margin-right: 15px; 233 } 234 </style> 235
235<script src="https://accounts.google.com/gsi/client" async defer></script>
235 236
236<script type="text/javascript"> 237 require(["jquery", "usm", "usm.modalform"], function ($, usm) { 238 // Dynamic protocol instead of hardcoded https: - the button only renders 239 // when SSL is on in production, but hardcoding https would break plain-http 240 // local/dev domains. 241 var loginUri = window.location.protocol + "//realtyofmaine.com/user/register/"; 242 243 function submitCredentialForm(credential) { 244 var $form = $("<form>", {method: "POST", action: loginUri}) 245 .append($("<input>", {type: "hidden", name: "credential", value: credential})); 246 $("body").append($form); 247 $form.trigger("submit"); 248 } 249 250 function handleCredentialResponse(response) { 251 var $button = $("#googleAuth8604"); 252 var $loginPopup = $button.closest(".login-popup"); 253 254 if (!$loginPopup.length) { 255 submitCredentialForm(response.credential); 256 return; 257 } 258 259 $.ajax({ 260 type: "POST", 261 url: loginUri, 262 data: {credential: response.credential}, 263 dataType: "json" 264 }).done(function (data) { 265 if (data && data.action === "html") { 266 usm.modalForm.showSocialOptIn($loginPopup, data.html); 267 } else if (data && data.action === "redirect") { 268 submitCredentialForm(response.credential); 269 } else { 270 usm.modalForm.revealSuccess($loginPopup); 271 } 272 }).fail(function (xhr) { 273 usm.modalForm.showSocialError($loginPopup, xhr); 274 }); 275 } 276 277 function googleAuthInit() { 278 google.accounts.id.initialize({ 279 client_id: "48717643037-nj7p1pq7kpl1dprvuj2lvnh6h782ovau.apps.googleusercontent.com", 280 context: "signup", 281 callback: handleCredentialResponse 282 }); 283 google.accounts.id.prompt(); 284 google.accounts.id.renderButton(document.getElementById("googleAuth8604"), { 285 type: "standard", 286 shape: "pill", 287 theme: "outline", 288 text: "signup_with", 289 size: "large", 290 locale: "en-US", 291 logo_alignment: "left", 292 width: 288 293 }); 294 } 295 296 // onGoogleLibraryLoad only fires once per page; if GSI already loaded 297 // (e.g. the modal opened after a full page load), assigning it here 298 // would never fire, so init directly instead. 299 if (window.google && window.google.accounts && window.google.accounts.id) { 300 googleAuthInit(); 301 } else { 302 window.onGoogleLibraryLoad = googleAuthInit; 303 } 304 }); 305 </script>
305 306 <div class="google-wrapper"><div class="button-wrapper"><div id="googleAuth8604" class="google-auth"></div></div></div> 307 </div> 308 </div> 309 <div class="register-group"> 310 <div class="facebook-login social-login-gated" data-provider="facebook"> 311
311<script type="text/javascript">require(["jquery", "jqueryui", "usm", "usm.modalform"], function ($, jqueryui, usm) { 312 var appId = 372025886539584; 313 /* Init FB */ 314 window.fbAsyncInit = function() { 315 FB.init({ 316 appId : appId, 317 cookie : true, // enable cookies to allow the server to access the session 318 xfbml : true, // parse social plugins on this page 319 version : "v2.5" // use graph api version 2.5 320 }); 321 }; 322 323 // Load the SDK asynchronously 324 (function(d, s, id) { 325 var js, fjs = d.getElementsByTagName(s)[0]; 326 if (d.getElementById(id)) return; 327 js = d.createElement(s); js.id = id; 328 js.src = "//connect.facebook.net/en_US/sdk.js"; 329 fjs.parentNode.insertBefore(js, fjs); 330 }(document, "script", "facebook-jssdk")); 331 332 $(".facebook-action").on("click", function (e) { 333 var $this = $(this); 334 335 /* Find closest facebook form to submit. */ 336 var $fbForm = $this.closest(".facebook-wrapper").find(".facebook-form"); 337 338 FB.login(function (response) { 339 FB.getLoginStatus(function (response) { 340 statusChangeCallback(response, $fbForm); 341 }); 342 }, {scope: "public_profile,email"}); 343 }); 344 345 function statusChangeCallback(response, facebookForm) { 346 if (response.status === "connected") { 347 var $loginPopup = facebookForm.closest(".login-popup"); 348 349 if ($loginPopup.length) { 350 facebookForm.ajaxSubmit({ 351 dataType: "json", 352 success: function (data) { 353 if (data && data.action === "html") { 354 usm.modalForm.showSocialOptIn($loginPopup, data.html); 355 } else if (data && data.action === "redirect") { 356 facebookForm.get(0).submit(); 357 } else { 358 usm.modalForm.revealSuccess($loginPopup); 359 } 360 }, 361 error: function (xhr) { 362 usm.modalForm.showSocialError($loginPopup, xhr); 363 } 364 }); 365 } else { 366 facebookForm.submit(); 367 } 368 } else { 369 $(".facebook-info").html("Something went wrong. Please try again."); 370 } 371 } 372 }); 373 </script>
373<div class="facebook-wrapper"><div class="button-wrapper"><div><a class="btn btn-block btn-social btn-facebook facebook-action"><span class="social-icon"><i class="fa fa-facebook-official"></i></span><span class="button-text">Sign In with Facebook</span><i class="fa fa-angle-right"></i></a></div><br/><div class="or-text"><p>Or Sign Up with your info below</p></div></div><div class="fields-wrapper" style="display: none"><form method="post" action="/user/register/" class="facebook-form social-login-form"><input name="SocialLogin" id="SocialLogin" value="Facebook" type="hidden" class="form-control"/><div class="form-group"><label for="Email">Email Address</label><input name="Email" id="Email" type="email" class="form-control"/></div><div class="form-group"><label for="FirstName">First Name</label><input name="FirstName" id="FirstName" type="text" class="form-control"/></div><div class="form-group"><label for="LastName">Last Name</label><input name="LastName" id="LastName" type="text" class="form-control"/></div><input type="submit" name="Submit" id="Submit" value="Submit" class="submit"/></form></div><div class="facebook-info"></div></div> 374 </div> 375 </div> 376 <div class="register-group"> 377 <div class="social-opt-in-back-wrapper form-group" style="display:none;"> 378 <button type="button" class="btn btn-link social-opt-in-back"><i class="fa fa-angle-left" aria-hidden="true"></i> Back</button> 379 </div> 380 </div> 381 </div> 382 <div class="register-group"> 383 <form method="post" action="/user/register/" id="register-form" class="bootstrap-validate"> 384 385 <input type="hidden" name="g-recaptcha-response" class="g-recaptcha-response" value="initalize" /> 386 <input type="hidden" name="RedirectURL" value="/registered/" /> 387 <input type="hidden" name="FormKey" value="a9cc64cc2d774b8f3aee3f020257c118" /> 388 <input type="hidden" name="Sent_Form" id="Sent_Form" value="Registration"> 389 <input type="hidden" name="RefURL" value="https://realtyofmaine.com/user/register/" /> 390 <input type="hidden" name="Sent From" value="" /> 391 <input type="hidden" name="mailformid" value="registration_form" /> 392 <div class="fields-section"> 393 <div class="user-edit-form"> 394 <div class="user-primary-group"> 395 <div class="form-group email-group"> 396 <label for="Email">Email Address<span class="required">*</span></label> 397 <input type="text" name="Email" value="" class="email required form-control" /> 398 </div> 399 <div class="form-group alt-email-group"> 400 <label for="Email2">Alternate Email Address</label> 401 <input type="text" name="Email2" value="" class="email form-control" /> 402 </div> 403 404 <div class="form-group first-name-group"> 405 <label for="FirstName">First Name <span class="required">*</span></label> 406 <input type="text" name="FirstName" value="" id="FirstName" class="required form-control" /> 407 </div> 408 409 <div class="form-group last-name-group"> 410 <label for="FirstName">Last Name <span class="required">*</span></label> 411 <input type="text" name="LastName" value="" id="LastName" class="required form-control" /> 412 </div> 413 414 <div class="form-group password-group"> 415 <label for="Password">Password <span class="required">*</span></label> 416 <input type="password" name="Password" id="Password" class="form-control new-password required"/> 417 </div> 418 <div class="form-group confirm-password-group"> 419 <label for="VerifyPassword">Confirm Password <span class="required">*</span></label> 420 <input type="password" name="VerifyPassword" class="form-control verify-password required" equalto="#Password"/> 421 </div> 422 </div> 423 424 <div class="user-secondary-group"> 425 426 <div class="form-group phone-group home-phone-group"> 427 <label for="Phone">Home Phone</label> 428 429 430 <input type="text" name="HomePhone" value="" class="form-control phone"/> 431 432 </div> 433 <div class="form-group phone-group work-phone-group"> 434 <label for="WorkPhone">Work Phone</label> 435 <input type="text" size="20" name="WorkPhone" value="" class="form-control phone"/> 436 </div> 437 <div class="form-group phone-group cell-phone-group"> 438 <label for="CellPhone">Cell Phone</label> 439 <input type="text" size="20" name="CellPhone" value="" class="form-control phone"/> 440 </div> 441 442 443 444 445 446 <div class="form-group address-group"> 447 <label for="Street1">Address</label> 448 <input type="text" name="Street1" value="" class="form-control"/> 449 </div> 450 451 <div class="form-group address2-group"> 452 <label for="Street2">Address 2</label> 453 <input type="text" name="Street2" value="" class="form-control"/> 454 </div> 455 456 <div class="form-group city-group"> 457 <label for="City">City</label> 458 <input type="text" name="City" value="" class="form-control"/> 459 </div> 460 461 <div class="form-group state-group"> 462 <label for="State">State</label> 463 <input type="text" name="State" value="" class="form-control"/> 464 </div> 465 466 <div class="form-group zip-group"> 467 <label for="Zip">Zip</label>
468 <input type="text" name="Zip" value="" class="digits form-control"/> 469 </div> 470 471 472 473 474 <div class="form-group buy-or-sell"> 475 476 <label>I am looking to <span class="required">*</span></label> 477 478 <div class="checkbox"> 479 <label> 480 <input type="checkbox" name="BuyOrSell[]" value="Buy" class="required" /> 481 <span><i class="fa fa-check" aria-hidden="true"></i></span> 482 Buy 483 </label> 484 </div> 485 486 <div class="checkbox"> 487 <label> 488 <input type="checkbox" name="BuyOrSell[]" value="Sell" class="required" /> 489 <span><i class="fa fa-check" aria-hidden="true"></i></span> 490 Sell 491 </label> 492 </div> 493 494 <div class="checkbox"> 495 <label> 496 <input type="checkbox" name="BuyOrSell[]" value="Relocate" class="required" /> 497 <span><i class="fa fa-check" aria-hidden="true"></i></span> 498 Relocate 499 </label> 500 </div> 501 502 <div class="checkbox"> 503 <label> 504 <input type="checkbox" name="BuyOrSell[]" value="Rent" class="required" /> 505 <span><i class="fa fa-check" aria-hidden="true"></i></span> 506 Rent 507 </label> 508 </div> 509 510 511 </div> 512 513 514 515 516 <div class="form-group rent-or-own-group"> 517 518 519 <label>Currently I</label> 520 521 <div class="radio"> 522 <label> 523 <input type="radio" name="RentOrOwn" value="Rent" class="" /> 524 <span><i class="fa fa-check-circle" aria-hidden="true"></i></span> 525 Rent 526 </label> 527 </div> 528 529 <div class="radio"> 530 <label> 531 <input type="radio" name="RentOrOwn" value="Own" class="" /> 532 <span><i class="fa fa-check-circle" aria-hidden="true"></i></span> 533 Own 534 </label> 535 </div> 536 537 </div> 538 539 540 <div class="form-group realtors"> 541 542 </div> 543 </div> 544 </div> 545 546 547 548 549 <div style="display:none;">Do not fill in this field: <input type="text" name="topyenoh" /></div> 550 551 552 <div class="form-group opt-in-group"> 553 <input type="checkbox" name="OptIn" id="OptIn" class="opt-in required" required> 554 <label for="OptIn">Opt in</label> 555 <p>I agree to receive marketing and customer service calls and text messages from Realty of Maine. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p> 556 </div> 557 558 559 </div> 560 <div class="submit-section"> 561 <div class="form-group register-submit-group"> 562 <button name="send" id="user-registration" type="submit" class="btn usm-btn btn-default submit" tabindex="10" value="Sign Up"><i class="fa fa-user"></i> Sign Up <i class="fa fa-angle-right"></i></button> 563 </div> 564 <div class="register-group existing-account-group"> 565 <p>Already have an account? <a href="/user/login/?RedirectURL=" class="text-center login-link">Log In!</a></p> 566 </div> 567 <div class="recaptcha-notice">
567This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.</div> 568 </div> 569 </form> 570 </div> 571 </div> 572</section>
573<script type="text/javascript"> 574 require(["jquery", "shipyard", "usm", "usm.analytics"], function($, shipyard, usm) { 575 var options = { 576 successCallback: function () { 577 usm.analytics.pageView('/complete/registered/new-customer/'); 578 } 579 }; 580 shipyard.validateForm($('.bootstrap-validate'), options); 581 shipyard.gateSocialSignup($(document)); 582 583 }); 584</script>
584 585 586</main> 587 <aside id="sidebar1"><div id="widget-ask-165127" class="widget askaquestion niceform container"><div class="widget-inner"><h3 class="widget-title">Contact Us</h3><div class="error-message-container"></div><form method="POST" action="/mail/send/sidebar_ask_a_question/" id="aaq-165127" data-pageview="/complete/ask-a-question/"><div><h4></h4><div class="contact-info"></div></div><div class="form-group form-group-name"><label class="sr-only" for="ask-165127-name">Full Name</label><input type="text" name="Name" class="required form-control" placeholder="*Full Name" id="ask-165127-name" required="required"/></div><div class="form-group form-group-email"><label class="sr-only" for="ask-165127-email">Email</label><input type="text" name="Email" class="required form-control email" placeholder="*Email Address" id="ask-165127-email" required="required"/></div><div class="form-group form-group-phone"><label class="sr-only" for="ask-165127-phone">Phone</label><input type="text" name="Phone" class="form-control phone " placeholder="Phone" id="ask-165127-phone"/></div><div class="form-group form-group-comments"><label class="sr-only" for="ask-165127-question">Questions or Comments?</label><textarea name="Comments" id="ask-165127-question" class="form-control required" placeholder="*Questions or Comments" cols="12" rows="7"></textarea></div><div style="display:none;">Do not fill in this field:<input type="text" name="topyenoh" id="topyenoh"/></div><input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="initalize" class="g-recaptcha-response"/><input type="hidden" name="FormKey" id="FormKey" value="a9cc64cc2d774b8f3aee3f020257c118"/><input type="hidden" name="Sent From" id="Sent From" value="https://realtyofmaine.com/user/register/"/><input type="hidden" name="mailformid" id="mailformid" value="sidebar_ask_a_question"/><input type="hidden" name="Sent_Form" id="Sent_Form" value="sidebar_ask_a_question"/><div class="form-group opt-in-block"><label class="show"><input type="checkbox" name="OptIn" value="1" class="required" required="required"/><span class="control-label">Opt in</span></label><p>I agree to receive marketing and customer service calls and text messages from Realty of Maine. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p></div><div class="submit-btn"><button type="submit" name="send" class="usm-btn">Send</button></div><div class="recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.</div></form></div></div></aside> 588 </div> 589 </div> 590</section> 591<div class="sub3Wrap"> 592 <div id="group3"></div> 593</div> 594<div class="sub4Wrap"> 595 <div id="group4"></div> 596</div> 597<div class="footWrap"> 598 <div id="footer"></div> 599</div> 600<footer class="usmWrap"> 601 <div id="group5"><div id="codewidget-154655" class="widget code codewidget container"><div class = "widget-inner"> 602<span></span> 603<span></span> 604<span></span> 605<span></span> 606</div></div><div id="codewidget-154656" class="widget code codewidget container"><div class="widget-inner"> 607 <img src = "https://s3.amazonaws.com/files.usmre.com/8625/hor-dark-logo.png" alt = "Walkable Suburb Real Estate Logo"> 608<a href = "https://www.leadingre.com/"> 609<img src = "https://s3.amazonaws.com/files.usmre.com/8625/Tagline.png" alt = "Leading RE Logos" class = "lazyload" /></a> 610<a href="http://realtyofmainenew.clone.unionstmedia.com/realty-of-maine-cares/"><img src = "https://s3.amazonaws.com/files.usmre.com/8625/ROM%20Cares.png" alt = "Realty of Maine Cares Logo" class = "cares-logo lazyload" /></a> 611</div></div><div id="codewidget-154657" class="widget code codewidget container"><!-- <div class = "widget-inner"> 612 <a href = "tel:207-942-6310">207-942-6310 </a> 613 <a href = "/contact-us/"> [email protected] </a> 614</div> 615--></div><div class = "mid-footer-container"> 616 <div class="office-wrapper"> 617 <div class="inner"> 618 <div class="office office1 bangor"> 619 <h4>Bangor Office</h4> 620 <a href="https://www.google.com/maps/place/458+Main+St,+Bangor,+ME+04401,+USA/@44.7906285,-68.7786601,17z/data=!3m1!4b1!4m5!3m4!1s0x4cae4b66716dadd1:0x1ec9532ef118daf!8m2!3d44.7906285!4d-68.7764714" target="_blank"><p class="address"><span>458 Main Street </span>Bangor, ME 04401</p></a> 621 <p class="phone">P: <a href="tel:+12079426310">1-207-942-6310</a></p> 622 <p class="phone">T: <a href="tel:+18006392162">1-800-639-2162</a></p> 623 <p class="fax">F: 207-942-8099</p> 624 <p class="email"><a href="/contact-us/">[email protected]</a></p> 625 </div> 626 <div class="office office2 belfast"> 627 <h4>Belfast</h4> 628 <a href="https://www.google.com/maps/place/107+Main+St,+Belfast,+ME+04915,+USA/@44.4258429,-69.0095178,17z/data=!3m1!4b1!4m5!3m4!1s0x4cae6e5b1c05839b:0x98791d541323c11c!8m2!3d44.4258429!4d-69.0073291" target="_blank"><p class="address"><span>107 Main Street</span>Belfast, ME 04915</p></a> 629 <p class="phone">P: <a href="tel:+12073386800">1-207-338-6800</a></p> 630 <p class="phone">T: <a href="tel:+18006392162">1-800-639-2162</a></p> 631 <p class="fax">F: 207-338-3060</p> 632 <p class="email"><a href="/contact-us/">[email protected]</a></p> 633 </div> 634 <!--div class="office office3 brunswick"> 635 <h4>Brunswick</h4> 636 <a href="https://www.google.com/maps/place/155+Bath+Rd,+Brunswick,+ME+04011,+USA/@43.9073299,-69.9222848,17z/data=!3m1!4b1!4m5!3m4!1s0x4cad86efb81274f1:0xcc83a417bd17e655!8m2!3d43.9073299!4d-69.9200961" target="_blank"><p class="address"><span>155 Bath Rd</span>Brunswick, ME 04011</p></a> 637 <p class="phone">P: <a href="tel:+12079426310">1-207-942-6310</a></p> 638 <p class="email"><a href="/contact-us/">[email protected]</a></p> 639 </div>--> 640 <div class="office office4 dover-foxcroft"> 641 <h4>Dover Foxcroft</h4> 642 <a href="https://www.google.com/maps/place/64+E+Main+St+Suite+G,+Dover-Foxcroft,+ME+04426,+USA/@45.1837281,-69.2305715,17z/data=!3m1!4b1!4m5!3m4!1s0x4cb022ef81055b03:0xc551585df96992a2!8m2!3d45.1837281!4d-69.2283828" target="_blank"><p class="address"><span>
64264 E Main St Suite G</span>Dover Foxcroft, ME 04426</p></a> 643 <p class="phone">P: <a href="tel:+12073386800">1-207-942-6310</a></p> 644 <p class="fax">F: 207-942-8099</p> 645 <p class="email"><a href="/contact-us/">[email protected]</a></p> 646 </div> 647 <div class="office office5 ellsworth"> 648 <h4>Ellsworth</h4> 649 <a href="https://www.google.com/maps/place/185+State+St,+Ellsworth,+ME+04605,+USA/@44.5495886,-68.428522,17z/data=!4m5!3m4!1s0x4caef1ac59b1815f:0xb6d1ebaf6b6b9de4!8m2!3d44.5495886!4d-68.4263333" target="_blank"><p class="address"><span>185 State Street</span>Ellsworth, ME 04605</p></a> 650 <p class="phone">P: <a href="tel:+12076672300">1-207-667-2300</a></p> 651 <p class="phone">T: <a href="tel:+18006392162">1-800-639-2162</a></p> 652 <p class="fax">F: 207-667-7544</p> 653 <p class="email"><a href="/contact-us/">[email protected]</a></p> 654 </div> 655 <div class="office office6 greenville"> 656 <h4>Greenville</h4> 657 <a href="https://www.google.com/maps/place/32+Pritham+Ave,+Greenville,+ME+04441,+USA/@45.4595737,-69.6099207,17z/data=!3m1!4b1!4m5!3m4!1s0x4cb07b3ff0d42119:0x462d62f03e3c2a05!8m2!3d45.4595737!4d-69.607732" target="_blank"><p class="address"><span>32 Pritham Ave</span>Greenville, ME 04441</p></a> 658 <p class="phone">P: <a href="tel:+12076956073">1-207-695-6073</a></p> 659 <p class="email"><a href="/contact-us/">[email protected]</a></p> 660 </div> 661 <!--div class="office office7 lincoln"> 662 <h4>Lincoln</h4> 663 <a href="https://www.google.com/maps/place/154+W+Broadway+%231,+Lincoln,+ME+04457,+USA/@45.3608389,-68.5218807,17z/data=!4m5!3m4!1s0x4caff5b822c8a879:0x31e50ed2ef44a56b!8m2!3d45.3608389!4d-68.519692" target="_blank"><p class="address"><span>154 West Broadway Suite 1</span>Lincoln, ME 04457</p></a> 664 <p class="phone">P: <a href="tel:+1207-942-6310">1-207-942-6310</a></p> 665 <p class="email"><a href="/contact-us/">[email protected]</a></p> 666 </div--> 667 <div class="office office8 south-china"> 668 <h4>South China</h4> 669 <a href="https://www.google.com/maps/place/177+ME-3,+South+China,+ME+04358,+USA/@44.4005429,-69.4786385,17z/data=!3m1!4b1!4m5!3m4!1s0x4cae069ae1ddcf53:0x9d054c0154d7ac62!8m2!3d44.4005429!4d-69.4764498" target="_blank"><p class="address"><span>177 US Route 3</span>South China, ME 04358</p></a> 670 <p class="phone">P: <a href="tel:+12074454027">1-207-445-4027</a></p> 671 <p class="phone">T: <a href="tel:+18006392162">1-800-639-2162</a></p> 672 <p class="fax">F: 207-445-3027</p> 673 <p class="email"><a href="/contact-us/">[email protected]</a></p> 674 </div> 675 676 <div class="office office9 winter-harbor"> 677 <h4> Realty of Maine Winter Harbor Office</h4> 678 <a href="https://www.google.com/maps/place/280+Main+St,+Winter+Harbor,+ME+04693,+EE.+UU./@44.3940898,-68.0885462,17z/data=!3m1!4b1!4m6!3m5!1s0x4caec7a4cf529e35:0x82568e3d945a6eca!8m2!3d44.3940898!4d-68.0859659!16s%2Fg%2F11c43thrld?entry=ttu&g_ep=EgoyMDI1MTIwMi4wIKXMDSoASAFQAw%3D%3D" target="_blank"><p class="address"><span>280 Main Street</span>Winter Harbor, ME 04693</p></a> 679 <p class="phone">P: <a href="tel:+12079637927">1-207-460-1458</a></p> 680 <p class="email"><a href="/contact-us/">[email protected]</a></p> 681 </div> 682 </div> 683 </div><div id="menuwidget-154665" class="widget menu menuwidget bare container"><h3 class="widget-title">Quick Links</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-129723"><a href="/listings/?map-view=1" target="_self" role="menuitem">Listing Search</a></li><li role="presentation" class=" menu-item-129725"><a href="/buyers/" target="_self" role="menuitem">Buy</a></li><li role="presentation" class=" menu-item-129726"><a href="/sellers/" target="_self" role="menuitem">Sell</a></li><li role="presentation" class=" menu-item-129728"><a href="/our-agents/" target="_self" role="menuitem">About Us</a></li></ul></div></div>
683<div id="codewidget-154664" class="widget code codewidget container"><h3 class="widget-title">Contact Us</h3> 684<div class="widget-inner"> 685 <ul> 686 <li><a href="/contact-us/" target="_self">Contact Us</a></li> 687 <li class="logged-out"><a href="/user/" target="_self">Log In</a></li> 688 <li class="logged-in"><a href="/user/" target="_self">Account</a></li> 689 </ul> 690</div></div><div id="sociallinks-154658" class="widget sociallinks socialinkswidget flat container"><ul class="fa-social-links sm30"><li><a target="_blank" title="Facebook" href="https://www.facebook.com/RealtyofMaine/" class="fa-social-links fsml-facebook" rel="noopener nofollow"><i class="fa fa-facebook"></i><span class="sr-only">Facebook</span></a></li><li><a target="_blank" title="Instagram" href="https://www.instagram.com/realtyofmaine/" class="fa-social-links fsml-instagram" rel="noopener nofollow"><i class="fa fa-instagram"></i><span class="sr-only">Instagram</span></a></li><li><a target="_blank" title="Twitter" href="https://twitter.com/RealtyofMaine/" class="fa-social-links fsml-twitter" rel="noopener nofollow"><i class="fa fa-twitter"></i><span class="sr-only">Twitter</span></a></li><li><a target="_blank" title="Linkedin" href="https://www.linkedin.com/company/622555/admin/" class="fa-social-links fsml-linkedin" rel="noopener nofollow"><i class="fa fa-linkedin"></i><span class="sr-only">Linkedin</span></a></li></ul></div><div id="codewidget-154666" class="widget code codewidget container"><div class = "widget-inner"> 691<a href = "/protected-agent-intranet/">Agent Sign In</a> 692</div></div></div> 693<div class = "privacy-container"> 694<p><p class="mreislogowrapper"><img alt="MREIS logo" id="mreislogo" src="https://s3.amazonaws.com/files.usmre.com/mreis-logo.jpg" style="width: 100px;" /></p> 695 696<p class="mreisdisclaimertext">Listing data is derived in whole or in part from the Maine IDX & is for consumers' personal, non commercial use only. Dimensions are approximate and not guaranteed. All data should be independently verified. ©2026 Maine Real Estate Information System, Inc. All Rights Reserved. <img alt="equal opportunity housing logo" src="https://s3.amazonaws.com/files.usmre.com/equal_housing.png" style="width: 24px; height: 20px;" /> <a href="/privacy-policy/" id="policylink">Privacy Policy</a><br /> 697<br /> 698Realty of Maine participates in ©2026 Maine Listings Internet Data Exchange program, allowing us to display other Maine IDX Participants' listings. This website does not display complete listings. Certain listings of other real estate brokerage firms have been excluded. Mortgage figures are estimates. Check with your bank or proposed mortgage company for actual interest rates. This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis.</p> 699</p> 700</div></div> <div class = "footer-sub"><div id="associations-154662" class="widget associations container"><div id="footer-logos" style="width: 100%"><div id="footer-logos-left-assoc"></div><div id="footer-logos-right-accred"></div><div id="footer-logos-right-custom"><img src="https://d3w216np43fnr4.cloudfront.net/8625/154662/1.png?version=1611171369" title="Association logos" alt="Association logos"/></div></div></div><div id="codewidget-154660" class="widget code codewidget container"><div class = "widget-inner"> 701<a href = "/privacy-policy/"> Privacy Policy </a> 702</div></div><div id="usmlogo-154661" class="widget usmlogo container"><a href="https://www.unionstreetmedia.com/?utm_campaign=passive&utm_medium=usm-badge&utm_source=www.realtyofmaine.com&utm_content=real-estate" rel="nofollow noopener" title="VT NH Real Estate Web Design" target="_blank"><img src="https://d3w216np43fnr4.cloudfront.net/8625/154661/1.webp?version=1760887186" alt="Union Street Media Logo"/></a></div></div></div> 703</footer><div id="progress"><i class="fa fa-spinner fa-spin"></i></div>
703<script type="text/javascript"> 704 require(["jquery"], function ($) { 705 var $navbarToggle = $("#menuwidget-154472 .navbar-toggle"); 706 707 $navbarToggle.click(function () { 708 var target = $(this).data("target"); 709 $(target).parent("nav").toggleClass("active"); 710 if ($(target).parent("nav").hasClass("active")) { 711 $("body").addClass("modal-open"); 712 } else { 713 $("body.modal-open").removeClass("modal-open"); 714 } 715 }); 716 717 $("#menuwidget-154472 .menu-close").click(function (e) { 718 $navbarToggle.click(); 719 e.preventDefault(); 720 }); 721 722 $("#menuwidget-154472 li.has-children ul li").click(function (event) { 723 event.stopPropagation(); 724 }); 725 }); 726 727 // Searchable suggestions with a label values for the suggestion. 728 var SEARCHABLE_SUGGESTIONS_OPTIONS = { 729 usmCityAndState: '', 730 county: ' - County', 731 stateOrProvince: '', 732 usmNeighborhood: ' - Neighborhood', 733 postalCode: ' - Zip Code', 734 listingId: ' - MLS Number', 735 usmNonMlsId: ' - Internal ID', 736 elementarySchool: ' - Elementary School', 737 middleOrJuniorSchool: ' - Middle Or Junior High School', 738 usmArea: ' - Area', 739 address: ' - Address', 740 highSchool: ' - High School', 741 highSchoolDistrict: ' - School District', 742 usmVillage: ' - Village', 743 usmSubdivision: ' - Subdivision', 744 streetName: ' - Street', 745 usmComplex: ' - Complex', 746 usmPropertyName: ' - Property Name', 747 mlsAreaMinor: ' - MLS Area Minor', 748 mlsAreaMajor: ' - MLS Area Major', 749 offMarketData: ' - Off Market', 750 title: 'title', 751 agent: ' - Agent', 752 team: ' - Team', 753 } 754 755 var displayWaterBodyNameSuggestions = ''; 756 var showAgentsSearch = '0'; 757 758 if (displayWaterBodyNameSuggestions) { 759 SEARCHABLE_SUGGESTIONS_OPTIONS.waterBodyName = ' - Water Body Name'; 760 } 761 762 var suggestionResponse = null; 763 require(['jquery'], function($) { 764 /** 765 * Get current search mode based on active button 766 */ 767 function getCurrentSearchMode() { 768 if (showAgentsSearch === '1' && $('#agents-159646').hasClass('active')) { 769 return 'agents'; 770 } else if ($('#rentals-property-types-159646').hasClass('active')) { 771 return 'rentals'; 772 } else { 773 return 'sales'; 774 } 775 } 776 777 /** 778 * Filter out not supported suggestions. 779 * 780 * @param suggestions 781 * @returns {[]} 782 */ 783 function sanitizeSuggestions(suggestions) { 784 const sanitizedSuggestions = []; 785 if (suggestions && Array.isArray(suggestions)) { 786 for (var suggestionIndex in suggestions) { 787 var suggestion = suggestions[suggestionIndex]; 788 789 var suggestionType = suggestion.type; 790 // Filter out suggestions that are not currently supported 791 if (!SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(suggestionType)) { 792 continue; 793 } 794 795 sanitizedSuggestions.push(suggestion); 796 } 797 return sanitizedSuggestions; 798 } 799 800 return []; 801 } 802 803 /** 804 * Transform agents API response to suggestions format 805 */ 806 function transformAgentsToSuggestions(responseData) { 807 if (!Array.isArray(responseData?.agents) || !Array.isArray(responseData?.teams)) { 808 return []; 809 } 810 const data = [ 811 ...responseData.agents.map(agent => ({ ...agent, type: 'agent' })), 812 ...responseData.teams.map(team => ({ ...team, type: 'team' })) 813 ]; 814 815 return data.map((item) => ({ 816 label: item.name, 817 value: item.name, 818 type: item.type, 819 id: item.id, 820 slug: item.slug, 821 })); 822 } 823 824 /** 825 * Check if the parameter looks like an address (starts with digits followed by words) 826 */ 827 function shouldReduceByAddress(value) { 828 var addressPattern = /^\d+\s+\w+/i; 829 return addressPattern.test(value.trim()); 830 } 831 832 function fetchSuggestions(request, response) { 833 var param = request.term; 834 var requestPrefix = ''; 835 var isOMPEnabled = requestPrefix === 'OMP:'; 836 var searchMode = getCurrentSearchMode(); 837 838 // Restrict search length to minimum 2 characters before sending the request. 839 if (param.length < 2) { 840 // We do not store and show recent searches if OMP is enabled or in agents mode 841 var isRecentSearchesDisabled = isOMPEnabled || searchMode === 'agents'; 842 var recentSearches = isRecentSearchesDisabled ? [] : JSON.parse(window.localStorage.getItem('lastSearches')); 843 844 if (recentSearches && recentSearches.length > 0) { 845 recentSearches.unshift({label: 'Recent Searches', value: 'Recent Searches', type: 'title'}) 846 response(recentSearches); 847 } else { 848 response([{label: 'The search word must be at least 3 characters long.', noResults: true}]); 849 } 850 } else { 851 // Different API endpoints based on search mode 852 var baseUrl = ''; 853 var requestData = {}; 854 855 if (searchMode === 'agents') { 856 baseUrl = '/api/suggestions/teams/'; 857 requestData = { 858 q: param, 859 }; 860 } else { 861 baseUrl = '/api/suggestions/'; 862 requestData = { 863 q: requestPrefix + param 864 }; 865 866 if (shouldReduceByAddress(param)) { 867 requestData.reduce = 'usmFullAddress'; 868 } 869 } 870 871 $.ajax({ 872 dataType: 'json', 873 url: baseUrl, 874 data: requestData, 875 type: 'GET', 876 timeout: 10000, 877 success: function(data) { 878 var suggestions = []; 879 880 if (searchMode === 'agents') { 881 // Transform agents response 882 suggestions = transformAgentsToSuggestions(data); 883 } else { 884 // Regular suggestions 885 if (data.suggestions && data.suggestions.length > 0) { 886 suggestions = sanitizeSuggestions(data.suggestions); 887 } 888 } 889 890 if (suggestions.length > 0) { 891 // Set the suggestion response to the first suggestion 892 suggestionResponse = suggestions[0]; 893 response(suggestions); 894 } else { 895 // No results from API 896 var noResultsMessage = searchMode === 'agents' ? 'No agents found.' : 'Enter another region.'; 897 response([{label: noResultsMessage, noResults: true}]); 898 } 899 }, 900 error: function() { 901 response([{label: 'Problem contacting server, please refresh and try again.', noResults: true}]); 902 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 903 $('.autosuggest-loader').addClass('fal fa-exclamation-triangle'); 904 } 905 }); 906 } 907 } 908 909 $('#autosuggest-search-query-159646').autocomplete({ 910 source: function(request, response) { 911 fetchSuggestions(request, response); 912 }, 913 minLength: 0, 914 open: function() {
915 inputWidth = $('#autosuggest-search-query-159646').outerWidth(); 916 $('ul.ui-menu').css( 'width', inputWidth ); 917 }, 918 search: function(event, ui) { 919 $('.autosuggest-loader').addClass('fal fa-spinner fa-pulse'); 920 }, 921 response: function(event, ui) { 922 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 923 }, 924 position: { 925 offset: '0 -6' 926 }, 927 autoFocus: true, 928 messages: { 929 //These messages are for accessability and are not visible in the UI (with proper styling). 930 noResults: 'No options found.', 931 results: function(amount) { 932 return amount + (amount > 1 ? ' results ' : ' result ') + 'found.' 933 } 934 }, 935 delay: 300 936 }).focus(function() { 937 $(this).autocomplete('search', $(this).val()); 938 }).data('ui-autocomplete')._renderItem = function(ul, item) { 939 let txt = String(item.label); 940 941 if (item.type) { 942 txt = txt.replace(new RegExp(this.term, 'gi'),'<b>$&</b>'); 943 } 944 945 var type = item.type; 946 947 if (SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(type)) { 948 type = SEARCHABLE_SUGGESTIONS_OPTIONS[type]; 949 950 if (type == 'listingId') { 951 txt = txt.toUpperCase(); 952 } 953 } else { 954 type = ''; 955 } 956 957 if (type === 'title') { 958 return $('<li></li>') 959 .append('<div class="item-title"><b>' + txt + '</b></div>') 960 .appendTo(ul); 961 } 962 963 var status = ''; 964 if (item.standardStatus && item.standardStatus.length === 1 && item.standardStatus[0] === 'Closed') { 965 status = ' <span class="ui-status">Sold</span>'; 966 } 967 968 const itemNoResultsClassName = !!item?.noResults ? 'autosuggest-item-no-result' : ''; 969 970 return $(`<li class='${itemNoResultsClassName}'></li>`) 971 .data('ui-autocomplete-item', item) 972 .append('<a>' + txt + '<span>' + type + '</span>' + status + '</a>') 973 .appendTo(ul); 974 }; 975 }); 976 977 require(['jquery'], function($) { 978 var stateMap = JSON.parse('{"Alabama":"AL","Alaska":"AK","Arizona":"AZ","Arkansas":"AR","Bahamas":"BS","California":"CA","Colorado":"CO","Connecticut":"CT","Delaware":"DE","D.C.":"DC","Florida":"FL","Georgia":"GA","Hawaii":"HI","Idaho":"ID","Illinois":"IL","Indiana":"IN","Iowa":"IA","Kansas":"KS","Kentucky":"KY","Louisiana":"LA","Maine":"ME","Maryland":"MD","Massachusetts":"MA","Michigan":"MI","Minnesota":"MN","Mississippi":"MS","Missouri":"MO","Montana":"MT","Nebraska":"NE","Nevada":"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND","Ohio":"OH","Oklahoma":"OK","Oregon":"OR","Pennsylvania":"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD","Tennessee":"TN","Texas":"TX","Utah":"UT","Vermont":"VT","Virginia":"VA","Washington":"WA","West Virginia":"WV","Wisconsin":"WI","Wyoming":"WY","Alberta":"AB","British Columbia":"BC","Manitoba":"MB","New Brunswick":"NB","Newfoundland and Labrador":"NL","Nova Scotia":"NS","Ontario":"ON","Prince Edward Island":"PE","Quebec":"QC","Saskatchewan":"SK"}'); 979 const MAX_RECENT_SEARCHES_CACHED = 5; 980 var showAgentsSearch = '0'; 981 982 function getCurrentSearchMode() { 983 if (showAgentsSearch === '1' && $('#agents-159646').hasClass('active')) { 984 return 'agents'; 985 } else if ($('#rentals-property-types-159646').hasClass('active')) { 986 return 'rentals'; 987 } else { 988 return 'sales'; 989 } 990 } 991 992 /** 993 * Update placeholder based on current search mode 994 */ 995 function updatePlaceholder() { 996 var searchMode = getCurrentSearchMode(); 997 var searchInput = $('#autosuggest-search-query-159646'); 998 var placeholder = ''; 999 1000 switch(searchMode) { 1001 case 'agents': 1002 placeholder = 'Search for agents by name'; 1003 break; 1004 case 'rentals': 1005 case 'sales': 1006 default: 1007 placeholder = `City, Address, Zip, Neighborhood, MLS Number, High School...`; 1008 break; 1009 } 1010 1011 searchInput.attr('placeholder', placeholder); 1012 } 1013 1014 function getStateAbbreviation(stateName) { 1015 if (!stateName) { 1016 return null; 1017 } 1018 1019 if (!stateMap.hasOwnProperty(stateName)) { 1020 return null; 1021 } 1022 1023 return stateMap[stateName]; 1024 } 1025
1026 function goToDetailView(filter) { 1027 var baseUrl = '/api/listings/'; 1028 // We should use this replace in order to divide params into array in the ListingSearch.php in the V2 1029 filter = filter.replace(/\S&\S/g, function (tmpVal) { 1030 return tmpVal.replace(/&/g, '#'); 1031 }); 1032 filter = encodeURIComponent(filter); 1033 $.ajax({ 1034 dataType: 'json', 1035 url: baseUrl + '?suggestionFilter=' + filter, 1036 type: 'GET', 1037 success: function(data) { 1038 if (!Array.isArray(data.listings)) { 1039 return; 1040 } 1041 1042 if (data.listings.length === 1) { 1043 window.location.href = data.listings[0].usmDetailPath; 1044 1045 return; 1046 } 1047 1048 if (data.listings.length > 1) { 1049 window.location.href = '/listings/' + '?suggestionFilter=' + filter; 1050 1051 return; 1052 } 1053 } 1054 }); 1055 } 1056 1057 function getCityAndStatePath(value) { 1058 var array = value.split(' '); 1059 1060 const state = array.pop().toLowerCase(); 1061 const city = array.join('-').toLowerCase(); 1062 1063 return state + '/' + city + '/'; 1064 } 1065 1066 function parseFilterString(filterString) { 1067 var filters = {}; 1068 if (!filterString) { 1069 return filters; 1070 } 1071 filterString.split('&').forEach(function(f) { 1072 var parts = f.split('='); 1073 if (parts.length >= 2) { 1074 var name = parts[0].match(/\[(.*?)\]/)?.[1]; 1075 if (name) { 1076 filters[name] = decodeURIComponent(parts.slice(1).join('=')); 1077 } 1078 } 1079 }); 1080 return filters; 1081 } 1082 1083 function getStateAbbrFromFilterValue(stateValue) { 1084 if (!stateValue) { 1085 return null; 1086 } 1087 var abbr = getStateAbbreviation(stateValue); 1088 if (abbr) { 1089 return abbr.toLowerCase(); 1090 } 1091 if (stateValue.length === 2) { 1092 return stateValue.toLowerCase(); 1093 } 1094 return null; 1095 } 1096 1097 /** 1098 * Build url with path based on the selected suggestion. 1099 * 1100 */ 1101 function getUrlPath(suggestion) { 1102 let path = ''; 1103 switch (suggestion.type) { 1104 case 'cityAndState': 1105 path += getCityAndStatePath(suggestion.value); 1106 1107 return path; 1108 case 'stateOrProvince': 1109 var stateAbbreviation = getStateAbbreviation(suggestion.value); 1110 1111 if (stateAbbreviation && stateAbbreviation.length == 2) { 1112 path += stateAbbreviation.toLowerCase() + '/'; 1113 } 1114 1115 return path; 1116 case 'neighborhood': 1117 case 'village': 1118 path += convertFilterString(suggestion.filter); 1119 1120 return path; 1121 case 'county': { 1122 var filters = parseFilterString(suggestion.filter); 1123 var county = filters.county; 1124 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 1125 if (county && stateAbbr) { 1126 var countySlug = county.replace(/\s+county$/i, '').toLowerCase().replace(/\s+/g, '-') + '-county'; 1127 path = stateAbbr + '/' + countySlug + '/'; 1128 } 1129 return path; 1130 } 1131 case 'postalCode': { 1132 var filters = parseFilterString(suggestion.filter); 1133 var postalCode = filters.postalCode; 1134 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 1135 if (postalCode && stateAbbr) { 1136 path = stateAbbr + '/' + postalCode + '/'; 1137 } 1138 return path; 1139 } 1140 default: 1141 return path; 1142 } 1143 } 1144 1145 function convertFilterString(filterString) { 1146 if (!filterString) { 1147 return ''; 1148 } 1149 1150 const filters = filterString.split('&'); 1151 const suggestionFilters = filters.map(filter => { 1152 const filterPart = filter.split('='); 1153 1154 if (filterPart.length !== 2) { 1155 return null; 1156 } 1157 1158 const [key, value] = filterPart; 1159 const name = key.match(/\[(.*?)\]/)?.[1]; 1160 1161 if (!name) return null; 1162 1163 return name === 'cityAndState' || name === 'usmCityAndState' 1164 ? getCityAndStatePath(value) + '?' 1165 : name + '=' + value ; 1166 }); 1167 1168 return getPathFromFilters(suggestionFilters); 1169 } 1170 1171 function getPathFromFilters(suggestionFilters) { 1172 if (!suggestionFilters || suggestionFilters.length === 0) { 1173 return ''; 1174 } 1175 1176 const cityAndStateItem = suggestionFilters.find(item => item.includes('/?')); 1177 1178 if (!cityAndStateItem) { 1179 return '?' + suggestionFilters.join('&'); 1180 } 1181 1182 const filtersWithoutCityAndState = suggestionFilters.filter(item => item !== cityAndStateItem); 1183 1184 return cityAndStateItem + filtersWithoutCityAndState.join('&'); 1185 } 1186 1187 function getPropertyDetailPathFromOffMarketSuggestion(suggestion) { 1188 if (!suggestion) { 1189 return ''; 1190 } 1191 1192 const { value, filter } = suggestion; 1193 const startIndex = filter?.indexOf('=') + 1; 1194 const usmPid = filter?.substring(startIndex); 1195 1196 const address = value?.split(' ') 1197 ?.map(function(word) { return word.toLowerCase() }) 1198 ?.join('-') || ''; 1199 1200 return '/property/' + address + '/' + usmPid + '/'; 1201 }; 1202 1203 function submitSearch(e, item) { 1204 e.preventDefault(); 1205 1206 if (!item) { 1207 return; 1208 } 1209 1210 // If the item has no type, it's an error message and shouldn't send anywhere 1211 if (!item.type) { 1212 return; 1213 } 1214 1215 var searchMode = getCurrentSearchMode(); 1216
1217 // Finish the input in case a selection was made without completing it 1218 $('#autosuggest-search-query').val(item.type === 'listingId' ? item.value.toUpperCase() : item.label); 1219 1220 if (item.type === 'agent' || item.type === 'team') { 1221 window.location.href = `/realestate/${item.type}/${item.slug}/`; 1222 1223 return; 1224 } 1225 1226 // Send to detail view if MLS Number 1227 if (item.type === 'listingId' || item.type === 'address' || item.type === 'usmPropertyName' || item.type === 'usmNonMlsId') { 1228 var filter = item.filter; 1229 1230 if (item.standardStatus && item.standardStatus.length > 0) { 1231 var statusList = Array.isArray(item.standardStatus) 1232 ? item.standardStatus 1233 : [item.standardStatus]; 1234 // It is very common for listings other than 'Active 'to being filtered out, so we need to add this filter to ensure that they are returned by the listings api 1235 filter += (filter !== '' ? '&' : '') + 'filter[standardStatus]=' + statusList.join(','); 1236 } 1237 goToDetailView(filter); 1238 1239 return; 1240 } else if (item.type === 'offMarketData') { 1241 const propertyPath = getPropertyDetailPathFromOffMarketSuggestion(item); 1242 1243 window.location.href = propertyPath; 1244 1245 return; 1246 } 1247 1248 item.type = item.type.replace('usmCityAndState', 'cityAndState') 1249 .replace('usmNeighborhood', 'neighborhood') 1250 .replace('usmVillage', 'village') 1251 .replace('usmSubdivision', 'subdivision') 1252 .replace('usmComplex', 'complex'); 1253 1254 if (item.type === 'cityAndState') { 1255 item.value = item.value.replace(', ', ' '); 1256 } 1257 1258 path = getUrlPath(item); 1259 1260 // Don't save agents to recent searches 1261 if (searchMode !== 'agents') { 1262 var searches = [Object.assign({}, item)]; 1263 var storedSearches = JSON.parse(localStorage.getItem('lastSearches')); 1264 1265 if (storedSearches) { 1266 searches = storedSearches.filter(function(storedSearch) { 1267 storedSearch.value !== item.value 1268 }); 1269 storedSearches = searches.length <= (MAX_RECENT_SEARCHES_CACHED - 1) 1270 ? searches 1271 : searches.slice(0,-1); 1272 searches = [Object.assign({}, item), ...storedSearches]; 1273 } 1274 1275 localStorage.setItem('lastSearches', JSON.stringify(searches)); 1276 } 1277 1278 var propertyTypeFilter = ''; 1279 var displaySalesRentalsToggle = ''; 1280 1281 if (displaySalesRentalsToggle && searchMode !== 'agents') { 1282 var forSalePropertyTypes = ''; 1283 var rentalsPropertyTypes = ''; 1284 var forSaleLabel = 'Sales'; 1285 var rentalsLabel = 'Rentals'; 1286 var agentsLabel = ''; 1287 var propertyTypes = $('#sales-property-types-159646').hasClass('active') ? forSalePropertyTypes : rentalsPropertyTypes; 1288 1289 if (propertyTypes) { 1290 var urlPathTypes = ['cityAndState', 'county', 'postalCode']; 1291 if (urlPathTypes.indexOf(item.type) !== -1 && !propertyTypes.includes(',')) { 1292 path = path + propertyTypes.toLowerCase() + '/'; 1293 } else { 1294 propertyTypeFilter = 'propertyTypes=' + propertyTypes; 1295 } 1296 } 1297 } 1298 1299 var fullPath = ''; 1300 if (path.length > 0) { 1301 var separator = path.indexOf('?') !== -1 ? '&' : '?'; 1302 fullPath = '/listings/' + path + separator +'' + propertyTypeFilter; 1303 } else { 1304 fullPath = '/listings/?' + item.type + '=' + encodeURIComponent(item.value) + '&' + propertyTypeFilter; 1305 } 1306 1307 // Remove trailing ? or & 1308 const lastChar = fullPath.charAt(fullPath.length - 1); 1309 if (lastChar === '?' || lastChar === '&') { 1310 fullPath = fullPath.slice(0, -1); 1311 } 1312 1313 window.location.href = fullPath; 1314 } 1315 1316 $('.widget-autosuggest').on('submit', function(e) { 1317 submitSearch(e, suggestionResponse); 1318 }); 1319 1320 $('.widget-autosuggest').on('autocompleteselect', function(e, ui) { 1321 submitSearch(e, ui.item); 1322 }); 1323 1324 var salesPropertyTypesButton = $('#sales-property-types-159646'); 1325 var rentalPropertyTypesButton = $('#rentals-property-types-159646'); 1326 var agentsButton = $('#agents-159646'); 1327 1328 // Function to clear search and refresh autocomplete 1329 function clearSearchAndRefresh() { 1330 $('#autosuggest-search-query-159646').val('').autocomplete('search', ''); 1331 } 1332
1333 const buttons = [salesPropertyTypesButton, rentalPropertyTypesButton]; 1334 if (showAgentsSearch === '1') { 1335 buttons.push(agentsButton); 1336 } 1337 1338 function setActiveButton(activeButton, buttons) { 1339 $.each(buttons, function(index, btn) { 1340 btn.removeClass('active'); 1341 }); 1342 activeButton.addClass('active'); 1343 updatePlaceholder(); 1344 clearSearchAndRefresh(); 1345 } 1346 1347 salesPropertyTypesButton.on('click', function() { 1348 setActiveButton(salesPropertyTypesButton, buttons); 1349 }); 1350 1351 rentalPropertyTypesButton.on('click', function() { 1352 setActiveButton(rentalPropertyTypesButton, buttons); 1353 }); 1354 1355 // Only add event handler if agents search is enabled 1356 if (showAgentsSearch === '1') { 1357 agentsButton.on('click', function() {
1358 setActiveButton(agentsButton, buttons); 1359 }); 1360 } 1361 1362 // Initialize placeholder on document ready 1363 $(document).ready(function() { 1364 updatePlaceholder(); 1365 }); 1366 }); 1367 1368 require(["jquery", "bootstrap"], function ($) { 1369 if ($.fn.carousel === undefined && jQuery.fn.carousel !== undefined) { 1370 $ = jQuery; 1371 } 1372 $("#carousel-156253 .carousel").carousel({ 1373 "interval": 10000 1374 }); 1375 $("#carousel-156253 .carousel-inner .item").each(function() { 1376 this.style["-webkit-transition-duration"] = "0s"; 1377 this.style["-moz-transition-duration"] = "0s"; 1378 this.style["-o-transition-duration"] = "0s"; 1379 this.style["transition-duration"] = "0s"; 1380 }); 1381 }); 1382 1383 require(["jquery", "usm", "usm.modalform", "usm.analytics"], function($, usm) { 1384 var $form = $('form#aaq-165127'); 1385 1386 var options = { 1387 postSuccess: function (e) { 1388 if (typeof dataLayer !== 'undefined') { 1389 dataLayer.push({"event":"Contact_Form","form_name":"Ask A Question - General"}); 1390 } 1391 } 1392 }; 1393 1394 usm.modalForm.addValidation($form, options); 1395 }); 1396 var URI = "/user/register/";require(['usm', 'usm.user'], function (usm) { usm.user.setModal(true); });require(["jquery"], function ($) { $("body").addClass("js"); });</script>
1396<script type="text/javascript">require(["https://d1nn5t56all1qd.cloudfront.net/8625/js/custom.js?version=1690400801"]);</script>
1396</body> 1397</html><!-- You're on: Some other server - 172.18.22.9 - realtyofmaine.com Time: 1.049 -->
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.