1<!DOCTYPE html> 2<html lang="en-US"> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5<script> 6var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); 7</script>
7 8 9 <meta name="viewport" content="width=device-width, initial-scale=1" /> 10 <link rel="preconnect" href="https://www.google.com"> 11 <link rel="preconnect" href="https://www.gstatic.com" crossorigin> 12 <link rel="preconnect" href="https://fonts.googleapis.com"> 13 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 14 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@40,100..300,0..1,0&display=block" /> 15 <title>About Us | Island Vacation Properties</title> 16 17 <!-- All in One SEO Pro 5.0.2 - aioseo.com --> 18 <meta name="description" content="Learn more about Island Vacation Properties and our beach vacation rentals on Anna Maria Island. There are plenty of activities and events to keep the whole family entertained." /> 19 <meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1" /> 20 <link rel="canonical" href="https://www.islandvacationproperties.com/about-island-vacation-properties/" /> 21 <meta name="generator" content="All in One SEO Pro (AIOSEO) 5.0.2" /> 22 <meta property="og:locale" content="en_US" /> 23 <meta property="og:site_name" content="Island Vacation Properties" /> 24 <meta property="og:type" content="website" /> 25 <meta property="og:title" content="About Us | Island Vacation Properties" /> 26 <meta property="og:description" content="Learn more about Island Vacation Properties and our beach vacation rentals on Anna Maria Island. There are plenty of activities and events to keep the whole family entertained." /> 27 <meta property="og:url" content="https://www.islandvacationproperties.com/about-island-vacation-properties/" /> 28 <meta property="article:published_time" content="2019-12-10T16:06:09+00:00" /> 29 <meta property="article:modified_time" content="2026-09-16T13:31:58+00:00" /> 30 <meta property="article:publisher" content="https://www.facebook.com/islandvacationproperties/" /> 31 <meta name="twitter:card" content="summary" /> 32 <meta name="twitter:title" content="About Us | Island Vacation Properties" /> 33 <meta name="twitter:description" content="Learn more about Island Vacation Properties and our beach vacation rentals on Anna Maria Island. There are plenty of activities and events to keep the whole family entertained." /> 34
34<script type="application/ld+json" class="aioseo-schema"> 35 {"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.islandvacationproperties.com\/#listItem","position":1,"name":"Home","item":"https:\/\/www.islandvacationproperties.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#listItem","name":"About Island Vacation Properties"}},{"@type":"ListItem","@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#listItem","position":2,"name":"About Island Vacation Properties","previousItem":{"@type":"ListItem","@id":"https:\/\/www.islandvacationproperties.com\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/www.islandvacationproperties.com\/#organization","name":"Island Vacation Properties","description":"Anna Maria Island Vacation Rentals","url":"https:\/\/www.islandvacationproperties.com\/","email":"[email protected]","telephone":"+19417781000","logo":{"@type":"ImageObject","url":"https:\/\/www.islandvacationproperties.com\/wp-content\/uploads\/2026\/08\/IVPBlue200.png","@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#organizationLogo","width":367,"height":200,"caption":"ivp logo"},"image":{"@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/islandvacationproperties\/","https:\/\/www.google.com\/maps\/place\/?q=place_id:ChIJnZBkwbARw4gR3gR-y7Y6aB4"]},{"@type":"WebPage","@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#webpage","url":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/","name":"About Us | Island Vacation Properties","description":"Learn more about Island Vacation Properties and our beach vacation rentals on Anna Maria Island. There are plenty of activities and events to keep the whole family entertained.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.islandvacationproperties.com\/#website"},"breadcrumb":{"@id":"https:\/\/www.islandvacationproperties.com\/about-island-vacation-properties\/#breadcrumblist"},"datePublished":"2019-12-10T11:06:09-05:00","dateModified":"2026-09-16T09:31:58-04:00"},{"@type":"WebSite","@id":"https:\/\/www.islandvacationproperties.com\/#website","url":"https:\/\/www.islandvacationproperties.com\/","name":"Island Vacation Properties","description":"Anna Maria Island Vacation Rentals","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.islandvacationproperties.com\/#organization"}}]} 36 </script>
36 37 <!-- All in One SEO Pro --> 38 39<link rel='dns-prefetch' href='//www.google.com' /> 40<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.islandvacationproperties.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.islandvacationproperties.com%2Fabout-island-vacation-properties%2F" /> 41<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.islandvacationproperties.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.islandvacationproperties.com%2Fabout-island-vacation-properties%2F&format=xml" /> 42<style id="wp-img-auto-sizes-contain-inline-css"> 43img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 44/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 45</style> 46<style id="wp-emoji-styles-inline-css"> 47 48 img.wp-smiley, img.emoji { 49 display: inline !important; 50 border: none !important; 51 box-shadow: none !important; 52 height: 1em !important; 53 width: 1em !important; 54 margin: 0 0.07em !important; 55 vertical-align: -0.1em !important; 56 background: none !important; 57 padding: 0 !important; 58 } 59/*# sourceURL=wp-emoji-styles-inline-css */ 60</style> 61<style id="wp-block-library-inline-css"> 62:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
62--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 63 64/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 65</style> 66<style id="wp-block-heading-inline-css"> 67h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} 68/*# sourceURL=https://www.islandvacationproperties.com/wp-includes/blocks/heading/style.min.css */ 69</style> 70<style id="wp-block-paragraph-inline-css"> 71.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 72/*# sourceURL=https://www.islandvacationproperties.com/wp-includes/blocks/paragraph/style.min.css */ 73</style> 74 75 76<style id="global-styles-inline-css"> 77:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--rt-primary: #f4dd56;--wp--preset--color--rt-secondary: #f4dd56;--wp--preset--color--rt-above-footer: #737578;--wp--preset--color--rt-footer: #000000;--wp--preset--color--rt-accent: #55a0a3;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
770) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: clamp(.8rem, .8rem + ((1vw - 0.48rem) * 1.194), 1rem);--wp--preset--font-size--medium: clamp(.8rem, 1rem + ((1vw - 0.48rem) * 1.194), 1.6rem);--wp--preset--font-size--large: clamp(1.6rem, 1.6rem + ((1vw - 0.48rem) * 1.592), 2.5rem);--wp--preset--font-size--x-large: clamp(25.014px, 1.563rem + ((1vw - 3.2px) * 1.213), 42px);--wp--preset--font-size--extra-large: clamp(2.5rem, 2.5rem + ((1vw - 0.48rem) * 1.99), 3.5rem);--wp--preset--font-size--extra-extra-large: clamp(3.5rem, 3.5rem + ((1vw - 0.48rem) * 1.99), 4.55rem);--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 1200px;--wp--style--global--wide-size: 1720px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained >
77 :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-rt-primary-color{color: var(--wp--preset--color--rt-primary) !important;}.has-rt-secondary-color{color: var(--wp--preset--color--rt-secondary) !important;}.has-rt-above-footer-color{color: var(--wp--preset--color--rt-above-footer) !important;}.has-rt-footer-color{color: var(--wp--preset--color--rt-footer) !important;}.has-rt-accent-color{color: var(--wp--preset--color--rt-accent) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-rt-primary-background-color{background-color: var(--wp--preset--color--rt-primary) !important;}.has-rt-secondary-background-color{background-color: var(--wp--preset--color--rt-secondary) !important;}.has-rt-above-footer-background-color{background-color: var(--wp--preset--color--rt-above-footer) !important;}.has-rt-footer-background-color{background-color: var(--wp--preset--color--rt-footer) !important;}.has-rt-accent-background-color{background-color: var(--wp--preset--color--rt-accent) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-rt-primary-border-color{border-color: var(--wp--preset--color--rt-primary) !important;}.has-rt-secondary-border-color{border-color: var(--wp--preset--color--rt-secondary) !important;}.has-rt-above-footer-border-color{border-color: var(--wp--preset--color--rt-above-footer) !important;}.has-rt-footer-border-color{border-color: var(--wp--preset--color--rt-footer) !important;}.has-rt-accent-border-color{border-color: var(--wp--preset--color--rt-accent) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
77.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-extra-large-font-size{font-size: var(--wp--preset--font-size--extra-large) !important;}.has-extra-extra-large-font-size{font-size: var(--wp--preset--font-size--extra-extra-large) !important;} 78/*# sourceURL=global-styles-inline-css */ 79</style> 80 81<link rel='stylesheet' id='normalize-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/css/normalize.css?ver=7.1.3' media='all' /> 82<link rel='stylesheet' id='icons-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/material-icons.css?ver=7.1.3' media='all' /> 83<link rel='stylesheet' id='core-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/style.css?ver=1791205626' media='' /> 84<link rel='stylesheet' id='gforms_reset_css-css' href='https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/legacy/css/formreset.min.css?ver=3.1.2' media='all' /> 85<link rel='stylesheet' id='gforms_formsmain_css-css' href='https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/legacy/css/formsmain.min.css?ver=3.1.2' media='all' /> 86<link rel='stylesheet' id='gforms_ready_class_css-css' href='https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/legacy/css/readyclass.min.css?ver=3.1.2' media='all' /> 87<link rel='stylesheet' id='gforms_browsers_css-css' href='https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/legacy/css/browsers.min.css?ver=3.1.2' media='all' /> 88<link rel='stylesheet' id='popup-maker-site-css' href='//www.islandvacationproperties.com/wp-content/uploads/pum/pum-site-styles.css?generated=1787948087&ver=1.25.0' media='all' />
89<script id="jquery-core-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 89
89
90<script id="jquery-migrate-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 90
90
91<script id="jquery-ui-core-js-before"> 92jQuery.uiBackCompat = true; 93jQuery.uiBackCompat = true; 94//# sourceURL=jquery-ui-core-js-before 95</script>
vendor: 1 bytes, line 95
95
96<script id="jquery-ui-core-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 96
96
97<script id="jquery-ui-mouse-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/ui/mouse.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 97
97
98<script id="jquery-ui-sortable-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/ui/sortable.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 98
98
99<script id="jquery-ui-resizable-js" src="https://www.islandvacationproperties.com/wp-includes/js/jquery/ui/resizable.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 99
99
100<script id="acf-js" src="https://www.islandvacationproperties.com/wp-content/plugins/advanced-custom-fields-pro/assets/build/js/acf.min.js?ver=6.8.10"></script>
vendor: 1 bytes, line 100
100
101<script id="wp-dom-ready-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 101
101
102<script id="wp-hooks-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 102
102
103<script id="wp-i18n-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 103
103
104<script id="wp-i18n-js-after"> 105wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 106wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 107//# sourceURL=wp-i18n-js-after 108</script>
vendor: 1 bytes, line 108
108
109<script id="wp-a11y-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 109
109
110<script id="acf-input-js" src="https://www.islandvacationproperties.com/wp-content/plugins/advanced-custom-fields-pro/assets/build/js/acf-input.min.js?ver=6.8.10"></script>
vendor: 1 bytes, line 110
110
111<script id="rtc-acf-fixer-js-extra"> 112var rtwpVars = {"theme_url":"https://www.islandvacationproperties.com/wp-content/themes/rtapi"}; 113//# sourceURL=rtc-acf-fixer-js-extra 114</script>
vendor: 1 bytes, line 114
114
115<script id="rtc-acf-fixer-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/rtc-acf-fixer.js?ver=7.1.3"></script>
vendor: 1 bytes, line 115
115
116<script id="custom-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/submenu.js?ver=1.0.0"></script>
vendor: 1 bytes, line 116
116
117<script id="vue-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/vue.global.prod.js?ver=3.5.41"></script>
vendor: 1 bytes, line 117
117
118<script id="vueuse-shared-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/vueuse-shared.iife.js?ver=14.4.0"></script>
vendor: 1 bytes, line 118
118
119<script id="vueuse-core-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/vueuse-core.iife.js?ver=14.4.0"></script>
vendor: 1 bytes, line 119
119
120<script id="axios-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/axios.min.js?ver=1.19.0"></script>
vendor: 1 bytes, line 120
120
121<script id="gform_json-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 121
121
122<script id="gform_gravityforms-js-extra"> 123var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://www.islandvacationproperties.com/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"19dbec403806d76761dede907ba49b18","countries":{"AF":"Afghanistan","AX":"\u00c5land Islands","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua and Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Cambodia","CM":"Cameroon","CA":"Canada","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos Islands","CO":"Colombia","KM":"Comoros","CD":"Congo, Democratic Republic of the","CG":"Congo","CK":"Cook Islands","CR":"Costa Rica","CI":"C\u00f4te d'Ivoire","HR":"Croatia","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People's Republic of","KR":"Korea, Republic of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People's Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MK":"North Macedonia","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestine, State of","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","BL":"Saint Barth\u00e9lemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"Saint Kitts and Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre and Miquelon","VC":"Saint Vincent and the Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia and the South Sandwich Islands","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","SD":"Sudan","SR":"Suriname","SJ":"Svalbard and Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syria Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, the United Republic of","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad and Tobago","TN":"Tunisia","TR":"T\u00fcrkiye","TM":"Turkmenistan","TC":"Turks and Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States","UY":"Uruguay","UM":"US Minor Outlying Islands","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","WF":"Wallis and Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"},"strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 124var gform_i18n = {"datepicker":{"wdOffset":0,"helpTextShort":"Press F1 for help","helpText":"Press the arrow keys to navigate by day, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year, or Escape to cancel.","openOnFocusHelpText":"Press Down arrow to browse the calendar, or Escape to close.","tooltipTxt":"Press Escape to cancel","disabledTxt":"Disabled","markedTxt":"Selected","prevTxt":"Previous","nextTxt":"Next","monthTxt":"Month","yearTxt":"Year","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"days":[{"s":"S","l":"Sunday"},{"s":"M","l":"Monday"},{"s":"T","l":"Tuesday"},{"s":"W","l":"Wednesday"},{"s":"T","l":"Thursday"},{"s":"F","l":"Friday"},{"s":"S","l":"Saturday"}]}}; 125var gf_legacy_multi = {"10":"1"};
126var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","file_uploaded":"File uploaded","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled","error":"Error","message":"Message"},"vars":{"images_url":"https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/images"}}; 127//# sourceURL=gform_gravityforms-js-extra 128</script>
vendor: 1 bytes, line 128
128
129<script id="gform_gravityforms-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 129
129
130<script id="gform_gravityforms_utils-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=69a9db57304a9f86c3d1a0bea5fd2cf9"></script>
130 131<link rel="https://api.w.org/" href="https://www.islandvacationproperties.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.islandvacationproperties.com/wp-json/wp/v2/pages/112" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.islandvacationproperties.com/xmlrpc.php?rsd" /> 132<meta name="generator" content="WordPress 7.1.3" /> 133<link rel='shortlink' href='https://www.islandvacationproperties.com/?p=112' /> 134<link rel="icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" sizes="32x32" /> 135<link rel="icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" sizes="192x192" /> 136<link rel="apple-touch-icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" /> 137<meta name="msapplication-TileImage" content="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" /> 138 <!-- Google Tag Manager -->
139<script>
vendor: 359 bytes, lines 139-143
139(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 140 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 141 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 142 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 143 })(window,document,'script','dataLayer','
143GTM-KDN4RC6
vendor: 3 bytes, line 143
143');
143</script>
143 144<!-- End Google Tag Manager --> 145 <link href="https://fonts.googleapis.com/css2?family=Marcellus:wght@400&family=Cabin:wght@400;500;600;700&display=fallback" rel="stylesheet"> 146<style> 147 :root { 148 --primary: #f4dd56; 149 --primary-text: #333333; 150 --secondary: #f4dd56; 151 --secondary-text: #00437c; 152 --above-footer: #737578; 153 --footer: #000000; 154 --menu: #03437c; 155 --menu-hover: #21619a; 156 --qs-color: #00437c; 157 --heading-color: #00437c; 158 --splash-medium: rgb(204,227,227); 159 --splash-extra-light: rgb(247,250,250); 160 --splash-light: rgb(238,246,246); 161 --splash-dark: rgb(51,141,145); 162 --splash-extra-dark: rgb(-43,89,94); 163 --tone-extra-light: color-mix(in srgb, rgb(247,250,250) 55%, #f4f4f4); 164 --tone-light: color-mix(in srgb, rgb(247,250,250) 75%, #eee); 165 --heading-font-family: "Marcellus", sans-serif; 166 --body-font-family: "Cabin", sans-serif; 167 --heading-weight: 400; 168 --subheading-weight: 400; 169 --body-weight: 400; 170 --h-scale: 1.35rem; 171 --h-vw: 1.1vw; 172 --b-scale: 1.25rem; 173 --fluid-heading: calc(var(--h-scale) + var(--h-vw)); 174 --fluid-body: calc(var(--b-scale)); 175 } 176 head, body { 177 font-family: var(--body-font-family) !important; 178 font-size: var(--fluid-body) !important; 179 font-weight: var(--body-weight) !important; 180 } 181 h1, h2.page-title, .page-title, .page-title h1, .page-title h2, .page-title h3 { 182 font-family: var(--heading-font-family) !important; 183 font-weight: var(--heading-weight) !important; 184 } 185 h1, .page-title h1, .page-title h2, .cta-wrapper h2.page-title { 186 font-size: var(--fluid-heading) !important; 187 } 188 h2, h3 { 189 font-weight: var(--subheading-weight) !important; 190 } 191 </style> </head> 192<body class="wp-singular page-template-default page page-id-112 wp-theme-rtapi"> 193 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 193-194
193 194<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
194GTM-KDN4RC6
vendor: 83 bytes, line 194
194" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
195<!-- End Google Tag Manager (noscript) --> 196 <div id="content-wrap" class="content-wrap"> 197 <div class="site-wrap"> 198 <div class="header-main-wrapper classic"> 199 <a role="link" class="sr-only" href="#post-112">Skip to main content</a> 200 <header id="header" role="banner" class="classic" aria-label="banner"> 201 <div class="header-wrap"> 202 <div class="header contained"> 203 <div class="logo"> 204 <a id="rt-logo-anchor" href="https://www.islandvacationproperties.com/"> 205 <img width="367" height="200" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPBlue200.png" class="attachment-full size-full" alt="Island Vacation Properties Logo" id="rtlogo" style="max-width:250px;" decoding="async" fetchpriority="high" /> </a> 206 </div> 207 <button id="toggle" role='button' aria-label="Mobile Navigation Trigger" class="open-button toggle-spot white-text"> 208 <div class="toggle-spot"> 209 <span></span> 210 </div> 211 </button> 212 <div class="headerright"> 213 <div class="headerright-top"> 214 <div style="position:relative; cursor: pointer;" id="my-rentals-header"> 215 <div v-if="displayMyRentalsHeader"> 216 <a href="https://www.islandvacationproperties.com/vacation-rentals/results/?myrentals" title="View Favorite Rentals" style="gap: 2px;" aria-label="View favorite Rentals"> 217 <i class="rt-google-icon heart" :class="{'filled-symbol': favoritesCount }" aria-hidden="true"></i> 218 <span v-if="favoritesCount" class="filter-ticker">{{favoritesCount}}</span> 219 <span class="nomobile">My Rentals</span> 220 </a> 221 </div> 222</div> 223
224<script> 225 const { useStorage } = VueUse; 226 const sanitizeRtFavorited = function (raw) { 227 const clean = { 228 favorites: [], 229 recently_viewed: [], 230 date_history: [], 231 check_history: [], 232 select_history: [], 233 sort_order: { 234 field: "", 235 direction: "", 236 }, 237 version: 1, 238 }; 239 240 // Check data types and clean unapproved types 241 const isValidId = (v) => typeof v === 'string' && v.length > 0; 242 243 if (Array.isArray(raw.favorites)) { 244 clean.favorites = [...new Set(raw.favorites.filter(isValidId))].slice(0, 100); 245 } 246 if (Array.isArray(raw.recently_viewed)) { 247 clean.recently_viewed = [...new Set(raw.recently_viewed.filter(isValidId))].slice(0, 10); 248 } 249 250 if (Array.isArray(raw.date_history)) { 251 clean.date_history = raw.date_history 252 .filter(d => d && !isNaN(Date.parse(d.arrive)) && !isNaN(Date.parse(d.depart)) && new Date(d.depart) > new Date(d.arrive)) 253 .map(d => ({ arrive: d.arrive, depart: d.depart, latest_search: !!d.latest_search })) 254 .slice(0, 3); 255 } 256 if (Array.isArray(raw.check_history)) { 257 clean.check_history = raw.check_history 258 .filter(c => c && typeof c.label === 'string' && c.latest_search === true) 259 .map(c => ({ label: c.label, latest_search: true })); 260 } 261 if (Array.isArray(raw.select_history)) { 262 clean.select_history = raw.select_history 263 .filter(s => s && typeof s.label === 'string' && typeof s.value === 'string' && s.latest_search === true) 264 .map(s => ({ label: s.label, value: s.value, latest_search: true })); 265 } 266 267 // Preserve the sort_order if it exists in the raw local storage 268 if (raw.sort_order && typeof raw.sort_order === 'object') { 269 const field = typeof raw.sort_order.field === 'string' ? raw.sort_order.field : ""; 270 const direction = typeof raw.sort_order.direction === 'string' ? raw.sort_order.direction : ""; 271 const validDirections = ['asc', 'desc']; 272 273 if (field && validDirections.includes(direction)) { 274 clean.sort_order = {field, direction}; 275 } 276 // else: leave clean.sort_order at its default {field: "", direction: ""} 277 } 278 279 return clean; 280 } 281 282 const rtFavorited = useStorage('rt-favorited', { 283 favorites: [], 284 recently_viewed: [], 285 date_history: [], 286 check_history: [], 287 select_history: [], 288 sort_order: { 289 field: "", 290 direction: "", 291 }, 292 version: 1, 293 }); 294 295 rtFavorited.value = sanitizeRtFavorited(rtFavorited.value); 296 297 298 const myRentalsHeaderApp = Vue.createApp({ 299 // hand the app the global ref 300 setup() { 301 return { unitsFavorite: rtFavorited }; 302 }, 303 data() { 304 return { 305 displayMyRentalsHeader: true, 306 localStorageClean: false, 307 } 308 }, 309 computed: { 310 favoritesCount: function () { 311 if (this.unitsFavorite.favorites && this.unitsFavorite.favorites.length > 0) { 312 return this.unitsFavorite.favorites.length; 313 } else { 314 return 0; 315 } 316 }, 317 }, 318 methods: { 319 cleanseStorage: function() { 320 var appRoot = this; 321 322 axios.post('https://www.islandvacationproperties.com/vacation-rentals' + '/router/', { 323 call: 'cleanseFavorites', 324 store: appRoot.unitsFavorite, 325 }) 326 .then(function (response) { 327 appRoot.localStorageClean = true; 328 329 const validFavorites = response.data.favorites || []; 330 const validRecent = response.data.recently_viewed || []; 331 332 appRoot.unitsFavorite.favorites = appRoot.unitsFavorite.favorites.filter(id => validFavorites.includes(id)); 333 appRoot.unitsFavorite.recently_viewed = appRoot.unitsFavorite.recently_viewed.filter(id => validRecent.includes(id)); 334 335 appRoot.unitsFavorite.check_history = response.data.check_history || appRoot.unitsFavorite.check_history; 336 appRoot.unitsFavorite.select_history = response.data.select_history || appRoot.unitsFavorite.select_history; 337 }) 338 .catch(function (error) { 339 console.log(error); 340 }); 341 }, 342 }, 343 mounted: function() { 344 const hasData = this.unitsFavorite.favorites.length 345 || this.unitsFavorite.recently_viewed.length 346 || this.unitsFavorite.check_history.length 347 || this.unitsFavorite.select_history.length; 348 349 if (!this.localStorageClean && hasData) { 350 this.cleanseStorage(); 351 } 352 }, 353 }); 354 355 myRentalsHeaderApp.mount('#my-rentals-header'); 356</script>
356 <a class="headerright-top-tel" href="tel:(941) 7781000"> 357 <i class="rt-google-icon phone" aria-hidden="true"></i> 358 <span>(941) 778-1000 </span> 359 </a> 360 </div> 361 <nav class="navclass nav classic"> 362 <ul id="menu-main-nav" class="menu clearfix hide-nav leftnav white-text"><li id="menu-item-110" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-110"><a href="https://www.islandvacationproperties.com/vacation-rentals/results/?viewall" aria-haspopup="true" aria-expanded="false">Vacation Rentals</a><ul class="sub-menu"> <li id="menu-item-5865" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5865"><a href="https://www.islandvacationproperties.com/vacation-rentals/results/?viewall">View All Rentals</a></li> <li id="menu-item-162" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-162"><a aria-haspopup="true" aria-expanded="false">Rentals By Amenity</a> <ul class="sub-menu"> <li id="menu-item-691" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-691"><a href="https://www.islandvacationproperties.com/beachfront-rentals/">Beachfront</a></li> <li id="menu-item-163" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-163"><a href="https://www.islandvacationproperties.com/pool-properties/">Rentals With Pool</a></li> <li id="menu-item-189" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189"><a href="https://www.islandvacationproperties.com/pet-friendly-rentals/">Pet Friendly</a></li> </ul></li> <li id="menu-item-183" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-183"><a aria-haspopup="true" aria-expanded="false">Rentals By Community</a> <ul class="sub-menu"> <li id="menu-item-186" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-186"><a href="https://www.islandvacationproperties.com/anna-maria-rentals/">City of Anna Maria</a></li> <li id="menu-item-188" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-188"><a href="https://www.islandvacationproperties.com/holmes-beach-rentals/">Holmes Beach</a></li> <li id="menu-item-187" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-187"><a href="https://www.islandvacationproperties.com/bradenton-beach-rentals/">Bradenton Beach</a></li> <li id="menu-item-184" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-184"><a href="https://www.islandvacationproperties.com/main-land-rentals/">Mainland</a></li> <li id="menu-item-1179" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1179"><a href="https://www.islandvacationproperties.com/one-particular-harbour-rentals/">One Particular Harbour</a></li> <li id="menu-item-295" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-295"><a href="https://www.islandvacationproperties.com/rentals-by-area/">All Rentals By Area</a></li> </ul></li> <li id="menu-item-1672" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-1672"><a aria-haspopup="true" aria-expanded="false">Rentals By Type</a> <ul class="sub-menu"> <li id="menu-item-1458" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1458"><a href="https://www.islandvacationproperties.com/house-rentals/">House Rentals</a></li> <li id="menu-item-1673" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1673"><a href="https://www.islandvacationproperties.com/anna-maria-island-condo-rentals/">Condo Rentals</a></li> <li id="menu-item-164" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-164"><a href="https://www.islandvacationproperties.com/long-weekend-rentals/">Long Weekend Rentals</a></li> <li id="menu-item-2147" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2147"><a href="https://www.islandvacationproperties.com/anna-maria-island-monthly-rentals/">Monthly Rentals</a></li> <li id="menu-item-4944" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4944"><a href="https://www.islandvacationproperties.com/duplex-and-fourplex-rentals/">Multi Unit Properties</a></li> </ul></li> <li id="menu-item-873" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-873"><a aria-haspopup="true" aria-expanded="false">Rentals by Bedroom</a> <ul class="sub-menu"> <li id="menu-item-874" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-874"><a href="https://www.islandvacationproperties.com/1-bedroom-rentals/">1 Bedroom</a></li> <li id="menu-item-951" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-951"><a href="https://www.islandvacationproperties.com/2-bedroom-rentals/">2 Bedroom</a></li> <li id="menu-item-1009" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1009"><a href="https://www.islandvacationproperties.com/three-bedroom-rentals/">3 Bedroom</a></li> <li id="menu-item-1455" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1455"><a href="https://www.islandvacationproperties.com/four-bedroom-rentals/">4 Bedroom</a></li> <li id="menu-item-1454" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1454"><a href="https://www.islandvacationproperties.com/five-bedroom-rentals/">5+ Bedroom</a></li> </ul></li> <li id="menu-item-240" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-240"><a href="https://www.islandvacationproperties.com/featured-properties/">Featured AMI Vacation Rentals</a></li> <li id="menu-item-4125" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4125"><a href="https://www.islandvacationproperties.com/specials/">Specials</a></li> <li id="menu-item-3654" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3654"><a href="https://www.islandvacationproperties.com/travel-insurance-information/">Travel Insurance Information</a></li> <li id="menu-item-5751" class="menu-item menu-item-type-post_type menu-item-object-rtc menu-item-5751"><a href="https://www.islandvacationproperties.com/vacation-rentals/rentals-availability-calendar/">Availability Calendar</a></li></ul></li><li id="menu-item-111" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-111">
362<a href="https://islandvacationproperties.idxbroker.com/idx/featured" aria-haspopup="true" aria-expanded="false">Real Estate Sales</a><ul class="sub-menu"> <li id="menu-item-146" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-146"><a href="https://islandvacationproperties.idxbroker.com/idx/search/advanced">Search MLS</a></li> <li id="menu-item-147" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-147"><a href="https://islandvacationproperties.idxbroker.com/idx/featured">Our Featured Listings</a></li> <li id="menu-item-128" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-128"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-buyer-resources/">Home Buying Tips</a></li> <li id="menu-item-129" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-129"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-seller-resources/">Home Selling Tips</a></li> <li id="menu-item-148" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-148"><a href="https://islandvacationproperties.idxbroker.com/idx/mortgage">Mortgage Calculator</a></li> <li id="menu-item-227" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-227"><a href="https://www.islandvacationproperties.com/meet-our-sales-agents/">Meet Our Sales Agents</a></li></ul></li><li id="menu-item-195" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-195"><a href="https://www.islandvacationproperties.com/property-management/" aria-haspopup="true" aria-expanded="false">Property Management</a><ul class="sub-menu"> <li id="menu-item-106" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-106"><a href="https://www.islandvacationproperties.com/property-management/">List With IVP</a></li> <li id="menu-item-260" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-260"><a target="_blank" rel="noopener noreferrer" href="https://owner.escapia.com/dist/index.html#/login">Owner Log-In</a></li> <li id="menu-item-199" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-199"><a href="https://www.islandvacationproperties.com/contact-property-management/">Contact Property Management</a></li></ul></li><li id="menu-item-119" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current-menu-ancestor current-menu-parent menu-item-has-children menu-item-119"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" aria-current="page" aria-haspopup="true" aria-expanded="false">About Us</a><ul class="sub-menu"> <li id="menu-item-5207" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-5207"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" aria-current="page">Our Story</a></li> <li id="menu-item-220" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-220"><a href="https://www.islandvacationproperties.com/meet-our-team/">Meet Our Rentals Team</a></li> <li id="menu-item-159" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-159"><a href="https://www.islandvacationproperties.com/frequently-asked-questions/">Frequently Asked Questions</a></li> <li id="menu-item-229" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-229"><a href="https://www.islandvacationproperties.com/driving-directions/">Driving Directions</a></li> <li id="menu-item-117" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-117"><a href="https://www.islandvacationproperties.com/contact/">Contact Us</a></li></ul></li><li id="menu-item-120" class="last-link menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-120"><a href="https://www.islandvacationproperties.com/island-blog/" aria-haspopup="true" aria-expanded="false">Explore AMI</a><ul class="sub-menu"> <li id="menu-item-107" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-107"><a href="https://www.islandvacationproperties.com/about-anna-maria-island/">Anna Maria Island History</a></li> <li id="menu-item-108" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-108"><a href="https://www.islandvacationproperties.com/anna-maria-island-information/">City of Anna Maria</a></li> <li id="menu-item-122" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-122"><a target="_blank" href="/wp-content/uploads/2019/12/trolley-map.pdf">Free Trolley Map</a></li> <li id="menu-item-4228" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4228"><a href="https://www.islandvacationproperties.com/island-blog/">Our Blog</a></li></ul></li></ul> </nav> 363 </div> 364 </div> 365 </div> 366 </header> 367 <figure class="hero" role="complementary" aria-label="hero image"> 368 <img width="1920" height="500" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary.jpg" class="banner-image" alt="Island Vacation Properties" decoding="async" srcset="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary.jpg 1920w, https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary-600x156.jpg 600w, https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary-1200x313.jpg 1200w, https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary-768x200.jpg 768w, https://www.islandvacationproperties.com/wp-content/uploads/2026/08/IVPsecondary-1536x400.jpg 1536w" sizes="(max-width: 1920px) 100v
368w, 1920px" /> </figure> 369 <div class="qswrap classic"> 370 <div class="qscenter"> 371 <div id="qsformroot"> 372 <form id="qsform" @keydown.enter.prevent @submit.prevent role="search" aria-label="Search for available properties using specific search criteria." title="search for vacation rentals"> 373 <datepick-inputs 374 v-on:update-dates="newDates" 375 ></datepick-inputs> 376 <div v-for="(select,index) in searchCriteria.selectBoxes" class="select-wrap" :key="'select-id-'+index"> 377 <div class="select-container"> 378 <label :for="'select-'+index" class="hidden-label">{{select.label}}</label> 379 <select :id="'select-'+index" v-model="select.selected"> 380 <option value="">{{select.label}}</option> 381 <option v-for="(option,index) in select.options" :value="option.value" :key="select.input+'-option'+index">{{option.name}}</option> 382 </select> 383 </div> 384 </div> 385 <button class="button" @click="performSearch" @keydown.enter="performSearch" key="performSearch" aria-label="Go to the search results for the selected criteria.">Search</button> 386 </form> 387 </div> 388 <div id="property-search-instance"> 389 <propertysearch></propertysearch> 390</div> 391 392<template id="rt-searchbox"> 393 <div v-click-outside="outsideClick" class="property-searchbox-wrap"> 394 <form aria-label="Search for specific properties by filtering as you type."> 395 <div class="input-wrap"> 396 <input :value="query" 397 @input="query = $event.target.value" 398 @focus="openDropdown()" 399 @click="openDropdown()" 400 @enter.prevent="toggleDropdown()" 401 placeholder="Jump to a Property" 402 autocomplete="off" 403 aria-label="If you would like to go to a specific property webpage, type in the first few characters of the property you want to search for, then tab down through a list of matching results and then select the appropriate property link." 404 > 405 <i role="presentation" class="rt-google-icon search"></i> 406 </div> 407 <transition-group v-if="active" name="fade" tag="ul" mode="out-in"> 408 <li v-for="(item, index) in computedList" 409 v-bind:key="item.option" 410 v-bind:data-index="index" 411 ><a role="link" :href="'https://www.islandvacationproperties.com/vacation-rentals/rental/' + item.propName + '/'" :aria-label="'Go to the webpage for ' + item.option">{{ item.option }}</a></li> 412 </transition-group> 413 </form> 414 </div> 415</template>
416<script> 417 const rtpropsearchbox = { 418 template: '#rt-searchbox', 419 props: { 420 }, 421 data: function() { 422 return { 423 active: false, 424 query: '', 425 hasFocus: false, 426 units: [{"unit_id":"2531-250437","prop_name":" The Point at Bermuda Bay Club","prop_number":"2531-250437"},{"unit_id":"2531-241210","prop_name":"1239 Edgewater Circle","prop_number":"2531-241210"},{"unit_id":"2531-207379","prop_name":"A Getaway Retreat A","prop_number":"2531-207379"},{"unit_id":"2531-207381","prop_name":"A Getaway Retreat B","prop_number":"2531-207381"},{"unit_id":"2531-207370","prop_name":"A Getaway Retreat Both Units","prop_number":"2531-207370"},{"unit_id":"2531-174509","prop_name":"A Wright Place","prop_number":"2531-174509"},{"unit_id":"2531-174510","prop_name":"Absolutely Perfect","prop_number":"2531-174510"},{"unit_id":"2531-271103","prop_name":"Anglers Bay at One Particular Harbour 392-103","prop_number":"2531-271103"},{"unit_id":"2531-174455","prop_name":"Anna Cabana Bungalow #1","prop_number":"2531-174455"},{"unit_id":"2531-174456","prop_name":"Anna Cabana Bungalow #2","prop_number":"2531-174456"},{"unit_id":"2531-174457","prop_name":"Anna Cabana Bungalow #3","prop_number":"2531-174457"},{"unit_id":"2531-174458","prop_name":"Anna Cabana Bungalow #4","prop_number":"2531-174458"},{"unit_id":"2531-174514","prop_name":"Anna Maria Beach Place, Unit 3","prop_number":"2531-174514"},{"unit_id":"2531-174516","prop_name":"Anna Maria Beach Place, Unit 5","prop_number":"2531-174516"},{"unit_id":"2531-174517","prop_name":"Anna Maria Beach Place, Unit 6","prop_number":"2531-174517"},{"unit_id":"2531-174519","prop_name":"Annas Cottage","prop_number":"2531-174519"},{"unit_id":"2531-248838","prop_name":"Avenue A Retreat","prop_number":"2531-248838"},{"unit_id":"2531-174522","prop_name":"Bay Watch 6a","prop_number":"2531-174522"},{"unit_id":"2531-256701","prop_name":"Bayview Condo B","prop_number":"2531-256701"},{"unit_id":"2531-234316","prop_name":"Bayview Inn #101","prop_number":"2531-234316"},{"unit_id":"2531-174526","prop_name":"Beach House Resort 10","prop_number":"2531-174526"},{"unit_id":"2531-174528","prop_name":"Beach House Resort 3","prop_number":"2531-174528"},{"unit_id":"2531-174533","prop_name":"Beach House Resort 9","prop_number":"2531-174533"},{"unit_id":"2531-174536","prop_name":"Beachside","prop_number":"2531-174536"},{"unit_id":"2531-274431","prop_name":"Beachview #5","prop_number":"2531-274431"},{"unit_id":"2531-174460","prop_name":"Bliss & Tonic Both","prop_number":"2531-174460"},{"unit_id":"2531-174461","prop_name":"Bliss & Tonic Down","prop_number":"2531-174461"},{"unit_id":"2531-174462","prop_name":"Bliss & Tonic Up","prop_number":"2531-174462"},{"unit_id":"2531-174468","prop_name":"Bollinger Duplex 2 Units ","prop_number":"2531-174468"},{"unit_id":"2531-174469","prop_name":"Bollinger Duplex, A","prop_number":"2531-174469"},{"unit_id":"2531-174470","prop_name":"Bollinger Duplex, B","prop_number":"2531-174470"},{"unit_id":"2531-174540","prop_name":"Bradenton Beach Club D","prop_number":"2531-174540"},{"unit_id":"2531-174541","prop_name":"Breakers 1","prop_number":"2531-174541"},{"unit_id":"2531-174542","prop_name":"Breakers 3","prop_number":"2531-174542"},{"unit_id":"2531-174543","prop_name":"Breakers 4 At Sandcastle #1","prop_number":"2531-174543"},{"unit_id":"2531-174545","prop_name":"Bridgeport Condo 101","prop_number":"2531-174545"},{"unit_id":"2531-174445","prop_name":"Bridgeport Condo 204","prop_number":"2531-174445"},{"unit_id":"2531-174446","prop_name":"Bridgeport Condo 209","prop_number":"2531-174446"},{"unit_id":"2531-174546","prop_name":"Bridgeport Condo 211","prop_number":"2531-174546"},{"unit_id":"2531-284000","prop_name":"Coastal Cottage","prop_number":"2531-284000"},{"unit_id":"2531-174549","prop_name":"Coco Cabana","prop_number":"2531-174549"},{"unit_id":"2531-174550","prop_name":"Coquina Beach Club 101","prop_number":"2531-174550"},{"unit_id":"2531-260960","prop_name":"Coquina Beach Club 102","prop_number":"2531-260960"},{"unit_id":"2531-174552","prop_name":"Coquina Moorings 102","prop_number":"2531-174552"},{"unit_id":"2531-174554","prop_name":"Coquina Moorings 202","prop_number":"2531-174554"},{"unit_id":"2531-260136","prop_name":"Coquina Moorings 203","prop_number":"2531-260136"},{"unit_id":"2531-174555","prop_name":"Coquina Moorings 206","prop_number":"2531-174555"},{"unit_id":"2531-274179","prop_name":"Cove at Sandy Pointe 112","prop_number":"2531-274179"},{"unit_id":"2531-174560","prop_name":"Cove At Sandy Pointe 208","prop_number":"2531-174560"},{"unit_id":"2531-174475","prop_name":"Dolphin Dance Both","prop_number":"2531-174475"},{"unit_id":"2531-174476","prop_name":"Dolphin Dance, North Side","prop_number":"2531-174476"},{"unit_id":"2531-174477","prop_name":"Dolphin Dance, South Side","prop_number":"2531-174477"},{"unit_id":"2531-254395","prop_name":"Escape to Serenity 2 Units ","prop_number":"2531-254395"},{"unit_id":"2531-254393","prop_name":"Escape to Serenity A","prop_number":"2531-254393"},{"unit_id":"2531-254394","prop_name":"Escape to Serenity B","prop_number":"2531-254394"},{"unit_id":"2531-174564","prop_name":"Fountainhead Condo 3","prop_number":"2531-174564"},{"unit_id":"2531-174565","prop_name":"Fountainhead Condo 4","prop_number":"2531-174565"},{"unit_id":"2531-174478","prop_name":"Four Beach Lovers 1","prop_number":"2531-174478"},{"unit_id":"2531-174479","prop_name":"Four Beach Lovers 2","prop_number":"2531-174479"},{"unit_id":"2531-174480","prop_name":"Four Beach Lovers 3","prop_number":"2531-174480"},{"unit_id":"2531-174481","prop_name":"Four Beach Lovers 4","prop_number":"2531-174481"},{"unit_id":"2531-174482","prop_name":"Four Beach Lovers 4 Units ","prop_number":"2531-174482"},{"unit_id":"2531-174568","prop_name":"Franks Beach House","prop_number":"2531-174568"},{"unit_id":"2531-174483","prop_name":"Good Times Both Units","prop_number":"2531-174483"},{"unit_id":"2531-174484","prop_name":"Good Times Downstairs","prop_number":"2531-174484"},{"unit_id":"2531-174485","prop_name":"Good Times Upstairs A","prop_number":"2531-174485"},{"unit_id":"2531-174570","prop_name":"Gulf Sands 201","prop_number":"2531-174570"},{"unit_id":"2531-174575","prop_name":"Island Daze","prop_number":"2531-174575"},{"unit_id":"2531-240263","prop_name":"Island Walk, Cove At Sandy Point 207","prop_number":"2531-240263"},{"unit_id":"2531-213680","prop_name":"La Playita 7","prop_number":"2531-213680"},{"unit_id":"2531-174578","prop_name":"Lakeside Beach House","prop_number":"2531-174578"},{"unit_id":"2531-265790","prop_name":"LaPlage #3","prop_number":"2531-265790"},{"unit_id":"2531-216483","prop_name":"Lazy Livin 6","prop_number":"2531-216483"},{"unit_id":"2531-230130","prop_name":"Made In The Shade 2 Units ","prop_number":"2531-230130"},{"unit_id":"2531-230126","prop_name":"Made In The Shade A","prop_number":"2531-230126"},{"unit_id":"2531-230128","prop_name":"Made In The Shade B","prop_number":"2531-230128"}
426,{"unit_id":"2531-174436","prop_name":"MI Happy Place Sand Castle 1","prop_number":"2531-174436"},{"unit_id":"2531-174437","prop_name":"MI Happy Place Sand Dollar 2","prop_number":"2531-174437"},{"unit_id":"2531-174487","prop_name":"MI Happy Place Sea Horse 3","prop_number":"2531-174487"},{"unit_id":"2531-174488","prop_name":"MI Happy Place Sea Turtle 4","prop_number":"2531-174488"},{"unit_id":"2531-174489","prop_name":"MI Happy Place-4 Units ","prop_number":"2531-174489"},{"unit_id":"2531-174581","prop_name":"Ocean Park Terrace 202","prop_number":"2531-174581"},{"unit_id":"2531-216784","prop_name":"One Particular Harbour Sound View 379-401","prop_number":"2531-216784"},{"unit_id":"2531-230259","prop_name":"One Particular Harbour 379-101","prop_number":"2531-230259"},{"unit_id":"2531-206954","prop_name":"One Particular Harbour 387-101","prop_number":"2531-206954"},{"unit_id":"2531-206004","prop_name":"One Particular Harbour 391-201","prop_number":"2531-206004"},{"unit_id":"2531-283886","prop_name":"One Particular Harbour 391-203","prop_number":"2531-283886"},{"unit_id":"2531-208713","prop_name":"One Particular Harbour 392-201","prop_number":"2531-208713"},{"unit_id":"2531-265896","prop_name":"One Particular Harbour 395-402","prop_number":"2531-265896"},{"unit_id":"2531-259917","prop_name":"One Particular Harbour 396-303","prop_number":"2531-259917"},{"unit_id":"2531-247410","prop_name":"One Particular Harbour Lagoon view 383-202","prop_number":"2531-247410"},{"unit_id":"2531-198297","prop_name":"One Particular Harbour Lagoon View 395-103","prop_number":"2531-198297"},{"unit_id":"2531-256990","prop_name":"Otter Lagoon at One Particular Harbour 379-103","prop_number":"2531-256990"},{"unit_id":"2531-174584","prop_name":"Palm Cay 3","prop_number":"2531-174584"},{"unit_id":"2531-174585","prop_name":"Palm Cay 4","prop_number":"2531-174585"},{"unit_id":"2531-174586","prop_name":"Palm Cay 5","prop_number":"2531-174586"},{"unit_id":"2531-245092","prop_name":"Palm View Lakehouse","prop_number":"2531-245092"},{"unit_id":"2531-231137","prop_name":"Palma Sola","prop_number":"2531-231137"},{"unit_id":"2531-174490","prop_name":"Peace 'n Paradise","prop_number":"2531-174490"},{"unit_id":"2531-174588","prop_name":"Pelican Cove 15","prop_number":"2531-174588"},{"unit_id":"2531-261257","prop_name":"Pelican Place at The Nautilus","prop_number":"2531-261257"},{"unit_id":"2531-277058","prop_name":"Penthouse View at One Particular Harbour 388-401","prop_number":"2531-277058"},{"unit_id":"2531-237311","prop_name":"Pool Party 2 Units ","prop_number":"2531-237311"},{"unit_id":"2531-237312","prop_name":"Pool Party North","prop_number":"2531-237312"},{"unit_id":"2531-237313","prop_name":"Pool Party South","prop_number":"2531-237313"},{"unit_id":"2531-174592","prop_name":"Runaway Bay 250","prop_number":"2531-174592"},{"unit_id":"2531-174593","prop_name":"Sail Away Cottage","prop_number":"2531-174593"},{"unit_id":"2531-275311","prop_name":"Sand & Sun 2 Units ","prop_number":"2531-275311"},{"unit_id":"2531-275312","prop_name":"Sand & Sun A SIDE","prop_number":"2531-275312"},{"unit_id":"2531-275313","prop_name":"Sand & Sun B SIDE","prop_number":"2531-275313"},{"unit_id":"2531-174595","prop_name":"Sandcastle 3","prop_number":"2531-174595"},{"unit_id":"2531-273507","prop_name":"Sandy Feet Retreat","prop_number":"2531-273507"},{"unit_id":"2531-174596","prop_name":"Sandy Pointe 210","prop_number":"2531-174596"},{"unit_id":"2531-278824","prop_name":"Sapphire Serenity ","prop_number":"2531-278824"},{"unit_id":"2531-174597","prop_name":"Sea Pirate 3","prop_number":"2531-174597"},{"unit_id":"2531-174599","prop_name":"Sea Pirate 7","prop_number":"2531-174599"},{"unit_id":"2531-174600","prop_name":"Sea-Esta","prop_number":"2531-174600"},{"unit_id":"2531-174601","prop_name":"Seabreeze Condo B","prop_number":"2531-174601"},{"unit_id":"2531-174611","prop_name":"Seaside Beach House 101 ","prop_number":"2531-174611"},{"unit_id":"2531-174612","prop_name":"Seaside Beach House 102 ","prop_number":"2531-174612"},{"unit_id":"2531-174613","prop_name":"Seaside Beach House 105 ","prop_number":"2531-174613"},{"unit_id":"2531-174614","prop_name":"Seaside Beach House 201 ","prop_number":"2531-174614"},{"unit_id":"2531-204602","prop_name":"Seaside Beach House 203 ","prop_number":"2531-204602"},{"unit_id":"2531-174615","prop_name":"Seaside Beach House 205 ","prop_number":"2531-174615"},{"unit_id":"2531-174617","prop_name":"Shell Cove 9","prop_number":"2531-174617"},{"unit_id":"2531-174619","prop_name":"Sirena Del Mar","prop_number":"2531-174619"},{"unit_id":"2531-261258","prop_name":"So Beachy Chic","prop_number":"2531-261258"},{"unit_id":"2531-178725","prop_name":"Southern Comfort","prop_number":"2531-178725"},{"unit_id":"2531-174492","prop_name":"SS Salamander 2 Units ","prop_number":"2531-174492"},{"unit_id":"2531-174493","prop_name":"SS Salamander North","prop_number":"2531-174493"},{"unit_id":"2531-174494","prop_name":"SS Salamander South","prop_number":"2531-174494"},{"unit_id":"2531-262804","prop_name":"Sunset FantaSea at One Particular Harbour 380-202","prop_number":"2531-262804"}
426,{"unit_id":"2531-174621","prop_name":"Sunset Terrace 108 ","prop_number":"2531-174621"},{"unit_id":"2531-174623","prop_name":"Sunset Terrace 201","prop_number":"2531-174623"},{"unit_id":"2531-174448","prop_name":"Sunset Villas","prop_number":"2531-174448"},{"unit_id":"2531-257566","prop_name":"SWEPT AWAY B","prop_number":"2531-257566"},{"unit_id":"2531-218299","prop_name":"Swizzle On The Sound","prop_number":"2531-218299"},{"unit_id":"2531-174628","prop_name":"Terrace Condo 1","prop_number":"2531-174628"},{"unit_id":"2531-248621","prop_name":"Terrace Condo 6","prop_number":"2531-248621"},{"unit_id":"2531-235198","prop_name":"The Palms #3","prop_number":"2531-235198"},{"unit_id":"2531-231331","prop_name":"The Palms #4","prop_number":"2531-231331"},{"unit_id":"2531-204768","prop_name":"The Sunset Retreat at One Particular Harbour 384-202","prop_number":"2531-204768"},{"unit_id":"2531-285578","prop_name":"Tides & Turtles","prop_number":"2531-285578"},{"unit_id":"2531-174630","prop_name":"Tiki","prop_number":"2531-174630"},{"unit_id":"2531-277062","prop_name":"Tortuga Cottage","prop_number":"2531-277062"},{"unit_id":"2531-248571","prop_name":"Turquoise Turtle at One Particular Harbour 388-403 ","prop_number":"2531-248571"},{"unit_id":"2531-174500","prop_name":"Valhalla 2 Units ","prop_number":"2531-174500"},{"unit_id":"2531-174499","prop_name":"Valhalla Downstairs","prop_number":"2531-174499"},{"unit_id":"2531-174501","prop_name":"Valhalla Upstairs","prop_number":"2531-174501"},{"unit_id":"2531-174632","prop_name":"Waters Edge 102 N","prop_number":"2531-174632"},{"unit_id":"2531-174633","prop_name":"Waters Edge 106s","prop_number":"2531-174633"},{"unit_id":"2531-174634","prop_name":"Waters Edge 110s","prop_number":"2531-174634"},{"unit_id":"2531-174503","prop_name":"West Bay Cove 131","prop_number":"2531-174503"},{"unit_id":"2531-174640","prop_name":"West Bay Cove 142","prop_number":"2531-174640"},{"unit_id":"2531-278919","prop_name":"West Bay Cove 213","prop_number":"2531-278919"},{"unit_id":"2531-174643","prop_name":"West Bay Cove 216","prop_number":"2531-174643"},{"unit_id":"2531-207705","prop_name":"West Bay Cove 223","prop_number":"2531-207705"},{"unit_id":"2531-174644","prop_name":"West Bay Cove 226","prop_number":"2531-174644"},{"unit_id":"2531-174508","prop_name":"West Bay Cove 231","prop_number":"2531-174508"},{"unit_id":"2531-174505","prop_name":"West Bay Cove 236","prop_number":"2531-174505"},{"unit_id":"2531-174506","prop_name":"West Bay Cove 238","prop_number":"2531-174506"},{"unit_id":"2531-276790","prop_name":"West Bay Cove 242","prop_number":"2531-276790"},{"unit_id":"2531-257568","prop_name":"WHILE AWAY 2 Units ","prop_number":"2531-257568"},{"unit_id":"2531-174645","prop_name":"WHILE AWAY A","prop_number":"2531-174645"}], 427 } 428 }, 429 computed: { 430 list: function() { 431 var propsArray = new Array(); 432 this.units.forEach(function(prop) { 433 var propIndex = prop.prop_number.replace(/\s/g,''); 434 propsArray.push({propName:propIndex, option: prop.prop_name}); 435 }); 436 return propsArray; 437 }, 438 computedList: function () { 439 var vm = this; 440 return this.list.filter(function (item) { 441 return item.option.toLowerCase().indexOf(vm.query.toLowerCase()) !== -1; 442 }) 443 }, 444 }, 445 methods: { 446 makeSelection: function(option) { 447 this.closeDropdown(); 448 this.$emit('smartselect', option.value); 449 }, 450 openDropdown: function () { 451 this.active = true; 452 }, 453 closeDropdown: function() { 454 this.active = false; 455 }, 456 outsideClick: function(e) { 457 // Close the calendar when clicking outside 458 this.closeDropdown(); 459 }, 460 toggleDropdown: function() { 461 if(this.active) { 462 this.active = false; 463 } else { 464 this.active = true; 465 } 466 }, 467 toggle: function () { 468 if(this.hasFocus == false) { 469 this.hasFocus = true; 470 } else { 471 this.hasFocus = false;
472 } 473 474 }, 475 getYpos: function () { 476 var qsForm = this.$refs.quicksearchForm; 477 var qsFormYpos = qsForm.getBoundingClientRect().y; 478 if(qsFormYpos > 425) { 479 this.popupTopAlign = true; 480 } else { 481 this.popupTopAlign = false; 482 } 483 } 484 }, 485 directives: { 486 'click-outside': { 487 mounted(el, binding, vnode) { 488 el.clickOutsideEvent = function(event) { 489 if (!(el === event.target || el.contains(event.target))) { 490 binding.value(event, el); 491 } 492 }; 493 document.body.addEventListener('click', el.clickOutsideEvent); 494 }, 495 unmounted(el) { 496 document.body.removeEventListener('click', el.clickOutsideEvent); 497 } 498 }, 499 }, 500 }; 501 // register the components and mount the app 502 const rtPropSearch = Vue.createApp({}); 503 rtPropSearch.component('propertysearch', rtpropsearchbox); 504 rtPropSearch.mount('#property-search-instance'); 505</script>
505 506 </div> 507</div> 508 509<template id="general-calendar"> 510 <div class="calendar" @mouseleave="leaveCalendar($event)" :class="[{arriveballoon: calendarVisible && !arriveDate && ! departDate},{departballoon: calendarVisible && arriveDate && ! departDate}]"> 511 <div class="month-wrap"> 512 <div class="header"> 513 <i class="arrow rt-google-icon left-chevron" :class="{nonav: (monthIndex <= currentMonth && year == currentYear)}" @click="movePreviousMonth"></i> 514 <span v-cloak class="title">{{ header.label }}</span> 515 <i class="arrow rt-google-icon right-chevron" :class="{ nonav: year == calEndYear && month >= calEndMonth }" @click="moveNextMonth"></i> 516 </div> 517 <div class="weekdays"> 518 <div v-cloak class="weekday" v-for="weekday in weekdays"> 519 {{ weekday.label_3 }} 520 </div> 521 </div> 522 <div class='week' v-for="(week,index) in weeks" :key="'week'+index" 523 @touchstart="touchStart($event)" 524 @touchmove="touchMove($event)" 525 @touchend="touchEnd($event)"> 526 <div class="day-wrap" v-for="day in week" :key="day.dayKeyIndex"> 527 <transition :name="daysSliding" mode="out-in"> 528 <div v-cloak 529 class="day" 530 :key="daysSliding" 531 :class="{ today: day.isToday, booked: day.isBooked, bookstart: day.bookingStart, bookend: day.bookingEnd, unselectable: day.unselectable, unforeseeable: day.unforeseeable, anotherMonthDate: day.dateInAnotherMonth, anotherMonthDateCheckout: day.dateInAnotherMonthCheckout, 'not-in-month': !day.inMonth, 'selected': day.isSelected && !day.dragActive, 'dragged': day.isDragged, 'endpoint': day.startsDrag || day.endsDrag, 'navdate': day.navigateDate }" 532 @click="selectDay(day)" 533 @mouseenter="enterDay(day)"> 534 {{ day[dayKey] }} 535 </div> 536 </transition> 537 </div> 538 </div> 539 </div> 540 <div class="datepick-footer"> 541 <div v-if="flexButtons && flexButtons.length > 0"> 542 <div style="font-size: .85em;">Are your search dates flexible?</div> 543 <div class="flex-button-toolbar"> 544 <button 545 v-for="button in flexButtons" 546 @click.prevent="selectFlexButton(button)" 547 @keydown.enter.prevent="selectFlexButton(button)" 548 :key="'flexbutton'+button" 549 class="flex-degree-buttons" 550 :class="{selectedFlex: button === flexDegree, desktop: button > 2}" 551 :aria-label="'Search for properties within plus or minus '+button+' days of your search dates.'" 552 :aria-pressed="button === flexDegree ? true : false" 553 >±{{button}} day<span v-if="button > 1">s</span> 554 </button> 555 </div> 556 </div> 557 <transition name="fade"> 558 <button id="clear-dates-calendar-button" class="clear-dates" @click.stop="$parent.clearDates" @keyup.enter="$parent.clearDates" @keydown.tab="$parent.closeCalendar()" aria-label="Clear search dates from the calendar."> 559 <i class="rt-google-icon close-window" role="presentation"></i> 560 <span>Clear Dates</span> 561 </button> 562 </transition> 563 </div> 564 <div id="general-datepick-nav-message">{{navigationAriaMessage}}</div> 565 </div> 566</template> 567<template id="rt-general-datepick-app"> 568 <div id="rt-general-datepick" class="rt-general-datepick"> 569 <rt-modal v-if="isMobile && mobileDatesModal" ref="mobilecalmodal" @close-modal="closeCalendar" max-width="500px"> 570 <div id="mobile-calendar-target" class="calendar-container" :class="{calendarvisible: calendarVisible}"></div> 571 </rt-modal> 572 <div class="calendar-container" v-click-outside="outsideClick"> 573 <div class="modal-container" > 574 <div class="interface-wrap"> 575 <div class="interface-body"> 576 <div class="interface-inner-wrap"> 577 <div class="input-container date-input google-icon-calendar" 578 :class="{inputcoloration: calendarVisible && !arriveDate && !departDate}"> 579 <label for="arriveinput" class="hidden-label">Arrival Date</label> 580 <input id="arriveinput" ref="arriveinput" type="text" name="arrive_date" 581 :value="dateString(arriveDate)"
582 @focus="openCalendar()" 583 @keyup.enter="!navigateActive ? navigateActive=true : null" 584 @keydown.tab.shift.exact="closeCalendar()" 585 @keydown.escape="navigateActive=false" 586 @keydown.delete="clearDates" 587 @keydown.arrow-down.prevent 588 @keydown.arrow-up.prevent 589 @keydown.page-down.prevent 590 @keydown.page-up.prevent 591 @click="openCalendar()" 592 @keydown.enter.prevent="openCalendar()" 593 @keydown="navigationKeyStroke=$event.key" 594 placeholder="Arrival" 595 aria-describedby="general-datepick-nav-message" 596 readonly 597 /> 598 </div> 599 <div class="input-container date-input google-icon-calendar" 600 :class="{inputcoloration: calendarVisible && arriveDate && !departDate}"> 601 <label for="departinput" class="hidden-label">Departure Date</label> 602 <input id="departinput" ref="departinput" type="text" name="depart_date" 603 :value="dateString(departDate)" 604 @focus="openCalendar()" 605 @keydown.tab="closeCalendar()" 606 @keyup.enter="!navigateActive ? navigateActive=true : null" 607 @keydown.escape="navigateActive=false" 608 @keydown.delete="clearDates" 609 @keydown.arrow-down.prevent 610 @keydown.arrow-up.prevent 611 @keydown.page-down.prevent 612 @keydown.page-up.prevent 613 @click="openCalendar()" 614 @keydown.enter.prevent="openCalendar()" 615 @keydown="navigationKeyStroke=$event.key" 616 placeholder="Departure" 617 aria-describedby="general-datepick-nav-message" 618 readonly 619 /> 620 </div> 621 <div id="general-calendar-home" style="display: contents;"></div> 622 <teleport defer :to="(isMobile && mobileDatesModal) ? '#mobile-calendar-target' : '#general-calendar-home'"> 623 <div v-show="!isMobile || mobileDatesModal" class="calendar-wrap rt-general-datepick"> 624 <div v-if="mobileDatesModal" class="interface-wrap"> 625 <div class="interface-body"> 626 <div class="interface-inner-wrap" style="display: flex;"> 627 <div class="input-container date-input google-icon-calendar" :class="{inputcoloration: calendarVisible && !arriveDate && !departDate}"> 628 <label for="arriveinput" class="hidden-label">Arrival Date</label> 629 <input id="arriveinput" ref="arriveinput" type="text" name="arrive_date" 630 :value="dateString(arriveDate)" 631 @focus="openCalendar()" 632 @keyup.enter="!navigateActive ? navigateActive=true : null" 633 @keydown.tab.shift.exact="closeCalendar(
633)" 634 @keydown.escape="navigateActive=false" 635 @keydown.delete="clearDates" 636 @keydown.arrow-down.prevent 637 @keydown.arrow-up.prevent 638 @keydown.page-down.prevent 639 @keydown.page-up.prevent 640 @click="openCalendar()" 641 @keydown.enter.prevent="openCalendar()" 642 @keydown="navigationKeyStroke=$event.key" 643 placeholder="Arrival" 644 aria-describedby="general-datepick-nav-message" 645 readonly 646 /> 647 </div> 648 <div class="input-container date-input google-icon-calendar" 649 :class="{inputcoloration: calendarVisible && arriveDate && !departDate}"> 650 <label for="departinput" class="hidden-label">Departure Date</label> 651 <input id="departinput" ref="departinput" type="text" name="depart_date" 652 :value="dateString(departDate)" 653 @focus="openCalendar()" 654 @keydown.tab="closeCalendar()" 655 @keyup.enter="!navigateActive ? navigateActive=true : null" 656 @keydown.escape="navigateActive=false" 657 @keydown.delete="clearDates" 658 @keydown.arrow-down.prevent 659 @keydown.arrow-up.prevent 660 @keydown.page-down.prevent 661 @keydown.page-up.prevent 662 @click="openCalendar()" 663 @keydown.enter.prevent="openCalendar()" 664 @keydown="navigationKeyStroke=$event.key" 665 placeholder="Departure" 666 aria-describedby="general-datepick-nav-message" 667 readonly 668 /> 669 </div> 670 </div> 671 </div> 672 </div> 673 <div class="calendar-layout" :class="{openAbove: spaceAboveInputs}"> 674 <general-date-range-picker ref="rtGenDatepicker" 675 v-show="calendarVisible" 676 v-model="dateSelection" 677 :is-mobile="isMobile" 678 @drag="dragSelection = $event" 679 @emit-keystrokecomplete="navigationKeyStroke = null" 680 @emit-newflexdegree="newFlexDegree($event)" 681 :calendar-visible="calendarVisible" 682 :space-above-inputs="spaceAboveInputs" 683 :navigation-mode="navigateActive" 684 :key-stroke="navigationKeyStroke"> 685 </general-date-range-picker> 686 </div> 687 </div> 688 </teleport> 689 </div> 690 </div> 691 </div> 692 </div> 693 </div> 694 </div> 695</template>
696<script> 697 var _daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 698 var _weekdayLabels = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 699 var _monthLabels = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 700 var _today = new Date(); 701 var _todayComps = { 702 year: _today.getFullYear(), 703 month: _today.getMonth() + 1, 704 day: _today.getDate() 705 }; 706 var _initialMonth = _todayComps.month; 707 var _initialYear = _todayComps.year; 708 // set the initial month view ahead one month when we're past the 20th of the current month, which mirrors the availability calendar's logic 709 if(_todayComps.day >= 20) { 710 if(_initialMonth !== 12) { 711 _initialMonth++; 712 } else { // special case for December 713 _initialMonth = 1; 714 _initialYear++; 715 } 716 } 717 718 const generalCalendar = { 719 template: '#general-calendar', 720 data: function data() { 721 return { 722 month: _initialMonth, 723 year: _initialYear, 724 touchState: null, 725 arriveDate: null, 726 arriveMinDays: null, 727 departDate: null, 728 calStartDate: new Date(new Date(new Date().setDate(new Date().getDate() + 1)).setHours(0,0,0,0)), 729 calEndDate: new Date(new Date(new Date().setDate(new Date().getDate() + 425)).setHours(0,0,0,0)), 730 valueIsValid: false, 731 dragRange: null, 732 navigationDate: new Date(new Date(new Date().setDate(new Date().getDate() + 1)).setHours(0,0,0,0)), 733 navigationDateObject: null, 734 daysSliding: null, 735 flexDegree: 0, 736 flexButtons: [1,2,3], 737 }; 738 }, 739 props: { 740 dayKey: { type: String, default: 'label' }, 741 modelValue: { type: Object, default: {} }, 742 calendarVisible: { type: Boolean, default: false }, 743 spaceAboveInputs: { type: Boolean, default: false }, 744 navigationMode: { type: Boolean, default: false }, 745 keyStroke: { type: String, default: null }, 746 }, 747 emits: ['update:modelValue', 'drag', 'emit-newflexdegree', 'emit-keystrokecomplete'], 748 computed: { 749 normalizedValue: function normalizedValue() { 750 return this.normalizeRange(this.modelValue); 751 }, 752 normalizedDragRange: function normalizedDragRange() { 753 return this.normalizeRange(this.dragRange); 754 }, 755 // Our component exposes month as 1-based, but sometimes we need 0-based 756 monthIndex: function monthIndex() { 757 return this.month - 1; 758 }, 759 isLeapYear: function isLeapYear() { 760 return this.year % 4 === 0 && this.year % 100 !== 0 || this.year % 400 === 0; 761 }, 762 currentMonth: function currentMonth() { 763 var currentDate = new Date(); 764 return currentDate.getMonth(); 765 }, 766 currentYear: function currentMonth() { 767 var currentDate = new Date(); 768 return currentDate.getFullYear(); 769 }, 770 calEndMonth: function calEndMonth() { 771 return this.calEndDate.getMonth() + 1; 772 }, 773 calEndYear: function calEndYear() { 774 return this.calEndDate.getFullYear(); 775 }, 776 // Day/month/year components for previous month 777 previousMonthComps: function previousMonthComps() { 778 if (this.month === 1) return { 779 days: _daysInMonths[11], 780 month: 12, 781 year: this.year - 1 782 }; 783 return { 784 days: this.month === 3 && this.isLeapYear ? 29 : _daysInMonths[this.month - 2], 785 month: this.month - 1, 786 year: this.year 787 }; 788 }, 789 // Day/month/year components for next month 790 nextMonthComps: function nextMonthComps() { 791 if (this.month === 12) return { 792 days: _daysInMonths[0], 793 month: 1, 794 year: this.year + 1 795 }; 796 return { 797 days: this.month === 2 && this.isLeapYear ? 29 : _daysInMonths[this.month], 798 month: this.month + 1, 799 year: this.year 800 }; 801 }, 802 // State for calendar header (no dependencies yet...) 803 months: function months() { 804 return _monthLabels.map(function (ml, i) { 805 return { 806 label: ml, 807 label_1: ml.substring(0, 1), 808 label_2: ml.substring(0, 2), 809 label_3: ml.substring(0, 3), 810 number: i + 1 811 }; 812 }); 813 }, 814 // State for weekday header (no dependencies yet...) 815 weekdays: function weekdays() { 816 return _weekdayLabels.map(function (wl, i) { 817 return { 818 label: wl, 819 label_1: wl.substring(0, 1), 820 label_2: wl.substring(0, 2), 821 label_3: wl.substring(0, 3), 822 number: i + 1 823 }; 824 }); 825 }, 826 // State for calendar header 827 header: function header() {
828 var month = this.months[this.monthIndex]; 829 return { 830 month: month, 831 year: this.year.toString(), 832 shortYear: this.year.toString().substring(2, 4), 833 label: month.label + ' ' + this.year 834 }; 835 }, 836 // Returns number for first weekday (1-7), starting from Sunday 837 firstWeekdayInMonth: function firstWeekdayInMonth() { 838 return new Date(this.year, this.monthIndex, 1).getDay() + 1; 839 }, 840 // Returns number of days in the current month 841 daysInMonth: function daysInMonth() { 842 // Check for February in a leap year 843 if (this.month === 2 && this.isLeapYear) return 29; 844 // ...Just a normal month 845 return _daysInMonths[this.monthIndex]; 846 }, 847 // Returns number of days in the last month 848 daysInLastMonth: function daysInMonth() { 849 var lastmonth = 0; 850 if(this.monthIndex > 0) { 851 lastmonth = this.monthIndex - 1; 852 } else { 853 lastmonth == 11; 854 } 855 // Check for February in a leap year 856 if ((this.month - 1) === 2 && this.isLeapYear) return 29; 857 // ...Just a normal month 858 return _daysInMonths[lastmonth]; 859 }, 860 weeks: function weeks() { 861 //Create an index key for the days showing 862 var dayIndex = 0; 863 var weeks = []; 864 var previousMonth = true, thisMonth = false, nextMonth = false; 865 var day = this.previousMonthComps.days - this.firstWeekdayInMonth + 2; 866 var month = this.previousMonthComps.month; 867 var year = this.previousMonthComps.year; 868 var lastMonthArray = []; 869 // Cycle through each week of the month, up to 6 total 870 for (var w = 1; w <= 6; w++) { 871 // Cycle through each weekday 872 var week = []; 873 for (var d = 1; d <= 7; d++) { 874 dayIndex++; 875 // lets populate last months dates on this months calendar 876 if (w === 1 && d < this.firstWeekdayInMonth) { 877 var lastDay = this.daysInLastMonth; 878 lastMonthArray.push(lastDay); 879 day = lastDay - (this.firstWeekdayInMonth - (dayIndex + 1)); 880 month = this.previousMonthComps.month; 881 year = this.previousMonthComps.year; 882 thisMonth = true; 883 } 884 // We need to know when to start counting actual month days 885 if (previousMonth && d >= this.firstWeekdayInMonth) { 886 // Reset day/month/year counters 887 day = 1; 888 month = this.month; 889 year = this.year; 890 // ...and flag we're tracking actual month days 891 previousMonth = false; 892 thisMonth = true; 893 } 894 895 // Append day info for the current week 896 // Note: this might or might not be an actual month day 897 // We don't know how the UI wants to display various days, 898 // so we'll supply all the data we can 899 var dayInfo = { 900 dayKeyIndex: dayIndex, 901 label: (day && thisMonth) ? day.toString() : '', 902 day: day, 903 weekday: d, 904 week: w, 905 month: month, 906 year: year, 907 date: new Date(year, month - 1, day), 908 beforeMonth: previousMonth, 909 afterMonth: nextMonth, 910 inMonth: thisMonth, 911 isToday: day === _todayComps.day && month
911=== _todayComps.month && year === _todayComps.year, 912 isFirstDay: thisMonth && day === 1, 913 isLastDay: thisMonth && day === this.daysInMonth, 914 unselectable: false, 915 unforeseeable: false, 916 dateInAnotherMonth: false, 917 dateInAnotherMonthCheckout: false, 918 navigateDate: false, 919 }; 920 //Identify calendar start and end 921 if(this.calStartDate && dayInfo.date < this.calStartDate) { 922 dayInfo.unforeseeable = true; 923 } else if(this.calEndDate && dayInfo.date > this.calEndDate) { 924 dayInfo.unforeseeable = true; 925 } 926 //Identify which date is currently navigated to in screen-reader mode 927 if(this.navigationMode && this.navigationDate) { 928 var navDate = this.navigationDate.getTime(); 929 var compareToday = dayInfo.date.getTime(); 930 if(navDate === compareToday) { 931 dayInfo.navigateDate = true; 932 } 933 } 934 /**SECOND RENDER OF DATES AFTER AN ARRIVE DATE IS SELECTED**/ 935 if(this.arriveDate && this.departDate === null) { 936 var compRoot = this; 937 //Make all days selectable by default 938 dayInfo.unselectable = false; 939 940 //Any date behind the arrive date is unselectable 941 if(dayInfo.date <= compRoot.arriveDate) { 942 dayInfo.unselectable = true; 943 } 944 // add class for selectable dates in other months to distinguish 945 if((dayInfo.date > compRoot.arriveDate) && (w >= 5 && (dayInfo.date.getDate() < 20)) || (this.previousMonthComps.month === this.arriveDate.getMonth() + 1)) { 946 dayInfo.dateInAnotherMonthCheckout = true; 947 } 948 /**FIRST RENDER OF DATES WHEN NO ARRIVE DATE IS SELECTED OR BOTH AN ARRIVE AND DEPART ARE SELECTED**/ 949 } else { 950 if(this.calEndDate && dayInfo.date >= this.calEndDate) { 951 dayInfo.unselectable = true; 952 } 953 } /**END OF EVALUATIONS OF WHETHER DATES HAVE BEEN SELECTED OR NOT**/ 954 this.configureDay(dayInfo); 955 week.push(dayInfo); 956 957 // We've hit the last day of the month 958 // but let's keep adding the first few days of the next month to keep week 6 on the calendar for all months 959 if (thisMonth && day >= this.daysInMonth) { 960 day = 1; 961 month = this.nextMonthComps.month; 962 year = this.nextMonthComps.year; 963 // Still in the middle of the month (hasn't ended yet) 964 } else { 965 day++; 966 } 967 // add class for selectable dates in other months to distinguish 968 if((w >= 5 && (dayInfo.date.getDate() < 20)) || previousMonth) { 969 dayInfo.dateInAnotherMonth = true; 970 } 971 } 972 // Append week info for the month 973 weeks.push(week); 974 } 975 return weeks; 976 }, 977 nights: function () { 978 var nights = null; 979 if(this.arriveDate && this.departDate) { 980 var timeDiff = Math.abs(this.departDate.getTime() - this.arriveDate.getTime()); 981 nights = Math.round(timeDiff / (1000 * 3600 * 24)); 982 return nights; 983 } else if(this.dragRange && this.dragRange.start && this.dragRange.end && this.dragRange.end > this.dragRange.start) { 984 var timeDiff = Math.abs(this.dragRange.end.getTime() - this.dragRange.start.getTime()); 985 nights = Math.round(timeDiff / (1000 * 3600 * 24)); 986 } 987 return nights; 988 }, 989 navigationAriaMessage: function () { 990 var ariaMessage = ""; 991 var bookedMessage = ''; 992 var minDayMessage = ''; 993 var selectInstructions = ''; 994 if(this.navigationMode && this.navigationDate && this.calendarVisible) { //Message for when keyboard navigation mode is active 995 ariaMessage = 'You have navigated to ' + this.navigationDate.toDateString() + '. '; 996 for(var i = 0; i < this.weeks.length; i++) { 997 var weekArray = this.weeks[i]; 998 var navDateFound = false;
999 //Loop over every day in the visible month to grab the navigationDateObject 1000 for (var ii = 0; ii < this.weeks[i].length; ii++) { 1001 if (this.weeks[i][ii].date && this.weeks[i][ii].date.getTime() === this.navigationDate.getTime()) { 1002 this.navigationDateObject = this.weeks[i][ii]; 1003 break; 1004 } 1005 } 1006 } 1007 if(this.navigationDateObject) { 1008 if(this.navigationDateObject.unselectable || this.navigationDateObject.unforeseeable) { 1009 ariaMessage += 'This date is not available '; 1010 } else { 1011 ariaMessage += 'This date is available '; 1012 selectInstructions = ' Click enter if you want to select this date.'; 1013 } 1014 //Add the appropriate check-in/check-out substring to the message 1015 if(this.arriveDate && this.departDate === null) { 1016 ariaMessage += 'for a departure date.'; 1017 } else { 1018 ariaMessage += 'for an arrival date.'; 1019 ariaMessage += minDayMessage; 1020 } 1021 ariaMessage += selectInstructions; 1022 } 1023 } else if(this.calendarVisible) { //Default input labels when not in navigation mode 1024 var inputLabel = 'Select an arrival date and a departure date.'; 1025 var navInstructions = ' If you wish to navigate through the calendar using your keyboard, click the enter key to initiate keyboard calendar navigation. Once keyboard calendar navigation is active, you can use the arrow keys, page up, and page down to navigate through the calendar. Press the delete key to clear your dates. Press the escape key to exit keyboard calendar navigation and return to the main page content.' 1026 // add navigation verbiage when flex exists 1027 if(this.flexButtons && this.flexButtons.length > 0) { 1028 navInstructions += ' If you are flexible with your search dates and wish to
1028see results for a certain number of adjacent dates, tab to the next set of inputs, then back tab to this arrival date input and follow the screen reader instructions to enter calendar keyboard navigation.'; 1029 } 1030 if(this.arriveDate) { 1031 inputLabel += ' The currently selected arrive date is ' + this.arriveDate.toDateString() + '.'; 1032 } 1033 if(this.departDate) { 1034 inputLabel += ' The currently selected departure date is ' + this.departDate.toDateString() + '.'; 1035 } 1036 ariaMessage = inputLabel + navInstructions; 1037 } 1038 return ariaMessage; 1039 } 1040 }, 1041 methods: { 1042 configureDay: function configureDay(day) { 1043 var dateTime = day.date.getTime(); 1044 var valueRange = this.normalizedValue; 1045 var dragRange = this.normalizedDragRange; 1046 day.isSelected = valueRange && dateTime >= valueRange.startTime && dateTime <= valueRange.endTime; 1047 day.startsSelection = valueRange && dateTime === valueRange.startTime; 1048 day.endsSelection = valueRange && dateTime === valueRange.endTime; 1049 day.dragActive = dragRange; // Just to var day know drag is happening somewhere 1050 day.isDragged = dragRange && dateTime >= dragRange.startTime && dateTime <= dragRange.endTime; 1051 day.startsDrag = dragRange && dateTime === dragRange.startTime; 1052 day.endsDrag = dragRange && dateTime === dragRange.endTime; 1053 }, 1054 selectDay: function selectDay(day) { 1055 // Start new drag selection if not dragging 1056 if(day.unselectable || day.unforeseeable) { 1057 return; 1058 } 1059 if (!this.dragRange) { 1060 this.dragRange = { 1061 start: day.date, 1062 end: day.date 1063 }; 1064 this.arriveDate = this.dragRange.start; 1065 if(day.minDays) { 1066 this.arriveMinDays = day.minDays; 1067 } else if(day.rateData) { 1068 this.arriveMinDays = day.rateData.minDays; 1069 } 1070 this.departDate = null; 1071 // Complete drag selection 1072 } else { 1073 var _normalizedDragRange = this.normalizedDragRange, 1074 start = _normalizedDragRange.start, 1075 end = _normalizedDragRange.end; 1076 // Clear drag selection 1077 this.departDate = this.dragRange.end; 1078 this.dragRange = null; 1079 // Signal new value selected on drag complete 1080 this.$emit('update:modelValue', { start: start, end: end }); 1081 } 1082 }, 1083 navSelectDay: function navSelectDay(navDate) { 1084 // Start new drag selection if not dragging 1085 if (!this.dragRange) { 1086 this.dragRange = { 1087 start: navDate.date, 1088 end: navDate.date 1089 }; 1090 this.arriveDate = this.dragRange.start; 1091 this.departDate = null; 1092 // Complete drag selection 1093 } else { 1094 var _normalizedDragRange = this.normalizedDragRange, 1095 start = _normalizedDragRange.start, 1096 end = navDate.date; 1097 // Clear drag selection 1098 this.departDate = this.dragRange.end; 1099 this.dragRange = null; 1100 // Signal new value selected on drag complete 1101 this.$emit('update:modelValue', { start: start, end: end }); 1102 } 1103 }, 1104 enterDay: function enterDay(day) { 1105 if (!this.dragRange) { 1106 return; //Restrict end of selection to greater than first selection of range 1107 } 1108 // Update drag selection 1109 this.dragRange = { 1110 start: this.dragRange.start, 1111 end: day.date 1112 }; 1113 if((day.unselectable || day.unforeseeable) && this.dragRange.start && this.dragRange.end) { 1114 this.dragRange.end = this.dragRange.start; 1115 } 1116 },
1117 leaveCalendar: function leaveCalendar() { 1118 if(this.dragRange && this.dragRange.start && this.dragRange.end) { 1119 this.dragRange.end = this.dragRange.start; 1120 } 1121 }, 1122 1123 // Ranges can privately have end date earlier than start date 1124 // This function will correct the order before exposing it to to other components 1125 normalizeRange: function normalizeRange(range) { 1126 if (!range) return null; 1127 var start = range.start, 1128 end = range.end; 1129 1130 var startTime = start.getTime(); 1131 var endTime = end.getTime(); 1132 var isNormal = start < end; 1133 return { 1134 start: isNormal ? start : end, 1135 startTime: isNormal ? startTime : endTime, 1136 end: isNormal ? end : start, 1137 endTime: isNormal ? endTime : startTime 1138 }; 1139 }, 1140 moveThisMonth: function moveThisMonth() { 1141 this.month = _todayComps.month; 1142 this.year = _todayComps.year; 1143 }, 1144 moveNextMonth: function moveNextMonth() { 1145 this.daysSliding = 'slideleft'; 1146 var _nextMonthComps = this.nextMonthComps, 1147 month = _nextMonthComps.month, 1148 year = _nextMonthComps.year; 1149 1150 this.month = month; 1151 this.year = year; 1152 //Create a short DOM update delay for allowing day slide to transition 1153 this.$nextTick( 1154 function() { 1155 this.daysSliding = null; 1156 } 1157 ); 1158 }, 1159 movePreviousMonth: function movePreviousMonth() { 1160 this.daysSliding = 'slideright'; 1161 var _previousMonthComps = this.previousMonthComps, 1162 month = _previousMonthComps.month, 1163 year = _previousMonthComps.year; 1164 1165 this.month = month; 1166 this.year = year; 1167 //Create a short DOM update delay for allowing day slide to transition 1168 this.$nextTick( 1169 function() { 1170 this.daysSliding = null; 1171 } 1172 ); 1173 }, 1174 moveNextYear: function moveNextYear() { 1175 this.year++; 1176 }, 1177 movePreviousYear: function movePreviousYear() { 1178 this.year--; 1179 }, 1180 touchStart: function(e) { 1181 var t = e.changedTouches[0]; 1182 this.touchState = { 1183 active: true, 1184 startX: t.screenX, 1185 startY: t.screenY, 1186 startTime: new Date().getTime(), 1187 isSwiping: false, 1188 isMonitoringSwipe: true, 1189 }; 1190 }, 1191 touchMove: function(e) { 1192 if (!this.touchState.isMonitoringSwipe) { 1193 if (this.touchState.isSwiping) e.preventDefault(); 1194 return; 1195 } 1196 var deltaTime = new Date().getTime() - this.touchState.startTime; 1197 if (deltaTime <= 5) { 1198 e.preventDefault(); 1199 return; 1200 } 1201 var t = e.changedTouches[0]; 1202 var deltaX = t.screenX - this.touchState.startX; 1203 var deltaY = t.screenY - this.touchState.startY; 1204 if (Math.abs(deltaX) >= Math.abs(deltaY)) { 1205 this.touchState.isSwiping = true; 1206 //e.preventDefault(); 1207 } 1208 this.touchState.isMonitoringSwipe = false; 1209 }, 1210 touchEnd: function(e) { 1211 var t = e.changedTouches[0]; 1212 var deltaX = t.screenX - this.touchState.startX; 1213 var deltaY = t.screenY - this.touchState.startY; 1214 var deltaTime = new Date().getTime() - this.touchState.startTime; 1215 if (deltaTime < 300) { 1216 if ( 1217 Math.abs(deltaX) >= 60 && 1218 Math.abs(deltaY) <= 80 1219 ) { 1220 // Swipe left 1221 // Move to next month 1222 if (deltaX < 0) { 1223 if (this.year === this.calEndYear) { 1224 if (this.month < this.calEndMonth) { 1225 this.moveNextMonth(); 1226 } 1227 } else if (this.year < this.calEndYear) { 1228 this.moveNextMonth(); 1229 } 1230 // Swipe right 1231 // Move to previous month 1232 } else { 1233 if(this.year === this.currentYear) { 1234 if(this.monthIndex > this.currentMonth) { 1235 this.movePreviousMonth(); 1236 } 1237 } else if(this.year > this.currentYear) { 1238 this.movePreviousMonth(); 1239 } 1240 } 1241 } 1242 } 1243 }, 1244 selectFlexButton: function(flexSelection) { 1245 // if flexSelection is the same as what flexDegree already is, the user is unchecking this button and we set flexDegree to zero 1246 if(this.flexDegree === flexSelection) { 1247 this.flexDegree = 0; 1248 } else { 1249 this.flexDegree = flexSelection; 1250 } 1251 }, 1252 updateFlexSession: function() { 1253 var siteURL = document.location.origin; 1254 axios.post(siteURL + '/vacation-rentals/router/', { 1255 call: 'updateFlexSession', 1256 flexDegree: this.flexDegree 1257 }) 1258 .then(function (response) { 1259 return; 1260 }) 1261 .catch(function (error) { 1262 console.log(error); 1263 }); 1264 }, 1265 }, 1266 mounted: function() { 1267 //What to do when we land with dates in the session 1268 if(this.modelValue && this.modelValue.start && this.modelValue.end) { 1269 var sessionStart = this.modelValue.start; 1270 var sessionEnd = this.modelValue.end; 1271 } 1272 }, 1273 watch: { 1274 normalizedDragRange: function normalizedDragRange(val) { 1275 // Any time drag changes, normalize it and emit 'drag' event 1276 this.$emit('drag', val ? { start: val.start, end: val.end } : null); 1277 }, 1278 keyStroke: function () { 1279 var keystroke = this.keyStroke; 1280 var fromNavDate = new Date(this.navigationDate); 1281 var toNavDate = fromNavDate; 1282 //Set the calendar month and year in case we need to change the view 1283 this.month = fromNavDate.getMonth() + 1; 1284 this.year = fromNavDate.getFullYear(); 1285 if(this.navigationMode) { 1286 //If the keystroke is enter to select a day, make sure it's actually selectable 1287 if(keystroke === 'Enter' && this.navigationDateObject && this.navigationDateObject.unselectable === false && this.navigationDateObject.unforeseeable === false) { 1288 this.navSelectDay(this.navigationDateObject); 1289 //Set the focus on the depart input 1290 document.getElementById('departinput').focus({preventScroll:true}); 1291 } else if(keystroke === 'ArrowRight') { 1292 toNavDate.setFullYear(fromNavDate.getFullYear()); 1293 toNavDate.setMonth(fromNavDate.getMonth()); 1294 toNavDate.setDate(fromNavDate.getDate() + 1); 1295 toNavDate.setHours(0,0,0,0); 1296 } else if(keystroke === 'ArrowLeft') { 1297 toNavDate.setFullYear(fromNavDate.getFullYear()); 1298 toNavDate.setMonth(fromNavDate.getMonth()); 1299 toNavDate.setDate(fromNavDate.getDate() - 1); 1300 toNavDate.setHours(0,0,0,0); 1301 } else if(keystroke === 'ArrowDown') { 1302 toNavDate.setFullYear(fromNavDate.getFullYear()); 1303 toNavDate.setMonth(fromNavDate.getMonth()); 1304 toNavDate.setDate(fromNavDate.getDate() + 7); 1305 toNavDate.setHours(0,0,0,0); 1306 } else if(keystroke === 'ArrowUp') { 1307 toNavDate.setFullYear(fromNavDate.getFullYear()); 1308 toNavDate.setMonth(fromNavDate.getMonth()); 1309 toNavDate.setDate(fromNavDate.getDate() - 7); 1310 toNavDate.setHours(0,0,0,0); 1311 } else if(keystroke === 'PageDown') { 1312 toNavDate.setDate(1); 1313 toNavDate.setFullYear(fromNavDate.getFullYear()); 1314 toNavDate.setMonth(fromNavDate.getMonth() + 1); 1315 toNavDate.setHours(0,0,0,0); 1316 } else if(keystroke === 'PageUp') { 1317 toNavDate.setDate(1); 1318 toNavDate.setFullYear(fromNavDate.getFullYear()); 1319 toNavDate.setMonth(fromNavDate.getMonth() - 1); 1320 toNavDate.setHours(0,0,0,0); 1321 } 1322 //Set the calendar month and year in case we need to change the view 1323 this.month = toNavDate.getMonth() + 1; 1324 this.year = toNavDate.getFullYear(); 1325 this.navigationDate = toNavDate; 1326 } else { // events that are available before entering calendar keyboard navigation mode 1327 if(keystroke === 'Tab') { 1328 if(this.flexButtons && this.flexButtons.length > 0 && document.getElementsByClassName('flex-degree-buttons')[0] !== undefined) { 1329 document.getElementsByClassName('flex-degree-buttons')[0].focus({preventScroll:true}); 1330 } else if(document.getElementById('clear-dates-calendar-button') !== undefined) { 1331 document.getElementById('clear-dates-calendar-button').focus({preventScroll:true}); 1332 } else { 1333 document.getElementById('departinput').focus({preventScroll:true}); 1334 } 1335 } 1336 } 1337 //Let the parent instance know the keystroke is finished being evaluated 1338 this.$emit('emit-keystrokecomplete'); 1339 }, 1340 flexDegree: { 1341 immediate: true, 1342 handler: function () { 1343 //Let the parent instance know the keystroke is finished being evaluated 1344 var flexDegree = this.flexDegree; 1345 this.$emit('emit-newflexdegree', flexDegree); 1346 this.updateFlexSession(); 1347 } 1348 } 1349 }, 1350 }; 1351 const rtDateInputs = { 1352 template: '#rt-general-datepick-app', 1353 props: [], 1354 emits: ['update-dates', 'emit-newflexdegree'], 1355 data: function() { 1356 return { 1357 dateSelection: null, 1358 dragSelection: null, 1359 calendarVisible: false, 1360 spaceAboveInputs: false, // is there room above inputs to fit the calendar; false by default 1361 mobileInterfaceVisible: false, 1362 mobileDatesModal: false, 1363 navigateActive: false, 1364 navigationKeyStroke: null, 1365 windowWidth: 0, 1366 windowHeight: 0 1367 } 1368 }, 1369 computed: { 1370 isMobile: function() { 1371 if(this.windowWidth) { 1372 if(this.windowWidth <= 640) { 1373 return true; 1374 } else { 1375 return false;
1376 } 1377 } else { 1378 return null; 1379 } 1380 }, 1381 arriveDate: function () { 1382 if(this.dragSelection == null && this.dateSelection == null) { 1383 return null; 1384 } else if (this.dragSelection) { 1385 this.priceQuote = null; 1386 this.isAvailable = null; 1387 return this.dragSelection.start; 1388 } else if (this.dragSelection == null && this.dateSelection) { 1389 return this.dateSelection.start; 1390 } else { 1391 return null; 1392 } 1393 }, 1394 departDate: function () { 1395 if(this.dragSelection == null && this.dateSelection == null) { 1396 return null; 1397 } else if (this.dragSelection == null && this.dateSelection) { 1398 return this.dateSelection.end; 1399 } else { 1400 return null; 1401 } 1402 }, 1403 dateSelectionLabel: function dateSelectionLabel() { 1404 return JSON.stringify(this.dateSelection, null, '\t'); 1405 }, 1406 }, 1407 methods: { 1408 clearDates: function () { 1409 //Clear root element values 1410 this.dragSelection = null; 1411 this.dateSelection = null; 1412 //Clear child component values 1413 if(this.$refs.rtGenDatepicker) { 1414 this.$refs.rtGenDatepicker.dragRange = null; 1415 this.$refs.rtGenDatepicker.arriveDate = null; 1416 this.$refs.rtGenDatepicker.arriveMinDays = null; 1417 this.$refs.rtGenDatepicker.departDate = null; 1418 } 1419 this.openCalendar(); 1420 //emit the dates to the parent component 1421 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1422 }, 1423 dateString: function dateString(MyDate) { 1424 if(MyDate) { 1425 return ('0' + (MyDate.getMonth()+1)).slice(-2) + '/' 1426 + ('0' + MyDate.getDate()).slice(-2) + '/' 1427 + MyDate.getFullYear(); 1428 } 1429 }, 1430 getWindowWidth: function(event) { 1431 this.windowWidth = document.documentElement.clientWidth; 1432 }, 1433 getWindowHeight: function(event) { 1434 this.windowHeight = document.documentElement.clientHeight; 1435 }, 1436 activateModal: function () { 1437 this.mobileInterfaceVisible = true; 1438 this.clearDates(); 1439 }, 1440 openCalendar: function () { 1441 this.calendarVisible = true; 1442 if (this.isMobile) { 1443 this.mobileDatesModal = true; 1444 } 1445 if(document.getElementById('rt-general-datepick').getBoundingClientRect().top > 500) { 1446 this.spaceAboveInputs = true; 1447 } 1448 }, 1449 closeCalendar: function () { 1450 this.spaceAboveInputs = false; 1451 this.mobileDatesModal = false; // Close the modal 1452 this.calendarVisible = false; 1453 }, 1454 outsideClick: function(e) { 1455 // If the mobile modal is active, let rt-modal handle its own closing 1456 if (this.mobileDatesModal) { 1457 return; 1458 } 1459 // Close the calendar when clicking outside 1460 this.closeCalendar(); 1461 }, 1462 newFlexDegree: function (flexDegree) { 1463 this.$emit('emit-newflexdegree', flexDegree); 1464 }, 1465 }, 1466 directives: { 1467 'click-outside': { 1468 mounted(el, binding, vnode) { 1469 el.clickOutsideEvent = function(event) { 1470 if (!(el === event.target || el.contains(event.target))) { 1471 binding.value(event, el); 1472 } 1473 }; 1474 document.body.addEventListener('click', el.clickOutsideEvent); 1475 }, 1476 unmounted(el) { 1477 document.body.removeEventListener('click', el.clickOutsideEvent); 1478 } 1479 }, 1480 }, 1481 watch: { 1482 selectMode: function selectMode() { 1483 this.dateSelection = null; 1484 }, 1485 //Whenever a depart date is defined, run the price call 1486 departDate: function() { 1487 if(this.arriveDate && this.departDate) { 1488 //emit the dates to the parent component
1489 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1490 // Automatically close the calendar 1491 this.closeCalendar(); 1492 } 1493 } 1494 }, 1495 mounted: function() { 1496 if(this.arriveDate && this.departDate) { 1497 this.$refs.rtGenDatepicker.month = this.arriveDate.getMonth() +1; 1498 this.$refs.rtGenDatepicker.year = this.arriveDate.getFullYear(); 1499 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1500 } 1501 // Add a window-resize event listener 1502 this.$nextTick(function() { 1503 window.addEventListener('resize', this.getWindowWidth); 1504 window.addEventListener('resize', this.getWindowHeight); 1505 1506 //Init 1507 this.getWindowWidth(); 1508 this.getWindowHeight(); 1509 }); 1510 }, 1511 beforeDestroy: function() { 1512 window.removeEventListener('resize', this.getWindowWidth); 1513 window.removeEventListener('resize', this.getWindowHeight); 1514 }, 1515 }; 1516</script>
1516<template id="rt-modal"> 1517 <Teleport to="body"> 1518 <div class="rt-modal popover-mask"> 1519 <div class="popover-wrapper"> 1520 <div class="popover" :style="{maxWidth: maxWidth}"> 1521 <button class="popover-close" @click.prevent="$emit('close-modal')" @keydown.enter.prevent="$emit('close-modal')" aria-label="Close the popup window"><i role="presentation" class="rt-google-icon close-window filled-symbol"></i></button> 1522 <span class="sr-only" role="alert" aria-label="You have opened a modal window. You can press the escape key at any time to close this modal window."></span> 1523 <slot/> 1524 </div> 1525 </div> 1526 </div> 1527 </Teleport> 1528</template>
1529<script> 1530 const rtModal = { 1531 template: '#rt-modal', 1532 props: { 1533 maxWidth: { 1534 type: String, 1535 default: '700px' 1536 }, 1537 }, 1538 emits: ['close-modal'], 1539 methods: { 1540 resizeModal: function () { 1541 if(document.getElementsByClassName('popover-mask')[0] !== undefined) { 1542 document.getElementsByClassName('popover-mask')[0].style.height = "100vh"; 1543 document.getElementsByClassName('popover-mask')[0].style.width = "100%"; 1544 } 1545 }, 1546 escapeClose: function (event) { 1547 if(event.key === 'Escape') { 1548 this.$emit('close-modal'); 1549 } 1550 } 1551 }, 1552 mounted: function () { 1553 // add window resize event to deal with screen rotation, and the shrinking address bar on iOS 1554 window.addEventListener('resize', this.resizeModal); 1555 // add escape key listener 1556 document.addEventListener('keyup', this.escapeClose) 1557 }, 1558 unmounted: function () { 1559 // remove escape key listener 1560 document.removeEventListener('keyup', this.escapeClose); 1561 }, 1562 beforeDestroy: function () { 1563 window.removeEventListener('resize', this.resizeModal); 1564 }, 1565 }; 1566</script>
1566<script> 1567 const rtQuickSearch = Vue.createApp({ 1568 data() { 1569 return { 1570 searchCriteria: { 1571 arriveDate: null, 1572 departDate: null, 1573 selectBoxes: [], 1574 }, 1575 windowWidth: 0 1576 } 1577 }, 1578 computed: { 1579 urlQuerystring: function () { 1580 var queryString = '?searchform=1'; 1581 // Build up the dates part of the URL string 1582 if(this.searchCriteria.arriveDate && this.searchCriteria.departDate) { 1583 var datesString = ''; 1584 var arriveString = ''; 1585 var departString = ''; 1586 var arriveMonth = this.searchCriteria.arriveDate.getMonth() +1; 1587 var arriveDay = this.searchCriteria.arriveDate.getDate(); 1588 var arriveYear = this.searchCriteria.arriveDate.getFullYear(); 1589 arriveString = arriveMonth + '/' + arriveDay + '/' + arriveYear; 1590 var departMonth = this.searchCriteria.departDate.getMonth() +1; 1591 var departDay = this.searchCriteria.departDate.getDate(); 1592 var departYear = this.searchCriteria.departDate.getFullYear(); 1593 departString = departMonth + '/' + departDay + '/' + departYear; 1594 datesString = '&arrive_date=' + arriveString + '&depart_date=' + departString; 1595 queryString += datesString; 1596 } 1597 // Loop over every other defined option 1598 for(var i = 0; i < this.searchCriteria.selectBoxes.length; i++) { 1599 var optionString = ''; 1600 if(this.searchCriteria.selectBoxes[i].selected) { 1601 optionString = '&' + this.searchCriteria.selectBoxes[i].label + '=' + this.searchCriteria.selectBoxes[i].selected; 1602 queryString += optionString; 1603 } 1604 } 1605 return encodeURI(queryString).replace(/[\/]/g, '%2F'); 1606 } 1607 }, 1608 methods: { 1609 newDates: function (dates) { 1610 this.searchCriteria.arriveDate = dates.arrive; 1611 this.searchCriteria.departDate = dates.depart; 1612 }, 1613 performSearch: function () { 1614 window.location.href = 'https://www.islandvacationproperties.com/vacation-rentals' + '/results/' + this.urlQuerystring; 1615 }, 1616 getWindowWidth: function(event) { 1617 this.windowWidth = window.innerWidth; 1618 }, 1619 }, 1620 mounted: function() { 1621 // Add a window-resize event listener 1622 window.addEventListener('resize', this.getWindowWidth); 1623 this.getWindowWidth(); 1624 }, 1625 beforeDestroy: function() { 1626 window.removeEventListener('resize', this.getWindowWidth); 1627 }, 1628 }); 1629 // register the components and mount the app 1630 rtQuickSearch.component('general-date-range-picker', generalCalendar); 1631 rtQuickSearch.component('datepick-inputs', rtDateInputs); 1632 rtQuickSearch.component('rt-modal', rtModal); 1633 rtQuickSearch.mount('#qsformroot'); 1634</script>
1634 1635 </div> 1636
1637<script> 1638 jQuery(".menu-item-has-children a").focus(function(){ 1639 jQuery(this).next(".sub-menu").addClass("focusSubmenu"); 1640 jQuery(this).closest('ul').find('li.menu-item-has-children > a').attr('aria-expanded', function (i, attr) { 1641 return attr == 'true' ? 'false' : 'true' 1642 }); 1643 }); 1644 jQuery("ul li:last-of-type").focusout(function(){ 1645 jQuery(this).closest(".sub-menu").removeClass("focusSubmenu"); 1646 jQuery(this).closest('.nav').find('li.menu-item-has-children > a').attr('aria-expanded', function (i, attr) { 1647 return attr == 'false' ? 'true' : 'false' 1648 }); 1649 }); 1650</script>
1650 <div class="content"> 1651 <div class="content-full contained"> 1652 <main role="main" aria-label="main content" id="post-112"> 1653 <div role="complementary" class="content-full"> 1654 <h1 class="page-title">About Island Vacation Properties</h1> 1655 </div> 1656 <article class="entry"> 1657 1658<h1 class="wp-block-heading">An Open Letter to the Owner Who Hasn’t Found Us Yet</h1> 1659 1660 1661 1662<p class="wp-block-paragraph"><em>Island Vacation Properties — Anna Maria Island</em></p> 1663 1664 1665 1666<p class="wp-block-paragraph">Maybe you bought your Anna Maria Island property at the height of the market and it hasn’t performed the way you hoped. Maybe you signed with a large management company because it felt like the safe choice — and now you can’t get anyone on the phone who has actually been to the island, let alone walked through your home. Maybe you’ve been through the storms, literally and figuratively, and you’re wondering if any of this is worth it.</p> 1667 1668 1669 1670<p class="wp-block-paragraph">I hear you. And I want you to know something: what you’re feeling is real, and it matters.</p> 1671 1672 1673 1674<p class="wp-block-paragraph">My name is Sara Annis, and I am the owner of Island Vacation Properties. I grew up just over the bridge from Anna Maria Island — spent my childhood and teenage years out here with friends, on the water, learning every corner of this place long before it was ever my career. This island has been part of my life for as long as I can remember.</p> 1675 1676 1677 1678<p class="wp-block-paragraph">I didn’t walk into this industry from a business school or a corporate office. I started cleaning vacation rentals on Anna Maria Island in my late teens and early twenties. I know what it takes to turn a home over properly. I know what guests notice when they walk through a door. I know what pride in a property actually looks like — because I’ve been on my hands and knees making sure it was right.</p> 1679 1680 1681 1682<p class="wp-block-paragraph">I was here when Island Vacation Properties opened its doors in July of 2000. Our founder, Ann Caron, built this company on a conviction that has never left us: that ethical behavior, genuine service, and trust could fill a void that desperately existed in property management on Anna Maria Island. She was right. I grew with this company, eventually becoming rental manager, and my husband Bill joined the team in 2013. When Ann retired in 2016, Bill and I bought IVP — not because it was a business opportunity, but because we believed in what she had built and were committed to carrying it forward.</p> 1683 1684 1685 1686<p class="wp-block-paragraph">I made a commitment when we took over that I’ve kept every day since: I will never ask anyone on my team to do something I haven’t done myself. That’s not a policy. That’s just who I am.</p> 1687 1688 1689 1690<p class="wp-block-paragraph">Today we manage 185 properties on Anna Maria Island. The market out here has grown and changed enormously — there are more companies, more platforms, more options than ever before. We have no interest in competing on size. What we are focused on, every single day, is the quality of the relationships we keep — with our owners, with our guests, and with this community.</p> 1691 1692 1693 1694<p class="wp-block-paragraph">And those relationships run deep. We still have owners today who followed Ann from her previous company over twenty years ago and have never left. That kind of loyalty doesn’t happen by accident. It happens because this has always been a relationship, not a transaction.</p> 1695 1696 1697 1698<p class="wp-block-paragraph">When Covid came, we didn’t let anyone go. When the hurricanes came, Bill and I rebuilt our office, cared for our properties, and did everything in our power to keep our entire team employed and our owners supported — through all of it. It was the hardest season of my professional life. But we showed up, because that’s what you do for the people who trust you.</p> 1699 1700 1701 1702<p class="wp-block-paragraph">Here at IVP, we believe in something simple: <em>we were expecting you.</em> Whether you are a guest arriving for a long-awaited family reunion, a couple celebrating something precious, or someone who just needs a few days to breathe — we think about your arrival before you get here. We want you to feel it the moment you walk through the door.</p> 1703 1704 1705 1706<p class="wp-block-paragraph">And for our owners, that same philosophy applies. We are not the right fit for everyone, and we say that with respect, not arrogance. We are built for owners who see this as a partnership — who trust us to care for their property the way they would, who value their guests’ experience as much as their revenue, and who want a management team that is here, on this island, invested in this community, and accountable to them by name.</p> 1707 1708 1709 1710<p class="wp-block-paragraph"><strong>If you’ve been treated like a number, we want to be your antidote.</strong></p> 1711 1712 1713 1714<p class="wp-block-paragraph">If you’re ready for a management relationship built on trust, transparency, and genuine care — for your property, your guests, and this island we all love — we’d be honored to talk.</p> 1715 1716 1717 1718<p class="wp-block-paragraph"><em>Sara & Bill Annis</em></p> 1719 1720 1721 1722<p class="wp-block-paragraph"><em>Island Vacation Properties</em></p> 1723 1724 1725 1726<p class="wp-block-paragraph"><em>Anna Maria Island</em></p> 1727 1728 1729 1730<p class="wp-block-paragraph"><strong><em>We’ve been here from the beginning. We’re not going anywhere.</em></strong></p> 1731 1732 1733 <div class="flex-container logo-bar" class="align wp-block-acf-logobar" style="background:#ffffff;"> 1734 <div class="logo-bar-logos contained"> 1735 <img decoding="async" width="226" height="91" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/09/logo-VRMA.jpg" class="attachment-small size-small" alt="logo-VRMA" /><img loading="lazy" decoding="async" width="250" height="107" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/09/logo-ManateeChamber.jpg" class="attachment-small size-small" alt="logo-ManateeChamber" /><img loading="lazy" decoding="async" width="500" height="500" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/09/chamber.jpg" class="attachment-small size-small" alt="chamber" srcset="https://www.islandvacationproperties.com/wp-content/uploads/2026/09/chamber.jpg 500w, https://www.islandvacationproperties.com/wp-content/uploads/2026/09/chamber-300x300.jpg 300w" sizes="auto, (max-width: 500px) 100v
1735w, 500px" /> </div> 1736 </div> 1737 </article> 1738 <div class="clear"></div> 1739 </main> 1740 </div> 1741 </div> 1742 <section aria-label="content above footer" role="complementary" class="ft-top white-text"><div class="above-footer-grid contained"><div class="above-footer-column"><div class="above-footer-block footer-block--logo"><img width="296" height="146" src="https://www.islandvacationproperties.com/wp-content/uploads/2026/09/whitelogo.png" class="rtfooterlogo" alt="Island Vacation Properties Logo" style="max-width:210px;" decoding="async" loading="lazy" /></div><div class="above-footer-block footer-block--contact"><div><strong>Island Vacation Properties</strong><br>3001 Gulf Drive<br />Holmes Beach, FL 34217<br><br><a href="tel:(941) 7781000">(941) 778-1000</a></div></div><div class="above-footer-block footer-block--social"><div class="above-footer-social-grid"><a href="https://www.facebook.com/islandvacationproperties/" target="_blank" rel="noopener" aria-label="opens in new window" title="Follow us on Facebook"><i role="presentation" class="rt-icon icon-facebook"></i></a></div></div></div><div class="above-footer-column"><div class="above-footer-block footer-block--menu"><div class="ft-column-title" role="heading" aria-level="4">Rental Links</div><div class="menu-footer-l-container"><ul id="menu-footer-l" class="menu"><li id="menu-item-139" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-139"><a href="https://www.islandvacationproperties.com/pool-properties/">Rentals With Pool</a></li><li id="menu-item-140" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-140"><a href="https://www.islandvacationproperties.com/long-weekend-rentals/">Weekend Vacation Rentals</a></li><li id="menu-item-158" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-158"><a href="https://www.islandvacationproperties.com/frequently-asked-questions/">FAQ</a></li><li id="menu-item-165" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-165"><a href="https://www.generalitravelinsurance.com/customer/coronavirus">Travel Insurance</a></li><li id="menu-item-5863" class="menu-item menu-item-type-post_type menu-item-object-rtc menu-item-5863"><a href="https://www.islandvacationproperties.com/vacation-rentals/terms-conditions/">Terms & Conditions</a></li><li id="menu-item-5204" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-5204"><a rel="privacy-policy" href="https://www.islandvacationproperties.com/privacy-policy/">Privacy Policy</a></li></ul></div></div></div><div class="above-footer-column"><div class="above-footer-block footer-block--menu"><div class="ft-column-title" role="heading" aria-level="4">Other Links</div><div class="menu-footer-r-container"><ul id="menu-footer-r" class="menu"><li id="menu-item-142" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-142"><a href="https://islandvacationproperties.idxbroker.com/idx/search/advanced">MLS Search</a></li><li id="menu-item-143" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-143"><a href="https://islandvacationproperties.idxbroker.com/idx/featured">Our Listings</a></li><li id="menu-item-144" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-144"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-buyer-resources/">Home Buying Tips</a></li><li id="menu-item-145" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-145"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-seller-resources/">Home Selling Tips</a></li><li id="menu-item-149" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-149"><a href="https://islandvacationproperties.idxbroker.com/idx/mortgage">Mortgage Calculator</a></li><li id="menu-item-228" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-228"><a href="https://www.islandvacationproperties.com/meet-our-sales-agents/">Meet Our Sales Agents</a></li></ul></div></div></div><div class="above-footer-column"><div class="above-footer-block footer-block--gravity-form"><div class="ft-column-title" role="heading" aria-level="4">Sign Up For Our Newsletter</div><div style="flex: 1 1 auto;"><div class='gf_browser_chrome gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_3' ><div id='gf_3' class='gform_anchor' tabindex='-1'></div><div class='gform_heading'><p class='gform_description'>Stay in the know. Get exclusive offers straight to your inbox:</p></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_3' id='gform_3'action='/about-island-vacation-properties/#gf_3' data-formid='3' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LeDap0tAAAAAH8QvJNFDOpBZOagZYajMX8m-Iiv' data-tabindex='0'><input id="input_758befbaf0db4f55f79edb12dec25966" class="gfield_recaptcha_response" type="hidden" name="input_758befbaf0db4f55f79edb12dec25966" value=""/></div><div class='gform-body gform_body'><ul id='gform_fields_3' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id="field_3_4" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible"><label class='gfield_label gform-field-label' for='input_3_4'><span class='gform-field-label__text'>Email</span></label><div class='ginput_container'><input name='input_4' id='input_3_4' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_3_4'>This field is for validation purposes and should be left unchanged.</div></li>
1742<li id="field_3_1" class="gfield gfield--type-email gfield--input-type-email newsletter-form-field gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible"><label class='gfield_label gform-field-label' for='input_3_1'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'><input name='input_1' id='input_3_1' type='email' value='' class='large' placeholder='Your Email Address' aria-required="true" aria-invalid="false"/></div></li><li id="field_3_3" class="gfield gfield--type-name gfield--input-type-name gfield--width-full gfield_contains_required field_sublabel_hidden_label gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible"><label class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Name</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_complex ginput_container ginput_container--name no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name gform-grid-row' id='input_3_3'><span id='input_3_3_3_container' class='name_first gform-grid-col gform-grid-col--size-auto' ><input type='text' name='input_3.3' id='input_3_3_3' value='' aria-required='true' placeholder='Your Name'/><label for='input_3_3_3' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>First</label></span></div></li></ul></div><div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_3' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Yes, Sign Me Up!</button> <input type='hidden' name='gform_ajax' value='form_id=3&title=&description=1&tabindex=0&theme=legacy&hash=d7aac58212932cf536521f9aa25fc1ec' /><input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_3' value='iframe' /><input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_3' id='gform_theme_3' value='legacy' /><input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_3' id='gform_style_settings_3' value='' /><input type='hidden' class='gform_hidden' name='is_submit_3' value='1' /><input type='hidden' class='gform_hidden' name='gform_submit' value='3' /><input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='ObwsY01Xm+UC2qgeo/pfF+i+Pw9cl5c/jCiuAM8Tz9nhHfr33gGYYGvudYicKZb1lxHPPxC989pVUVQdeliCbo5RXPSks9UAet4ewKqgWjqd6D0=' /><input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /><input type='hidden' class='gform_hidden' name='state_3' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjcxOTc2NzZjMzA4OWIyZjdlMTY0ZWRkMTJlZTY1ZmU1XCIsXCI0N2ExNDZlMGNiZDlhZWE4NjlhNGFjOGU2ZDgxMTIxYlwiLFwiMWEzY2I0YjUwYTNlNDVhOWQ2ZjI0NTUwZDllNWEzOTZcIl0sXCJnZm9ybV90aGVtZVwiOlwiYTIwNjE3MzljOTZiZDdjYjNmMTM3OWY3MTk1OTcxZjhcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCI4NTU1NWEwODIwNzY2OTgyNWEzMzlhNTMzYzkwNjAxNFwiLFwiZm9ybV9pZFwiOlwiNDI2YWY2ZWJjYzRmODYxMGM4NGYyNzhjZjFlMWUwODNcIixcInVybFwiOlwiNDM1MTQ2YzgzZTUxOWYzYjlhZTFlZmU0NDA2M2UyNjdcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiZTJlODAzMzU5NDRkNzkzNjQxNzYwOWNmNTVmMGZhMGFcIn0iLCJlMWY4ZTE2YTdlNGNhNTQ1N2Q5ZjE4YmI1YWUzZjA1ZiIsMTc5MTQ1NjkwOF0=' /><input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_3' id='gform_target_page_number_3' value='0' /><input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_3' id='gform_source_page_number_3' value='1' /><input type='hidden' name='gform_field_values' value='' /></div><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="132"/>
1742<script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script>
1742</p></form></div><iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_3' id='gform_ajax_frame_3' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe>
1742<script>gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_3').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_3');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_3').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_3').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_3').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_3').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_3').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_3').val();jQuery(document).trigger('gform_page_loaded', [3, current_page]);window['gf_submitting_3'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_3').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_3').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [3]);window['gf_submitting_3'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_3').text());}else{jQuery('#gform_3').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "3", currentPage: "current_page", abort: function() { this.preventDefault(); } }]);if (event && event.defaultPrevented) {return;}const gformWrapperDiv = document.getElementById( "gform_wrapper_3" );if ( gformWrapperDiv ) {const visibilitySpan = document.createElement( "span" );visibilitySpan.id = "gform_visibility_test_3";gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );}const visibilityTestDiv = document.getElementById( "gform_visibility_test_3" );let postRenderFired = false;function triggerPostRender() {if ( postRenderFired ) {return;}postRenderFired = true;gform.core.triggerPostRenderEvents( 3, current_page );if ( visibilityTestDiv ) {visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );}}function debounce( func, wait, immediate ) {var timeout;return function() {var context = this, args = arguments;var later = function() {timeout = null;if ( !immediate ) func.apply( context, args );};var callNow = immediate && !timeout;clearTimeout( timeout );timeout = setTimeout( later, wait );if ( callNow ) func.apply( context, args );};}const debouncedTriggerPostRender = debounce( function() {triggerPostRender();}, 200 );if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {const observer = new MutationObserver( ( mutations ) => {mutations.forEach( ( mutation ) => {if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {debouncedTriggerPostRender();observer.disconnect();}});});observer.observe( document.body, {attributes: true,childList: false,subtree: true,attributeFilter: [ 'style', 'class' ],});} else {triggerPostRender();}} );} );</script>
1742</div></div></div></div></section> <footer aria-label="footer" role="contentinfo" class="footer-wrap white-text"> 1743 <div class="footer contained"> 1744 <div class="footerleft">© Copyright 2026 Island Vacation Properties | <i>Anna Maria Island Vacation Rentals</i> <br><a href="https://www.islandvacationproperties.com/website-accessibility-policy/">Website Accessibility Policy</a> | <a href="https://www.islandvacationproperties.com/privacy-policy/">Privacy Policy</a> 1745 </div> 1746 <div class="footerright"><a href="//www.realtechvr.com" target="_blank" rel="nofollow noopener noreferrer" aria-label="opens in new window" title="Link for RealTech Webmasters"><i class="rt-icon icon-rt-circle-icon" aria-hidden="true"></i>Website Powered by RealTech Direct</a><br> 1747 This site is protected by reCAPTCHA and the Google 1748 <a href="https://policies.google.com/privacy">Privacy Policy</a> and 1749 <a href="https://policies.google.com/terms">Terms of Service</a> apply. 1750 </div> 1751 <div style="clear:both;"></div> 1752 <div class="footer-yapstone yapstone-terms">Powered by Yapstone Inc. | For disclosures and information about consumer complaints regarding your payments, please see: <a href="https://www.yapstone.com/legal-licenses/" target="_blank" rel="nofollow">https://www.yapstone.com/legal-licenses/</a></div> 1753 </div> 1754
1754<script src="https://cdn.userway.org/widget.js" data-account="WjewwfEzKf"></script>
1754 </footer> 1755 </div><!-- end .site-wrap --> 1756 </div> <!-- end content wrap --> 1757 1758 <div class="navclass nav"> 1759 <nav aria-label="Mobile Navigation" id="c-menu--push-left" class="c-menu c-menu--push-left"> 1760 <button class="c-menu__close">← Close Menu</button> 1761 <div id="nav-acc" class="menu-main-nav-container"><ul id="menu-main-nav-1" class="c-menu__items white-text"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-110"><a href="https://www.islandvacationproperties.com/vacation-rentals/results/?viewall" aria-haspopup="true" aria-expanded="false">Vacation Rentals</a><ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5865"><a href="https://www.islandvacationproperties.com/vacation-rentals/results/?viewall">View All Rentals</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-162"><a aria-haspopup="true" aria-expanded="false">Rentals By Amenity</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-691"><a href="https://www.islandvacationproperties.com/beachfront-rentals/">Beachfront</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-163"><a href="https://www.islandvacationproperties.com/pool-properties/">Rentals With Pool</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-189"><a href="https://www.islandvacationproperties.com/pet-friendly-rentals/">Pet Friendly</a></li> </ul></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-183"><a aria-haspopup="true" aria-expanded="false">Rentals By Community</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-186"><a href="https://www.islandvacationproperties.com/anna-maria-rentals/">City of Anna Maria</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-188"><a href="https://www.islandvacationproperties.com/holmes-beach-rentals/">Holmes Beach</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-187"><a href="https://www.islandvacationproperties.com/bradenton-beach-rentals/">Bradenton Beach</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-184"><a href="https://www.islandvacationproperties.com/main-land-rentals/">Mainland</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1179"><a href="https://www.islandvacationproperties.com/one-particular-harbour-rentals/">One Particular Harbour</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-295"><a href="https://www.islandvacationproperties.com/rentals-by-area/">All Rentals By Area</a></li> </ul></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-1672"><a aria-haspopup="true" aria-expanded="false">Rentals By Type</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1458"><a href="https://www.islandvacationproperties.com/house-rentals/">House Rentals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1673"><a href="https://www.islandvacationproperties.com/anna-maria-island-condo-rentals/">Condo Rentals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-164"><a href="https://www.islandvacationproperties.com/long-weekend-rentals/">Long Weekend Rentals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2147"><a href="https://www.islandvacationproperties.com/anna-maria-island-monthly-rentals/">Monthly Rentals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4944"><a href="https://www.islandvacationproperties.com/duplex-and-fourplex-rentals/">Multi Unit Properties</a></li> </ul></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-873"><a aria-haspopup="true" aria-expanded="false">Rentals by Bedroom</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-874"><a href="https://www.islandvacationproperties.com/1-bedroom-rentals/">1 Bedroom</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-951"><a href="https://www.islandvacationproperties.com/2-bedroom-rentals/">2 Bedroom</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1009"><a href="https://www.islandvacationproperties.com/three-bedroom-rentals/">3 Bedroom</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1455"><a href="https://www.islandvacationproperties.com/four-bedroom-rentals/">4 Bedroom</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1454"><a href="https://www.islandvacationproperties.com/five-bedroom-rentals/">5+ Bedroom</a></li> </ul></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-240"><a href="https://www.islandvacationproperties.com/featured-properties/">Featured AMI Vacation Rentals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4125"><a href="https://www.islandvacationproperties.com/specials/">Specials</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3654"><a href="https://www.islandvacationproperties.com/travel-insurance-information/">Travel Insurance Information</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-rtc menu-item-5751"><a href="https://www.islandvacationproperties.com/vacation-rentals/rentals-availability-calendar/">Availability Calendar</a></li></ul></li><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-111">
1761<a href="https://islandvacationproperties.idxbroker.com/idx/featured" aria-haspopup="true" aria-expanded="false">Real Estate Sales</a><ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-146"><a href="https://islandvacationproperties.idxbroker.com/idx/search/advanced">Search MLS</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-147"><a href="https://islandvacationproperties.idxbroker.com/idx/featured">Our Featured Listings</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-128"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-buyer-resources/">Home Buying Tips</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-129"><a href="https://www.islandvacationproperties.com/anna-maria-island-real-estate-seller-resources/">Home Selling Tips</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-148"><a href="https://islandvacationproperties.idxbroker.com/idx/mortgage">Mortgage Calculator</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-227"><a href="https://www.islandvacationproperties.com/meet-our-sales-agents/">Meet Our Sales Agents</a></li></ul></li><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-195"><a href="https://www.islandvacationproperties.com/property-management/" aria-haspopup="true" aria-expanded="false">Property Management</a><ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-106"><a href="https://www.islandvacationproperties.com/property-management/">List With IVP</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-260"><a target="_blank" rel="noopener noreferrer" href="https://owner.escapia.com/dist/index.html#/login">Owner Log-In</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-199"><a href="https://www.islandvacationproperties.com/contact-property-management/">Contact Property Management</a></li></ul></li><li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current-menu-ancestor current-menu-parent menu-item-has-children menu-item-119"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" aria-current="page" aria-haspopup="true" aria-expanded="false">About Us</a><ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-5207"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" aria-current="page">Our Story</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-220"><a href="https://www.islandvacationproperties.com/meet-our-team/">Meet Our Rentals Team</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-159"><a href="https://www.islandvacationproperties.com/frequently-asked-questions/">Frequently Asked Questions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-229"><a href="https://www.islandvacationproperties.com/driving-directions/">Driving Directions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-117"><a href="https://www.islandvacationproperties.com/contact/">Contact Us</a></li></ul></li><li class="last-link menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-120"><a href="https://www.islandvacationproperties.com/island-blog/" aria-haspopup="true" aria-expanded="false">Explore AMI</a><ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-107"><a href="https://www.islandvacationproperties.com/about-anna-maria-island/">Anna Maria Island History</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-108"><a href="https://www.islandvacationproperties.com/anna-maria-island-information/">City of Anna Maria</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-122"><a target="_blank" href="/wp-content/uploads/2019/12/trolley-map.pdf">Free Trolley Map</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4228"><a href="https://www.islandvacationproperties.com/island-blog/">Our Blog</a></li></ul></li></ul></div> </nav> 1762 </div> <!-- end div #nav --> 1763 <div style="clear:both;"></div> 1764 <div id="content-mask" class="content-mask"></div><!-- /content-mask --> 1765
1765<script type="speculationrules"> 1766{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/rtapi/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1767</script>
1767 1768<div 1769 id="pum-4776" 1770 role="dialog" 1771 aria-modal="false" 1772 aria-labelledby="pum_popup_title_4776" 1773 class="pum pum-overlay pum-theme-823 pum-theme-default-theme popmake-overlay pum-overlay-disabled auto_open click_open" 1774 data-popmake="{"id":4776,"slug":"newsletter-sign-up","theme_id":823,"cookies":[{"event":"on_popup_close","settings":{"name":"pum-4776","key":"","session":false,"path":"1","time":"1 month"}}],"triggers":[{"type":"auto_open","settings":{"cookie_name":["pum-4776"],"delay":"10000"}},{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":"1","overlay_disabled":"1","scrollable_content":false,"disable_reposition":false,"size":"small","responsive_min_width":"300px","responsive_min_width_unit":false,"responsive_max_width":"400px","responsive_max_width_unit":false,"custom_width":"300px","custom_width_unit":false,"custom_height":"px","custom_height_unit":false,"custom_height_auto":"1","location":"right bottom","position_from_trigger":false,"position_top":"100","position_left":"0","position_bottom":"10","position_right":"10","position_fixed":"1","animation_type":"slide","animation_speed":"350","animation_origin":"bottom","overlay_zindex":false,"zindex":"1999999999"},"close":{"text":"x","button_delay":"0","overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> 1775 1776 <div id="popmake-4776" class="pum-container popmake theme-823 pum-responsive pum-responsive-small responsive size-small pum-position-fixed"> 1777 1778 1779 <div id="pum_popup_title_4776" class="pum-title popmake-title"> 1780 Newsletter Sign Up </div> 1781 1782 1783 <div class="pum-content popmake-content" tabindex="0"> 1784 1785 <div class='gf_browser_chrome gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_10' ><div id='gf_10' class='gform_anchor' tabindex='-1'></div> 1786 <div class='gform_heading'> 1787 <p class='gform_description'>Stay in the know. Get exclusive offers straight to your inbox:</p> 1788 </div><form method='post' enctype='multipart/form-data' id='gform_10' action='/about-island-vacation-properties/#gf_10' data-formid='10' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LeDap0tAAAAAH8QvJNFDOpBZOagZYajMX8m-Iiv' data-tabindex='0'><input id="input_42285b71e9989e0d1c1db7eeb502e71f" class="gfield_recaptcha_response" type="hidden" name="input_42285b71e9989e0d1c1db7eeb502e71f" value=""/></div> 1789 <div class='gform-body gform_body'><ul id='gform_fields_10' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id="field_10_4" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_10_4'><span class='gform-field-label__text'>URL</span></label><div class='ginput_container'><input name='input_4' id='input_10_4' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_10_4'>This field is for validation purposes and should be left unchanged.</div></li>
1789<li id="field_10_1" class="gfield gfield--type-email gfield--input-type-email newsletter-form-field gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_10_1'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> 1790 <input name='input_1' id='input_10_1' type='email' value='' class='large' placeholder='Your Email Address' aria-required="true" aria-invalid="false" /> 1791 </div></li><li id="field_10_3" class="gfield gfield--type-name gfield--input-type-name gfield--width-full field_sublabel_hidden_label gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Name</span></label><div class='ginput_complex ginput_container ginput_container--name no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name gform-grid-row' id='input_10_3'> 1792 1793 <span id='input_10_3_3_container' class='name_first gform-grid-col gform-grid-col--size-auto' > 1794 <input type='text' name='input_3.3' id='input_10_3_3' value='' aria-required='false' placeholder='Your Name' /> 1795 <label for='input_10_3_3' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>First</label> 1796 </span> 1797 1798 1799 1800 </div></li></ul></div> 1801 <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_10' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Yes, Sign Me Up!</button> 1802 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_10' value='postback' /> 1803 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_10' id='gform_theme_10' value='legacy' /> 1804 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_10' id='gform_style_settings_10' value='[]' /> 1805 <input type='hidden' class='gform_hidden' name='is_submit_10' value='1' /> 1806 <input type='hidden' class='gform_hidden' name='gform_submit' value='10' /> 1807 1808 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='M9uSgLOrCB55sWtb46KlolZL+5/VQ2N2wn8wQ/CJEUDPL6LdL3ZnPFSccvyEol6TRdSz4HBYN232tgDzKvLhSrPHWlp6ey+GEmOweUgrYb+2Wzo=' /> 1809 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 1810 <input type='hidden' class='gform_hidden' name='state_10' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjcxOTc2NzZjMzA4OWIyZjdlMTY0ZWRkMTJlZTY1ZmU1XCIsXCI0N2ExNDZlMGNiZDlhZWE4NjlhNGFjOGU2ZDgxMTIxYlwiXSxcImdmb3JtX3RoZW1lXCI6XCJhMjA2MTczOWM5NmJkN2NiM2YxMzc5ZjcxOTU5NzFmOFwiLFwiZ2Zvcm1fc3R5bGVfc2V0dGluZ3NcIjpcImQ3MGU5ODhmOTY2ZjlhNDBkMzdhZGQyODY1ZTc4ZTBhXCIsXCJmb3JtX2lkXCI6XCJhZGE2N2NkNDU2OThlNDQxMmNhNDEwMDAwNDk2Y2M3N1wiLFwidXJsXCI6XCI0MzUxNDZjODNlNTE5ZjNiOWFlMWVmZTQ0MDYzZTI2N1wiLFwic3RhdGVfdGltZXN0YW1wXCI6XCJlMmU4MDMzNTk0NGQ3OTM2NDE3NjA5Y2Y1NWYwZmEwYVwifSIsIjU2YjE4YjAyY2E1NTk4NGFlOTExZDBmMDEzNDQyZjUzIiwxNzkxNDU2OTA4XQ==' /> 1811 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_10' id='gform_target_page_number_10' value='0' /> 1812 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_10' id='gform_source_page_number_10' value='1' /> 1813 <input type='hidden' name='gform_field_values' value='' /> 1814 1815 </div> 1816 <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="150"/>
1816<script> 1817document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); 1818</script>
1818 1819</p></form> 1820 </div> 1821 </div> 1822 1823 1824 <button type="button" class="pum-close popmake-close" aria-label="Close"> 1825 x </button> 1826 1827 </div> 1828 1829</div>
1830<script id="menu-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/menu.js?ver=1.0"></script>
vendor: 1 bytes, line 1830
1830
1831<script id="shrinkhead-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/shrinkhead.js?ver=1.0"></script>
vendor: 1 bytes, line 1831
1831
1832<script id="focus-visible-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/focus-visible.js?ver=5.1.0"></script>
vendor: 1 bytes, line 1832
1832
1833<script id="gforms_recaptcha_recaptcha-js-extra"> 1834var gforms_recaptcha_recaptcha_strings = {"nonce":"51bc720e2c","disconnect":"Disconnecting","change_connection_type":"Resetting","spinner":"https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/images/spinner.svg","connection_type":"classic","disable_badge":"1","change_connection_type_title":"Change Connection Type","change_connection_type_message":"Changing the connection type will delete your current settings. Do you want to proceed?","disconnect_title":"Disconnect","disconnect_message":"Disconnecting from reCAPTCHA will delete your current settings. Do you want to proceed?","site_key":"6LeDap0tAAAAAH8QvJNFDOpBZOagZYajMX8m-Iiv"}; 1835//# sourceURL=gforms_recaptcha_recaptcha-js-extra 1836</script>
vendor: 127 bytes, lines 1836-1837
1836 1837<script data-wp-strategy="defer" defer id="gforms_recaptcha_recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=
18376LeDap0tAAAAAH8QvJNFDOpBZOagZYajMX8m-Iiv
vendor: 27 bytes, line 1837
1837&ver=2.2.2"></script>
1838<script data-wp-strategy="defer" defer id="gforms_recaptcha_frontend-js" src="https://www.islandvacationproperties.com/wp-content/plugins/gravityformsrecaptcha/js/frontend.min.js?ver=2.2.2"></script>
vendor: 1 bytes, line 1838
1838
1839<script id="gform_placeholder-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 1839
1839
1840<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=0c901cb641ce64b99c20ea1a4d208cc9"></script>
vendor: 1 bytes, line 1840
1840
1841<script id="gform_gravityforms_theme-js-extra"> 1842var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"19dbec403806d76761dede907ba49b18"},"ajax":{"ajaxurl":"https://www.islandvacationproperties.com/wp-admin/admin-ajax.php","ajax_submission_nonce":"7bb29140b0","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again.","error_403":"The request was blocked (403 error) for unknown security reasons. Remove any code-like text (scripts or DB queries) and try again."}}}},"hmr_dev":"","public_path":"https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"114f76e95b"}; 1843//# sourceURL=gform_gravityforms_theme-js-extra 1844</script>
vendor: 1 bytes, line 1844
1844
1845<script id="gform_gravityforms_theme-js" defer='defer' src="https://www.islandvacationproperties.com/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=e27d9712159624c99129c8c208f022ad"></script>
vendor: 1 bytes, line 1845
1845
1846<script defer id="akismet-frontend-js" src="https://www.islandvacationproperties.com/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1787933035"></script>
vendor: 1 bytes, line 1846
1846
1847<script id="popup-maker-site-js-extra"> 1848var pum_vars = {"version":"1.25.0","pm_dir_url":"https://www.islandvacationproperties.com/wp-content/plugins/popup-maker/","ajaxurl":"https://www.islandvacationproperties.com/wp-admin/admin-ajax.php","restapi":"https://www.islandvacationproperties.com/wp-json/pum/v1","rest_nonce":null,"default_theme":"823","debug_mode":"","disable_tracking":"","disable_url_params":"","home_url":"/","message_position":"top","core_sub_forms_enabled":"1","popups":[],"cookie_domain":"","paramNames":{"popup_id":"pid","cta":"cta","notrack":"notrack"},"analytics_enabled":"1","analytics_route":"analytics","analytics_api":"https://www.islandvacationproperties.com/wp-json/pum/v1"}; 1849var pum_sub_vars = {"ajaxurl":"https://www.islandvacationproperties.com/wp-admin/admin-ajax.php","message_position":"top"}; 1850var pum_popups = {"pum-4776":{"triggers":[{"type":"auto_open","settings":{"cookie_name":["pum-4776"],"delay":"10000"}}],"cookies":[{"event":"on_popup_close","settings":{"name":"pum-4776","key":"","session":false,"path":"1","time":"1 month"}}],"disable_on_mobile":false,"disable_on_tablet":false,"explain":null,"type_section":null,"theme_id":"823","size":"small","responsive_min_width":"300px","responsive_max_width":"400px","custom_width":"300px","custom_height_auto":true,"custom_height":"px","scrollable_content":false,"animation_type":"slide","animation_speed":"350","animation_origin":"bottom","open_sound":"none","custom_sound":"","location":"right bottom","position_top":"100","position_bottom":"10","position_left":"0","position_right":"10","position_from_trigger":false,"position_fixed":true,"overlay_disabled":true,"stackable":true,"disable_reposition":false,"zindex":"1999999999","close_button_delay":"0","close_on_form_submission":false,"close_on_form_submission_delay":"0","close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"default-theme","id":4776,"slug":"newsletter-sign-up"}}; 1851//# sourceURL=popup-maker-site-js-extra 1852</script>
vendor: 1 bytes, line 1852
1852
1853<script id="popup-maker-site-js" src="//www.islandvacationproperties.com/wp-content/uploads/pum/pum-site-scripts.js?defer&generated=1787948090&ver=1.25.0"></script>
vendor: 1 bytes, line 1853
1853
1854<script id="wp-emoji-settings" type="application/json"> 1855{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.islandvacationproperties.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.3"}} 1856</script>
vendor: 1 bytes, line 1856
1856
1857<script type="module"> 1858/*! This file is auto-generated */ 1859var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 1860//# sourceURL=https://www.islandvacationproperties.com/wp-includes/js/wp-emoji-loader.min.js 1861</script>
vendor: 1 bytes, line 1861
1861
1862<script> 1863gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 10) {if(typeof Placeholders != 'undefined'){ 1864 Placeholders.enable(); 1865 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1866</script>
vendor: 1 bytes, line 1866
1866
1867<script> 1868gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "10", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_10" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_10"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_10" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 10, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 1869</script>
vendor: 1 bytes, line 1869
1869
1870<script> 1871gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 3) {if(typeof Placeholders != 'undefined'){ 1872 Placeholders.enable(); 1873 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1874</script>
vendor: 1 bytes, line 1874
1874
1875<script> 1876gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "3", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_3" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_3"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_3" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 3, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 1877</script>
1877 1878 1879 </body> 1880</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.