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>Island Vacation Properties Blog | Island Vacation Properties</title> 16 17 <!-- All in One SEO Pro 5.0.2 - aioseo.com --> 18 <meta name="description" content="Enjoy our blog which is packed full of information on Anna Maria's best restaurants, activities, and events. There is something for the whole family." /> 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/island-blog/" /> 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="Island Vacation Properties Blog | Island Vacation Properties" /> 26 <meta property="og:description" content="Enjoy our blog which is packed full of information on Anna Maria's best restaurants, activities, and events. There is something for the whole family." /> 27 <meta property="og:url" content="https://www.islandvacationproperties.com/island-blog/" /> 28 <meta property="og:image" content="https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities.jpg" /> 29 <meta property="og:image:secure_url" content="https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities.jpg" /> 30 <meta property="og:image:width" content="1400" /> 31 <meta property="og:image:height" content="852" /> 32 <meta property="article:published_time" content="2020-01-24T02:10:04+00:00" /> 33 <meta property="article:modified_time" content="2026-09-16T13:36:27+00:00" /> 34 <meta property="article:publisher" content="https://www.facebook.com/islandvacationproperties/" /> 35 <meta name="twitter:card" content="summary" /> 36 <meta name="twitter:title" content="Island Vacation Properties Blog | Island Vacation Properties" /> 37 <meta name="twitter:description" content="Enjoy our blog which is packed full of information on Anna Maria's best restaurants, activities, and events. There is something for the whole family." /> 38 <meta name="twitter:image" content="https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities.jpg" /> 39
39<script type="application/ld+json" class="aioseo-schema"> 40 {"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.islandvacationproperties.com\/island-blog\/#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\/island-blog\/#listItem","name":"Island Blog"}},{"@type":"ListItem","@id":"https:\/\/www.islandvacationproperties.com\/island-blog\/#listItem","position":2,"name":"Island Blog","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\/island-blog\/#organizationLogo","width":367,"height":200,"caption":"ivp logo"},"image":{"@id":"https:\/\/www.islandvacationproperties.com\/island-blog\/#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\/island-blog\/#webpage","url":"https:\/\/www.islandvacationproperties.com\/island-blog\/","name":"Island Vacation Properties Blog | Island Vacation Properties","description":"Enjoy our blog which is packed full of information on Anna Maria's best restaurants, activities, and events. There is something for the whole family.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.islandvacationproperties.com\/#website"},"breadcrumb":{"@id":"https:\/\/www.islandvacationproperties.com\/island-blog\/#breadcrumblist"},"datePublished":"2020-01-23T21:10:04-05:00","dateModified":"2026-09-16T09:36:27-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"}}]} 41 </script>
41 42 <!-- All in One SEO Pro --> 43 44<link rel='dns-prefetch' href='//www.google.com' /> 45<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%2Fisland-blog%2F" /> 46<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%2Fisland-blog%2F&format=xml" /> 47<style id="wp-img-auto-sizes-contain-inline-css"> 48img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 49/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 50</style> 51<style id="wp-emoji-styles-inline-css"> 52 53 img.wp-smiley, img.emoji { 54 display: inline !important; 55 border: none !important; 56 box-shadow: none !important; 57 height: 1em !important; 58 width: 1em !important; 59 margin: 0 0.07em !important; 60 vertical-align: -0.1em !important; 61 background: none !important; 62 padding: 0 !important; 63 } 64/*# sourceURL=wp-emoji-styles-inline-css */ 65</style> 66<style id="wp-block-library-inline-css"> 67: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;
67--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}} 68 69/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 70</style> 71 72<style id="global-styles-inline-css"> 73: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,
730) 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 >
73 :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;}
73.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;} 74/*# sourceURL=global-styles-inline-css */ 75</style> 76 77<link rel='stylesheet' id='normalize-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/css/normalize.css?ver=7.1.3' media='all' /> 78<link rel='stylesheet' id='icons-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/material-icons.css?ver=7.1.3' media='all' /> 79<link rel='stylesheet' id='core-css' href='https://www.islandvacationproperties.com/wp-content/themes/rtapi/style.css?ver=1791205626' media='' /> 80<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' /> 81<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' /> 82<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' /> 83<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' /> 84<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' />
85<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 85
85
86<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 86
86
87<script id="jquery-ui-core-js-before"> 88jQuery.uiBackCompat = true; 89jQuery.uiBackCompat = true; 90//# sourceURL=jquery-ui-core-js-before 91</script>
vendor: 1 bytes, line 91
91
92<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 92
92
93<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 93
93
94<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 94
94
95<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 95
95
96<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 96
96
97<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 97
97
98<script id="wp-hooks-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 98
98
99<script id="wp-i18n-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 99
99
100<script id="wp-i18n-js-after"> 101wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 102wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 103//# sourceURL=wp-i18n-js-after 104</script>
vendor: 1 bytes, line 104
104
105<script id="wp-a11y-js" src="https://www.islandvacationproperties.com/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 105
105
106<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 106
106
107<script id="rtc-acf-fixer-js-extra"> 108var rtwpVars = {"theme_url":"https://www.islandvacationproperties.com/wp-content/themes/rtapi"}; 109//# sourceURL=rtc-acf-fixer-js-extra 110</script>
vendor: 1 bytes, line 110
110
111<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 111
111
112<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 112
112
113<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 113
113
114<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 114
114
115<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 115
115
116<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 116
116
117<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 117
117
118<script id="gform_gravityforms-js-extra"> 119var 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."}}; 120var 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"}]}}; 121var gf_legacy_multi = {"10":"1"};
122var 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"}}; 123//# sourceURL=gform_gravityforms-js-extra 124</script>
vendor: 1 bytes, line 124
124
125<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 125
125
126<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>
126 127<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/556" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.islandvacationproperties.com/xmlrpc.php?rsd" /> 128<meta name="generator" content="WordPress 7.1.3" /> 129<link rel='shortlink' href='https://www.islandvacationproperties.com/?p=556' /> 130<link rel="icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" sizes="32x32" /> 131<link rel="icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" sizes="192x192" /> 132<link rel="apple-touch-icon" href="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" /> 133<meta name="msapplication-TileImage" content="https://www.islandvacationproperties.com/wp-content/uploads/2026/08/favicon.jpg" /> 134 <!-- Google Tag Manager -->
135<script>
vendor: 359 bytes, lines 135-139
135(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 136 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 137 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 138 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 139 })(window,document,'script','dataLayer','
139GTM-KDN4RC6
vendor: 3 bytes, line 139
139');
139</script>
139 140<!-- End Google Tag Manager --> 141 <link href="https://fonts.googleapis.com/css2?family=Marcellus:wght@400&family=Cabin:wght@400;500;600;700&display=fallback" rel="stylesheet"> 142<style> 143 :root { 144 --primary: #f4dd56; 145 --primary-text: #333333; 146 --secondary: #f4dd56; 147 --secondary-text: #00437c; 148 --above-footer: #737578; 149 --footer: #000000; 150 --menu: #03437c; 151 --menu-hover: #21619a; 152 --qs-color: #00437c; 153 --heading-color: #00437c; 154 --splash-medium: rgb(204,227,227); 155 --splash-extra-light: rgb(247,250,250); 156 --splash-light: rgb(238,246,246); 157 --splash-dark: rgb(51,141,145); 158 --splash-extra-dark: rgb(-43,89,94); 159 --tone-extra-light: color-mix(in srgb, rgb(247,250,250) 55%, #f4f4f4); 160 --tone-light: color-mix(in srgb, rgb(247,250,250) 75%, #eee); 161 --heading-font-family: "Marcellus", sans-serif; 162 --body-font-family: "Cabin", sans-serif; 163 --heading-weight: 400; 164 --subheading-weight: 400; 165 --body-weight: 400; 166 --h-scale: 1.35rem; 167 --h-vw: 1.1vw; 168 --b-scale: 1.25rem; 169 --fluid-heading: calc(var(--h-scale) + var(--h-vw)); 170 --fluid-body: calc(var(--b-scale)); 171 } 172 head, body { 173 font-family: var(--body-font-family) !important; 174 font-size: var(--fluid-body) !important; 175 font-weight: var(--body-weight) !important; 176 } 177 h1, h2.page-title, .page-title, .page-title h1, .page-title h2, .page-title h3 { 178 font-family: var(--heading-font-family) !important; 179 font-weight: var(--heading-weight) !important; 180 } 181 h1, .page-title h1, .page-title h2, .cta-wrapper h2.page-title { 182 font-size: var(--fluid-heading) !important; 183 } 184 h2, h3 { 185 font-weight: var(--subheading-weight) !important; 186 } 187 </style> </head> 188<body class="wp-singular page-template-default page page-id-556 wp-theme-rtapi"> 189 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 189-190
189 190<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
190GTM-KDN4RC6
vendor: 83 bytes, line 190
190" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
191<!-- End Google Tag Manager (noscript) --> 192 <div id="content-wrap" class="content-wrap"> 193 <div class="site-wrap"> 194 <div class="header-main-wrapper classic"> 195 <a role="link" class="sr-only" href="#post-556">Skip to main content</a> 196 <header id="header" role="banner" class="classic" aria-label="banner"> 197 <div class="header-wrap"> 198 <div class="header contained"> 199 <div class="logo"> 200 <a id="rt-logo-anchor" href="https://www.islandvacationproperties.com/"> 201 <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> 202 </div> 203 <button id="toggle" role='button' aria-label="Mobile Navigation Trigger" class="open-button toggle-spot white-text"> 204 <div class="toggle-spot"> 205 <span></span> 206 </div> 207 </button> 208 <div class="headerright"> 209 <div class="headerright-top"> 210 <div style="position:relative; cursor: pointer;" id="my-rentals-header"> 211 <div v-if="displayMyRentalsHeader"> 212 <a href="https://www.islandvacationproperties.com/vacation-rentals/results/?myrentals" title="View Favorite Rentals" style="gap: 2px;" aria-label="View favorite Rentals"> 213 <i class="rt-google-icon heart" :class="{'filled-symbol': favoritesCount }" aria-hidden="true"></i> 214 <span v-if="favoritesCount" class="filter-ticker">{{favoritesCount}}</span> 215 <span class="nomobile">My Rentals</span> 216 </a> 217 </div> 218</div> 219
220<script> 221 const { useStorage } = VueUse; 222 const sanitizeRtFavorited = function (raw) { 223 const clean = { 224 favorites: [], 225 recently_viewed: [], 226 date_history: [], 227 check_history: [], 228 select_history: [], 229 sort_order: { 230 field: "", 231 direction: "", 232 }, 233 version: 1, 234 }; 235 236 // Check data types and clean unapproved types 237 const isValidId = (v) => typeof v === 'string' && v.length > 0; 238 239 if (Array.isArray(raw.favorites)) { 240 clean.favorites = [...new Set(raw.favorites.filter(isValidId))].slice(0, 100); 241 } 242 if (Array.isArray(raw.recently_viewed)) { 243 clean.recently_viewed = [...new Set(raw.recently_viewed.filter(isValidId))].slice(0, 10); 244 } 245 246 if (Array.isArray(raw.date_history)) { 247 clean.date_history = raw.date_history 248 .filter(d => d && !isNaN(Date.parse(d.arrive)) && !isNaN(Date.parse(d.depart)) && new Date(d.depart) > new Date(d.arrive)) 249 .map(d => ({ arrive: d.arrive, depart: d.depart, latest_search: !!d.latest_search })) 250 .slice(0, 3); 251 } 252 if (Array.isArray(raw.check_history)) { 253 clean.check_history = raw.check_history 254 .filter(c => c && typeof c.label === 'string' && c.latest_search === true) 255 .map(c => ({ label: c.label, latest_search: true })); 256 } 257 if (Array.isArray(raw.select_history)) { 258 clean.select_history = raw.select_history 259 .filter(s => s && typeof s.label === 'string' && typeof s.value === 'string' && s.latest_search === true) 260 .map(s => ({ label: s.label, value: s.value, latest_search: true })); 261 } 262 263 // Preserve the sort_order if it exists in the raw local storage 264 if (raw.sort_order && typeof raw.sort_order === 'object') { 265 const field = typeof raw.sort_order.field === 'string' ? raw.sort_order.field : ""; 266 const direction = typeof raw.sort_order.direction === 'string' ? raw.sort_order.direction : ""; 267 const validDirections = ['asc', 'desc']; 268 269 if (field && validDirections.includes(direction)) { 270 clean.sort_order = {field, direction}; 271 } 272 // else: leave clean.sort_order at its default {field: "", direction: ""} 273 } 274 275 return clean; 276 } 277 278 const rtFavorited = useStorage('rt-favorited', { 279 favorites: [], 280 recently_viewed: [], 281 date_history: [], 282 check_history: [], 283 select_history: [], 284 sort_order: { 285 field: "", 286 direction: "", 287 }, 288 version: 1, 289 }); 290 291 rtFavorited.value = sanitizeRtFavorited(rtFavorited.value); 292 293 294 const myRentalsHeaderApp = Vue.createApp({ 295 // hand the app the global ref 296 setup() { 297 return { unitsFavorite: rtFavorited }; 298 }, 299 data() { 300 return { 301 displayMyRentalsHeader: true, 302 localStorageClean: false, 303 } 304 }, 305 computed: { 306 favoritesCount: function () { 307 if (this.unitsFavorite.favorites && this.unitsFavorite.favorites.length > 0) { 308 return this.unitsFavorite.favorites.length; 309 } else { 310 return 0; 311 } 312 }, 313 }, 314 methods: { 315 cleanseStorage: function() { 316 var appRoot = this; 317 318 axios.post('https://www.islandvacationproperties.com/vacation-rentals' + '/router/', { 319 call: 'cleanseFavorites', 320 store: appRoot.unitsFavorite, 321 }) 322 .then(function (response) { 323 appRoot.localStorageClean = true; 324 325 const validFavorites = response.data.favorites || []; 326 const validRecent = response.data.recently_viewed || []; 327 328 appRoot.unitsFavorite.favorites = appRoot.unitsFavorite.favorites.filter(id => validFavorites.includes(id)); 329 appRoot.unitsFavorite.recently_viewed = appRoot.unitsFavorite.recently_viewed.filter(id => validRecent.includes(id)); 330 331 appRoot.unitsFavorite.check_history = response.data.check_history || appRoot.unitsFavorite.check_history; 332 appRoot.unitsFavorite.select_history = response.data.select_history || appRoot.unitsFavorite.select_history; 333 }) 334 .catch(function (error) { 335 console.log(error); 336 }); 337 }, 338 }, 339 mounted: function() { 340 const hasData = this.unitsFavorite.favorites.length 341 || this.unitsFavorite.recently_viewed.length 342 || this.unitsFavorite.check_history.length 343 || this.unitsFavorite.select_history.length; 344 345 if (!this.localStorageClean && hasData) { 346 this.cleanseStorage(); 347 } 348 }, 349 }); 350 351 myRentalsHeaderApp.mount('#my-rentals-header'); 352</script>
352 <a class="headerright-top-tel" href="tel:(941) 7781000"> 353 <i class="rt-google-icon phone" aria-hidden="true"></i> 354 <span>(941) 778-1000 </span> 355 </a> 356 </div> 357 <nav class="navclass nav classic"> 358 <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">
358<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 menu-item-has-children menu-item-119"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" 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 menu-item-5207"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/">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 current-menu-item current-menu-ancestor current-menu-parent menu-item-has-children menu-item-120"><a href="https://www.islandvacationproperties.com/island-blog/" aria-current="page" 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 current-menu-item page_item page-item-556 current_page_item menu-item-4228"><a href="https://www.islandvacationproperties.com/island-blog/" aria-current="page">Our Blog</a></li></ul></li></ul> </nav> 359 </div> 360 </div> 361 </div> 362 </header> 363 <figure class="hero" role="complementary" aria-label="hero image"> 364 <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
364w, 1920px" /> </figure> 365 <div class="qswrap classic"> 366 <div class="qscenter"> 367 <div id="qsformroot"> 368 <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"> 369 <datepick-inputs 370 v-on:update-dates="newDates" 371 ></datepick-inputs> 372 <div v-for="(select,index) in searchCriteria.selectBoxes" class="select-wrap" :key="'select-id-'+index"> 373 <div class="select-container"> 374 <label :for="'select-'+index" class="hidden-label">{{select.label}}</label> 375 <select :id="'select-'+index" v-model="select.selected"> 376 <option value="">{{select.label}}</option> 377 <option v-for="(option,index) in select.options" :value="option.value" :key="select.input+'-option'+index">{{option.name}}</option> 378 </select> 379 </div> 380 </div> 381 <button class="button" @click="performSearch" @keydown.enter="performSearch" key="performSearch" aria-label="Go to the search results for the selected criteria.">Search</button> 382 </form> 383 </div> 384 <div id="property-search-instance"> 385 <propertysearch></propertysearch> 386</div> 387 388<template id="rt-searchbox"> 389 <div v-click-outside="outsideClick" class="property-searchbox-wrap"> 390 <form aria-label="Search for specific properties by filtering as you type."> 391 <div class="input-wrap"> 392 <input :value="query" 393 @input="query = $event.target.value" 394 @focus="openDropdown()" 395 @click="openDropdown()" 396 @enter.prevent="toggleDropdown()" 397 placeholder="Jump to a Property" 398 autocomplete="off" 399 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." 400 > 401 <i role="presentation" class="rt-google-icon search"></i> 402 </div> 403 <transition-group v-if="active" name="fade" tag="ul" mode="out-in"> 404 <li v-for="(item, index) in computedList" 405 v-bind:key="item.option" 406 v-bind:data-index="index" 407 ><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> 408 </transition-group> 409 </form> 410 </div> 411</template>
412<script> 413 const rtpropsearchbox = { 414 template: '#rt-searchbox', 415 props: { 416 }, 417 data: function() { 418 return { 419 active: false, 420 query: '', 421 hasFocus: false, 422 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"}
422,{"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"}
422,{"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"}], 423 } 424 }, 425 computed: { 426 list: function() { 427 var propsArray = new Array(); 428 this.units.forEach(function(prop) { 429 var propIndex = prop.prop_number.replace(/\s/g,''); 430 propsArray.push({propName:propIndex, option: prop.prop_name}); 431 }); 432 return propsArray; 433 }, 434 computedList: function () { 435 var vm = this; 436 return this.list.filter(function (item) { 437 return item.option.toLowerCase().indexOf(vm.query.toLowerCase()) !== -1; 438 }) 439 }, 440 }, 441 methods: { 442 makeSelection: function(option) { 443 this.closeDropdown(); 444 this.$emit('smartselect', option.value); 445 }, 446 openDropdown: function () { 447 this.active = true; 448 }, 449 closeDropdown: function() { 450 this.active = false; 451 }, 452 outsideClick: function(e) { 453 // Close the calendar when clicking outside 454 this.closeDropdown(); 455 }, 456 toggleDropdown: function() { 457 if(this.active) { 458 this.active = false; 459 } else { 460 this.active = true; 461 } 462 }, 463 toggle: function () { 464 if(this.hasFocus == false) { 465 this.hasFocus = true; 466 } else { 467 this.hasFocus = false;
468 } 469 470 }, 471 getYpos: function () { 472 var qsForm = this.$refs.quicksearchForm; 473 var qsFormYpos = qsForm.getBoundingClientRect().y; 474 if(qsFormYpos > 425) { 475 this.popupTopAlign = true; 476 } else { 477 this.popupTopAlign = false; 478 } 479 } 480 }, 481 directives: { 482 'click-outside': { 483 mounted(el, binding, vnode) { 484 el.clickOutsideEvent = function(event) { 485 if (!(el === event.target || el.contains(event.target))) { 486 binding.value(event, el); 487 } 488 }; 489 document.body.addEventListener('click', el.clickOutsideEvent); 490 }, 491 unmounted(el) { 492 document.body.removeEventListener('click', el.clickOutsideEvent); 493 } 494 }, 495 }, 496 }; 497 // register the components and mount the app 498 const rtPropSearch = Vue.createApp({}); 499 rtPropSearch.component('propertysearch', rtpropsearchbox); 500 rtPropSearch.mount('#property-search-instance'); 501</script>
501 502 </div> 503</div> 504 505<template id="general-calendar"> 506 <div class="calendar" @mouseleave="leaveCalendar($event)" :class="[{arriveballoon: calendarVisible && !arriveDate && ! departDate},{departballoon: calendarVisible && arriveDate && ! departDate}]"> 507 <div class="month-wrap"> 508 <div class="header"> 509 <i class="arrow rt-google-icon left-chevron" :class="{nonav: (monthIndex <= currentMonth && year == currentYear)}" @click="movePreviousMonth"></i> 510 <span v-cloak class="title">{{ header.label }}</span> 511 <i class="arrow rt-google-icon right-chevron" :class="{ nonav: year == calEndYear && month >= calEndMonth }" @click="moveNextMonth"></i> 512 </div> 513 <div class="weekdays"> 514 <div v-cloak class="weekday" v-for="weekday in weekdays"> 515 {{ weekday.label_3 }} 516 </div> 517 </div> 518 <div class='week' v-for="(week,index) in weeks" :key="'week'+index" 519 @touchstart="touchStart($event)" 520 @touchmove="touchMove($event)" 521 @touchend="touchEnd($event)"> 522 <div class="day-wrap" v-for="day in week" :key="day.dayKeyIndex"> 523 <transition :name="daysSliding" mode="out-in"> 524 <div v-cloak 525 class="day" 526 :key="daysSliding" 527 :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 }" 528 @click="selectDay(day)" 529 @mouseenter="enterDay(day)"> 530 {{ day[dayKey] }} 531 </div> 532 </transition> 533 </div> 534 </div> 535 </div> 536 <div class="datepick-footer"> 537 <div v-if="flexButtons && flexButtons.length > 0"> 538 <div style="font-size: .85em;">Are your search dates flexible?</div> 539 <div class="flex-button-toolbar"> 540 <button 541 v-for="button in flexButtons" 542 @click.prevent="selectFlexButton(button)" 543 @keydown.enter.prevent="selectFlexButton(button)" 544 :key="'flexbutton'+button" 545 class="flex-degree-buttons" 546 :class="{selectedFlex: button === flexDegree, desktop: button > 2}" 547 :aria-label="'Search for properties within plus or minus '+button+' days of your search dates.'" 548 :aria-pressed="button === flexDegree ? true : false" 549 >±{{button}} day<span v-if="button > 1">s</span> 550 </button> 551 </div> 552 </div> 553 <transition name="fade"> 554 <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."> 555 <i class="rt-google-icon close-window" role="presentation"></i> 556 <span>Clear Dates</span> 557 </button> 558 </transition> 559 </div> 560 <div id="general-datepick-nav-message">{{navigationAriaMessage}}</div> 561 </div> 562</template> 563<template id="rt-general-datepick-app"> 564 <div id="rt-general-datepick" class="rt-general-datepick"> 565 <rt-modal v-if="isMobile && mobileDatesModal" ref="mobilecalmodal" @close-modal="closeCalendar" max-width="500px"> 566 <div id="mobile-calendar-target" class="calendar-container" :class="{calendarvisible: calendarVisible}"></div> 567 </rt-modal> 568 <div class="calendar-container" v-click-outside="outsideClick"> 569 <div class="modal-container" > 570 <div class="interface-wrap"> 571 <div class="interface-body"> 572 <div class="interface-inner-wrap"> 573 <div class="input-container date-input google-icon-calendar" 574 :class="{inputcoloration: calendarVisible && !arriveDate && !departDate}"> 575 <label for="arriveinput" class="hidden-label">Arrival Date</label> 576 <input id="arriveinput" ref="arriveinput" type="text" name="arrive_date" 577 :value="dateString(arriveDate)"
578 @focus="openCalendar()" 579 @keyup.enter="!navigateActive ? navigateActive=true : null" 580 @keydown.tab.shift.exact="closeCalendar()" 581 @keydown.escape="navigateActive=false" 582 @keydown.delete="clearDates" 583 @keydown.arrow-down.prevent 584 @keydown.arrow-up.prevent 585 @keydown.page-down.prevent 586 @keydown.page-up.prevent 587 @click="openCalendar()" 588 @keydown.enter.prevent="openCalendar()" 589 @keydown="navigationKeyStroke=$event.key" 590 placeholder="Arrival" 591 aria-describedby="general-datepick-nav-message" 592 readonly 593 /> 594 </div> 595 <div class="input-container date-input google-icon-calendar" 596 :class="{inputcoloration: calendarVisible && arriveDate && !departDate}"> 597 <label for="departinput" class="hidden-label">Departure Date</label> 598 <input id="departinput" ref="departinput" type="text" name="depart_date" 599 :value="dateString(departDate)" 600 @focus="openCalendar()" 601 @keydown.tab="closeCalendar()" 602 @keyup.enter="!navigateActive ? navigateActive=true : null" 603 @keydown.escape="navigateActive=false" 604 @keydown.delete="clearDates" 605 @keydown.arrow-down.prevent 606 @keydown.arrow-up.prevent 607 @keydown.page-down.prevent 608 @keydown.page-up.prevent 609 @click="openCalendar()" 610 @keydown.enter.prevent="openCalendar()" 611 @keydown="navigationKeyStroke=$event.key" 612 placeholder="Departure" 613 aria-describedby="general-datepick-nav-message" 614 readonly 615 /> 616 </div> 617 <div id="general-calendar-home" style="display: contents;"></div> 618 <teleport defer :to="(isMobile && mobileDatesModal) ? '#mobile-calendar-target' : '#general-calendar-home'"> 619 <div v-show="!isMobile || mobileDatesModal" class="calendar-wrap rt-general-datepick"> 620 <div v-if="mobileDatesModal" class="interface-wrap"> 621 <div class="interface-body"> 622 <div class="interface-inner-wrap" style="display: flex;"> 623 <div class="input-container date-input google-icon-calendar" :class="{inputcoloration: calendarVisible && !arriveDate && !departDate}"> 624 <label for="arriveinput" class="hidden-label">Arrival Date</label> 625 <input id="arriveinput" ref="arriveinput" type="text" name="arrive_date" 626 :value="dateString(arriveDate)" 627 @focus="openCalendar()" 628 @keyup.enter="!navigateActive ? navigateActive=true : null" 629 @keydown.tab.shift.exact="closeCalendar(
629)" 630 @keydown.escape="navigateActive=false" 631 @keydown.delete="clearDates" 632 @keydown.arrow-down.prevent 633 @keydown.arrow-up.prevent 634 @keydown.page-down.prevent 635 @keydown.page-up.prevent 636 @click="openCalendar()" 637 @keydown.enter.prevent="openCalendar()" 638 @keydown="navigationKeyStroke=$event.key" 639 placeholder="Arrival" 640 aria-describedby="general-datepick-nav-message" 641 readonly 642 /> 643 </div> 644 <div class="input-container date-input google-icon-calendar" 645 :class="{inputcoloration: calendarVisible && arriveDate && !departDate}"> 646 <label for="departinput" class="hidden-label">Departure Date</label> 647 <input id="departinput" ref="departinput" type="text" name="depart_date" 648 :value="dateString(departDate)" 649 @focus="openCalendar()" 650 @keydown.tab="closeCalendar()" 651 @keyup.enter="!navigateActive ? navigateActive=true : null" 652 @keydown.escape="navigateActive=false" 653 @keydown.delete="clearDates" 654 @keydown.arrow-down.prevent 655 @keydown.arrow-up.prevent 656 @keydown.page-down.prevent 657 @keydown.page-up.prevent 658 @click="openCalendar()" 659 @keydown.enter.prevent="openCalendar()" 660 @keydown="navigationKeyStroke=$event.key" 661 placeholder="Departure" 662 aria-describedby="general-datepick-nav-message" 663 readonly 664 /> 665 </div> 666 </div> 667 </div> 668 </div> 669 <div class="calendar-layout" :class="{openAbove: spaceAboveInputs}"> 670 <general-date-range-picker ref="rtGenDatepicker" 671 v-show="calendarVisible" 672 v-model="dateSelection" 673 :is-mobile="isMobile" 674 @drag="dragSelection = $event" 675 @emit-keystrokecomplete="navigationKeyStroke = null" 676 @emit-newflexdegree="newFlexDegree($event)" 677 :calendar-visible="calendarVisible" 678 :space-above-inputs="spaceAboveInputs" 679 :navigation-mode="navigateActive" 680 :key-stroke="navigationKeyStroke"> 681 </general-date-range-picker> 682 </div> 683 </div> 684 </teleport> 685 </div> 686 </div> 687 </div> 688 </div> 689 </div> 690 </div> 691</template>
692<script> 693 var _daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 694 var _weekdayLabels = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 695 var _monthLabels = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 696 var _today = new Date(); 697 var _todayComps = { 698 year: _today.getFullYear(), 699 month: _today.getMonth() + 1, 700 day: _today.getDate() 701 }; 702 var _initialMonth = _todayComps.month; 703 var _initialYear = _todayComps.year; 704 // 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 705 if(_todayComps.day >= 20) { 706 if(_initialMonth !== 12) { 707 _initialMonth++; 708 } else { // special case for December 709 _initialMonth = 1; 710 _initialYear++; 711 } 712 } 713 714 const generalCalendar = { 715 template: '#general-calendar', 716 data: function data() { 717 return { 718 month: _initialMonth, 719 year: _initialYear, 720 touchState: null, 721 arriveDate: null, 722 arriveMinDays: null, 723 departDate: null, 724 calStartDate: new Date(new Date(new Date().setDate(new Date().getDate() + 1)).setHours(0,0,0,0)), 725 calEndDate: new Date(new Date(new Date().setDate(new Date().getDate() + 425)).setHours(0,0,0,0)), 726 valueIsValid: false, 727 dragRange: null, 728 navigationDate: new Date(new Date(new Date().setDate(new Date().getDate() + 1)).setHours(0,0,0,0)), 729 navigationDateObject: null, 730 daysSliding: null, 731 flexDegree: 0, 732 flexButtons: [1,2,3], 733 }; 734 }, 735 props: { 736 dayKey: { type: String, default: 'label' }, 737 modelValue: { type: Object, default: {} }, 738 calendarVisible: { type: Boolean, default: false }, 739 spaceAboveInputs: { type: Boolean, default: false }, 740 navigationMode: { type: Boolean, default: false }, 741 keyStroke: { type: String, default: null }, 742 }, 743 emits: ['update:modelValue', 'drag', 'emit-newflexdegree', 'emit-keystrokecomplete'], 744 computed: { 745 normalizedValue: function normalizedValue() { 746 return this.normalizeRange(this.modelValue); 747 }, 748 normalizedDragRange: function normalizedDragRange() { 749 return this.normalizeRange(this.dragRange); 750 }, 751 // Our component exposes month as 1-based, but sometimes we need 0-based 752 monthIndex: function monthIndex() { 753 return this.month - 1; 754 }, 755 isLeapYear: function isLeapYear() { 756 return this.year % 4 === 0 && this.year % 100 !== 0 || this.year % 400 === 0; 757 }, 758 currentMonth: function currentMonth() { 759 var currentDate = new Date(); 760 return currentDate.getMonth(); 761 }, 762 currentYear: function currentMonth() { 763 var currentDate = new Date(); 764 return currentDate.getFullYear(); 765 }, 766 calEndMonth: function calEndMonth() { 767 return this.calEndDate.getMonth() + 1; 768 }, 769 calEndYear: function calEndYear() { 770 return this.calEndDate.getFullYear(); 771 }, 772 // Day/month/year components for previous month 773 previousMonthComps: function previousMonthComps() { 774 if (this.month === 1) return { 775 days: _daysInMonths[11], 776 month: 12, 777 year: this.year - 1 778 }; 779 return { 780 days: this.month === 3 && this.isLeapYear ? 29 : _daysInMonths[this.month - 2], 781 month: this.month - 1, 782 year: this.year 783 }; 784 }, 785 // Day/month/year components for next month 786 nextMonthComps: function nextMonthComps() { 787 if (this.month === 12) return { 788 days: _daysInMonths[0], 789 month: 1, 790 year: this.year + 1 791 }; 792 return { 793 days: this.month === 2 && this.isLeapYear ? 29 : _daysInMonths[this.month], 794 month: this.month + 1, 795 year: this.year 796 }; 797 }, 798 // State for calendar header (no dependencies yet...) 799 months: function months() { 800 return _monthLabels.map(function (ml, i) { 801 return { 802 label: ml, 803 label_1: ml.substring(0, 1), 804 label_2: ml.substring(0, 2), 805 label_3: ml.substring(0, 3), 806 number: i + 1 807 }; 808 }); 809 }, 810 // State for weekday header (no dependencies yet...) 811 weekdays: function weekdays() { 812 return _weekdayLabels.map(function (wl, i) { 813 return { 814 label: wl, 815 label_1: wl.substring(0, 1), 816 label_2: wl.substring(0, 2), 817 label_3: wl.substring(0, 3), 818 number: i + 1 819 }; 820 }); 821 }, 822 // State for calendar header 823 header: function header() {
824 var month = this.months[this.monthIndex]; 825 return { 826 month: month, 827 year: this.year.toString(), 828 shortYear: this.year.toString().substring(2, 4), 829 label: month.label + ' ' + this.year 830 }; 831 }, 832 // Returns number for first weekday (1-7), starting from Sunday 833 firstWeekdayInMonth: function firstWeekdayInMonth() { 834 return new Date(this.year, this.monthIndex, 1).getDay() + 1; 835 }, 836 // Returns number of days in the current month 837 daysInMonth: function daysInMonth() { 838 // Check for February in a leap year 839 if (this.month === 2 && this.isLeapYear) return 29; 840 // ...Just a normal month 841 return _daysInMonths[this.monthIndex]; 842 }, 843 // Returns number of days in the last month 844 daysInLastMonth: function daysInMonth() { 845 var lastmonth = 0; 846 if(this.monthIndex > 0) { 847 lastmonth = this.monthIndex - 1; 848 } else { 849 lastmonth == 11; 850 } 851 // Check for February in a leap year 852 if ((this.month - 1) === 2 && this.isLeapYear) return 29; 853 // ...Just a normal month 854 return _daysInMonths[lastmonth]; 855 }, 856 weeks: function weeks() { 857 //Create an index key for the days showing 858 var dayIndex = 0; 859 var weeks = []; 860 var previousMonth = true, thisMonth = false, nextMonth = false; 861 var day = this.previousMonthComps.days - this.firstWeekdayInMonth + 2; 862 var month = this.previousMonthComps.month; 863 var year = this.previousMonthComps.year; 864 var lastMonthArray = []; 865 // Cycle through each week of the month, up to 6 total 866 for (var w = 1; w <= 6; w++) { 867 // Cycle through each weekday 868 var week = []; 869 for (var d = 1; d <= 7; d++) { 870 dayIndex++; 871 // lets populate last months dates on this months calendar 872 if (w === 1 && d < this.firstWeekdayInMonth) { 873 var lastDay = this.daysInLastMonth; 874 lastMonthArray.push(lastDay); 875 day = lastDay - (this.firstWeekdayInMonth - (dayIndex + 1)); 876 month = this.previousMonthComps.month; 877 year = this.previousMonthComps.year; 878 thisMonth = true; 879 } 880 // We need to know when to start counting actual month days 881 if (previousMonth && d >= this.firstWeekdayInMonth) { 882 // Reset day/month/year counters 883 day = 1; 884 month = this.month; 885 year = this.year; 886 // ...and flag we're tracking actual month days 887 previousMonth = false; 888 thisMonth = true; 889 } 890 891 // Append day info for the current week 892 // Note: this might or might not be an actual month day 893 // We don't know how the UI wants to display various days, 894 // so we'll supply all the data we can 895 var dayInfo = { 896 dayKeyIndex: dayIndex, 897 label: (day && thisMonth) ? day.toString() : '', 898 day: day, 899 weekday: d, 900 week: w, 901 month: month, 902 year: year, 903 date: new Date(year, month - 1, day), 904 beforeMonth: previousMonth, 905 afterMonth: nextMonth, 906 inMonth: thisMonth, 907 isToday: day === _todayComps.day && month
907=== _todayComps.month && year === _todayComps.year, 908 isFirstDay: thisMonth && day === 1, 909 isLastDay: thisMonth && day === this.daysInMonth, 910 unselectable: false, 911 unforeseeable: false, 912 dateInAnotherMonth: false, 913 dateInAnotherMonthCheckout: false, 914 navigateDate: false, 915 }; 916 //Identify calendar start and end 917 if(this.calStartDate && dayInfo.date < this.calStartDate) { 918 dayInfo.unforeseeable = true; 919 } else if(this.calEndDate && dayInfo.date > this.calEndDate) { 920 dayInfo.unforeseeable = true; 921 } 922 //Identify which date is currently navigated to in screen-reader mode 923 if(this.navigationMode && this.navigationDate) { 924 var navDate = this.navigationDate.getTime(); 925 var compareToday = dayInfo.date.getTime(); 926 if(navDate === compareToday) { 927 dayInfo.navigateDate = true; 928 } 929 } 930 /**SECOND RENDER OF DATES AFTER AN ARRIVE DATE IS SELECTED**/ 931 if(this.arriveDate && this.departDate === null) { 932 var compRoot = this; 933 //Make all days selectable by default 934 dayInfo.unselectable = false; 935 936 //Any date behind the arrive date is unselectable 937 if(dayInfo.date <= compRoot.arriveDate) { 938 dayInfo.unselectable = true; 939 } 940 // add class for selectable dates in other months to distinguish 941 if((dayInfo.date > compRoot.arriveDate) && (w >= 5 && (dayInfo.date.getDate() < 20)) || (this.previousMonthComps.month === this.arriveDate.getMonth() + 1)) { 942 dayInfo.dateInAnotherMonthCheckout = true; 943 } 944 /**FIRST RENDER OF DATES WHEN NO ARRIVE DATE IS SELECTED OR BOTH AN ARRIVE AND DEPART ARE SELECTED**/ 945 } else { 946 if(this.calEndDate && dayInfo.date >= this.calEndDate) { 947 dayInfo.unselectable = true; 948 } 949 } /**END OF EVALUATIONS OF WHETHER DATES HAVE BEEN SELECTED OR NOT**/ 950 this.configureDay(dayInfo); 951 week.push(dayInfo); 952 953 // We've hit the last day of the month 954 // but let's keep adding the first few days of the next month to keep week 6 on the calendar for all months 955 if (thisMonth && day >= this.daysInMonth) { 956 day = 1; 957 month = this.nextMonthComps.month; 958 year = this.nextMonthComps.year; 959 // Still in the middle of the month (hasn't ended yet) 960 } else { 961 day++; 962 } 963 // add class for selectable dates in other months to distinguish 964 if((w >= 5 && (dayInfo.date.getDate() < 20)) || previousMonth) { 965 dayInfo.dateInAnotherMonth = true; 966 } 967 } 968 // Append week info for the month 969 weeks.push(week); 970 } 971 return weeks; 972 }, 973 nights: function () { 974 var nights = null; 975 if(this.arriveDate && this.departDate) { 976 var timeDiff = Math.abs(this.departDate.getTime() - this.arriveDate.getTime()); 977 nights = Math.round(timeDiff / (1000 * 3600 * 24)); 978 return nights; 979 } else if(this.dragRange && this.dragRange.start && this.dragRange.end && this.dragRange.end > this.dragRange.start) { 980 var timeDiff = Math.abs(this.dragRange.end.getTime() - this.dragRange.start.getTime()); 981 nights = Math.round(timeDiff / (1000 * 3600 * 24)); 982 } 983 return nights; 984 }, 985 navigationAriaMessage: function () { 986 var ariaMessage = ""; 987 var bookedMessage = ''; 988 var minDayMessage = ''; 989 var selectInstructions = ''; 990 if(this.navigationMode && this.navigationDate && this.calendarVisible) { //Message for when keyboard navigation mode is active 991 ariaMessage = 'You have navigated to ' + this.navigationDate.toDateString() + '. '; 992 for(var i = 0; i < this.weeks.length; i++) { 993 var weekArray = this.weeks[i]; 994 var navDateFound = false;
995 //Loop over every day in the visible month to grab the navigationDateObject 996 for (var ii = 0; ii < this.weeks[i].length; ii++) { 997 if (this.weeks[i][ii].date && this.weeks[i][ii].date.getTime() === this.navigationDate.getTime()) { 998 this.navigationDateObject = this.weeks[i][ii]; 999 break; 1000 } 1001 } 1002 } 1003 if(this.navigationDateObject) { 1004 if(this.navigationDateObject.unselectable || this.navigationDateObject.unforeseeable) { 1005 ariaMessage += 'This date is not available '; 1006 } else { 1007 ariaMessage += 'This date is available '; 1008 selectInstructions = ' Click enter if you want to select this date.'; 1009 } 1010 //Add the appropriate check-in/check-out substring to the message 1011 if(this.arriveDate && this.departDate === null) { 1012 ariaMessage += 'for a departure date.'; 1013 } else { 1014 ariaMessage += 'for an arrival date.'; 1015 ariaMessage += minDayMessage; 1016 } 1017 ariaMessage += selectInstructions; 1018 } 1019 } else if(this.calendarVisible) { //Default input labels when not in navigation mode 1020 var inputLabel = 'Select an arrival date and a departure date.'; 1021 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.' 1022 // add navigation verbiage when flex exists 1023 if(this.flexButtons && this.flexButtons.length > 0) { 1024 navInstructions += ' If you are flexible with your search dates and wish to
1024see 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.'; 1025 } 1026 if(this.arriveDate) { 1027 inputLabel += ' The currently selected arrive date is ' + this.arriveDate.toDateString() + '.'; 1028 } 1029 if(this.departDate) { 1030 inputLabel += ' The currently selected departure date is ' + this.departDate.toDateString() + '.'; 1031 } 1032 ariaMessage = inputLabel + navInstructions; 1033 } 1034 return ariaMessage; 1035 } 1036 }, 1037 methods: { 1038 configureDay: function configureDay(day) { 1039 var dateTime = day.date.getTime(); 1040 var valueRange = this.normalizedValue; 1041 var dragRange = this.normalizedDragRange; 1042 day.isSelected = valueRange && dateTime >= valueRange.startTime && dateTime <= valueRange.endTime; 1043 day.startsSelection = valueRange && dateTime === valueRange.startTime; 1044 day.endsSelection = valueRange && dateTime === valueRange.endTime; 1045 day.dragActive = dragRange; // Just to var day know drag is happening somewhere 1046 day.isDragged = dragRange && dateTime >= dragRange.startTime && dateTime <= dragRange.endTime; 1047 day.startsDrag = dragRange && dateTime === dragRange.startTime; 1048 day.endsDrag = dragRange && dateTime === dragRange.endTime; 1049 }, 1050 selectDay: function selectDay(day) { 1051 // Start new drag selection if not dragging 1052 if(day.unselectable || day.unforeseeable) { 1053 return; 1054 } 1055 if (!this.dragRange) { 1056 this.dragRange = { 1057 start: day.date, 1058 end: day.date 1059 }; 1060 this.arriveDate = this.dragRange.start; 1061 if(day.minDays) { 1062 this.arriveMinDays = day.minDays; 1063 } else if(day.rateData) { 1064 this.arriveMinDays = day.rateData.minDays; 1065 } 1066 this.departDate = null; 1067 // Complete drag selection 1068 } else { 1069 var _normalizedDragRange = this.normalizedDragRange, 1070 start = _normalizedDragRange.start, 1071 end = _normalizedDragRange.end; 1072 // Clear drag selection 1073 this.departDate = this.dragRange.end; 1074 this.dragRange = null; 1075 // Signal new value selected on drag complete 1076 this.$emit('update:modelValue', { start: start, end: end }); 1077 } 1078 }, 1079 navSelectDay: function navSelectDay(navDate) { 1080 // Start new drag selection if not dragging 1081 if (!this.dragRange) { 1082 this.dragRange = { 1083 start: navDate.date, 1084 end: navDate.date 1085 }; 1086 this.arriveDate = this.dragRange.start; 1087 this.departDate = null; 1088 // Complete drag selection 1089 } else { 1090 var _normalizedDragRange = this.normalizedDragRange, 1091 start = _normalizedDragRange.start, 1092 end = navDate.date; 1093 // Clear drag selection 1094 this.departDate = this.dragRange.end; 1095 this.dragRange = null; 1096 // Signal new value selected on drag complete 1097 this.$emit('update:modelValue', { start: start, end: end }); 1098 } 1099 }, 1100 enterDay: function enterDay(day) { 1101 if (!this.dragRange) { 1102 return; //Restrict end of selection to greater than first selection of range 1103 } 1104 // Update drag selection 1105 this.dragRange = { 1106 start: this.dragRange.start, 1107 end: day.date 1108 }; 1109 if((day.unselectable || day.unforeseeable) && this.dragRange.start && this.dragRange.end) { 1110 this.dragRange.end = this.dragRange.start; 1111 } 1112 },
1113 leaveCalendar: function leaveCalendar() { 1114 if(this.dragRange && this.dragRange.start && this.dragRange.end) { 1115 this.dragRange.end = this.dragRange.start; 1116 } 1117 }, 1118 1119 // Ranges can privately have end date earlier than start date 1120 // This function will correct the order before exposing it to to other components 1121 normalizeRange: function normalizeRange(range) { 1122 if (!range) return null; 1123 var start = range.start, 1124 end = range.end; 1125 1126 var startTime = start.getTime(); 1127 var endTime = end.getTime(); 1128 var isNormal = start < end; 1129 return { 1130 start: isNormal ? start : end, 1131 startTime: isNormal ? startTime : endTime, 1132 end: isNormal ? end : start, 1133 endTime: isNormal ? endTime : startTime 1134 }; 1135 }, 1136 moveThisMonth: function moveThisMonth() { 1137 this.month = _todayComps.month; 1138 this.year = _todayComps.year; 1139 }, 1140 moveNextMonth: function moveNextMonth() { 1141 this.daysSliding = 'slideleft'; 1142 var _nextMonthComps = this.nextMonthComps, 1143 month = _nextMonthComps.month, 1144 year = _nextMonthComps.year; 1145 1146 this.month = month; 1147 this.year = year; 1148 //Create a short DOM update delay for allowing day slide to transition 1149 this.$nextTick( 1150 function() { 1151 this.daysSliding = null; 1152 } 1153 ); 1154 }, 1155 movePreviousMonth: function movePreviousMonth() { 1156 this.daysSliding = 'slideright'; 1157 var _previousMonthComps = this.previousMonthComps, 1158 month = _previousMonthComps.month, 1159 year = _previousMonthComps.year; 1160 1161 this.month = month; 1162 this.year = year; 1163 //Create a short DOM update delay for allowing day slide to transition 1164 this.$nextTick( 1165 function() { 1166 this.daysSliding = null; 1167 } 1168 ); 1169 }, 1170 moveNextYear: function moveNextYear() { 1171 this.year++; 1172 }, 1173 movePreviousYear: function movePreviousYear() { 1174 this.year--; 1175 }, 1176 touchStart: function(e) { 1177 var t = e.changedTouches[0]; 1178 this.touchState = { 1179 active: true, 1180 startX: t.screenX, 1181 startY: t.screenY, 1182 startTime: new Date().getTime(), 1183 isSwiping: false, 1184 isMonitoringSwipe: true, 1185 }; 1186 }, 1187 touchMove: function(e) { 1188 if (!this.touchState.isMonitoringSwipe) { 1189 if (this.touchState.isSwiping) e.preventDefault(); 1190 return; 1191 } 1192 var deltaTime = new Date().getTime() - this.touchState.startTime; 1193 if (deltaTime <= 5) { 1194 e.preventDefault(); 1195 return; 1196 } 1197 var t = e.changedTouches[0]; 1198 var deltaX = t.screenX - this.touchState.startX; 1199 var deltaY = t.screenY - this.touchState.startY; 1200 if (Math.abs(deltaX) >= Math.abs(deltaY)) { 1201 this.touchState.isSwiping = true; 1202 //e.preventDefault(); 1203 } 1204 this.touchState.isMonitoringSwipe = false; 1205 }, 1206 touchEnd: function(e) { 1207 var t = e.changedTouches[0]; 1208 var deltaX = t.screenX - this.touchState.startX; 1209 var deltaY = t.screenY - this.touchState.startY; 1210 var deltaTime = new Date().getTime() - this.touchState.startTime; 1211 if (deltaTime < 300) { 1212 if ( 1213 Math.abs(deltaX) >= 60 && 1214 Math.abs(deltaY) <= 80 1215 ) { 1216 // Swipe left 1217 // Move to next month 1218 if (deltaX < 0) { 1219 if (this.year === this.calEndYear) { 1220 if (this.month < this.calEndMonth) { 1221 this.moveNextMonth(); 1222 } 1223 } else if (this.year < this.calEndYear) { 1224 this.moveNextMonth(); 1225 } 1226 // Swipe right 1227 // Move to previous month 1228 } else { 1229 if(this.year === this.currentYear) { 1230 if(this.monthIndex > this.currentMonth) { 1231 this.movePreviousMonth(); 1232 } 1233 } else if(this.year > this.currentYear) { 1234 this.movePreviousMonth(); 1235 } 1236 } 1237 } 1238 } 1239 }, 1240 selectFlexButton: function(flexSelection) { 1241 // if flexSelection is the same as what flexDegree already is, the user is unchecking this button and we set flexDegree to zero 1242 if(this.flexDegree === flexSelection) { 1243 this.flexDegree = 0; 1244 } else { 1245 this.flexDegree = flexSelection; 1246 } 1247 }, 1248 updateFlexSession: function() { 1249 var siteURL = document.location.origin; 1250 axios.post(siteURL + '/vacation-rentals/router/', { 1251 call: 'updateFlexSession', 1252 flexDegree: this.flexDegree 1253 }) 1254 .then(function (response) { 1255 return; 1256 }) 1257 .catch(function (error) { 1258 console.log(error); 1259 }); 1260 }, 1261 }, 1262 mounted: function() { 1263 //What to do when we land with dates in the session 1264 if(this.modelValue && this.modelValue.start && this.modelValue.end) { 1265 var sessionStart = this.modelValue.start; 1266 var sessionEnd = this.modelValue.end; 1267 } 1268 }, 1269 watch: { 1270 normalizedDragRange: function normalizedDragRange(val) { 1271 // Any time drag changes, normalize it and emit 'drag' event 1272 this.$emit('drag', val ? { start: val.start, end: val.end } : null); 1273 }, 1274 keyStroke: function () { 1275 var keystroke = this.keyStroke; 1276 var fromNavDate = new Date(this.navigationDate); 1277 var toNavDate = fromNavDate; 1278 //Set the calendar month and year in case we need to change the view 1279 this.month = fromNavDate.getMonth() + 1; 1280 this.year = fromNavDate.getFullYear(); 1281 if(this.navigationMode) { 1282 //If the keystroke is enter to select a day, make sure it's actually selectable 1283 if(keystroke === 'Enter' && this.navigationDateObject && this.navigationDateObject.unselectable === false && this.navigationDateObject.unforeseeable === false) { 1284 this.navSelectDay(this.navigationDateObject); 1285 //Set the focus on the depart input 1286 document.getElementById('departinput').focus({preventScroll:true}); 1287 } else if(keystroke === 'ArrowRight') { 1288 toNavDate.setFullYear(fromNavDate.getFullYear()); 1289 toNavDate.setMonth(fromNavDate.getMonth()); 1290 toNavDate.setDate(fromNavDate.getDate() + 1); 1291 toNavDate.setHours(0,0,0,0); 1292 } else if(keystroke === 'ArrowLeft') { 1293 toNavDate.setFullYear(fromNavDate.getFullYear()); 1294 toNavDate.setMonth(fromNavDate.getMonth()); 1295 toNavDate.setDate(fromNavDate.getDate() - 1); 1296 toNavDate.setHours(0,0,0,0); 1297 } else if(keystroke === 'ArrowDown') { 1298 toNavDate.setFullYear(fromNavDate.getFullYear()); 1299 toNavDate.setMonth(fromNavDate.getMonth()); 1300 toNavDate.setDate(fromNavDate.getDate() + 7); 1301 toNavDate.setHours(0,0,0,0); 1302 } else if(keystroke === 'ArrowUp') { 1303 toNavDate.setFullYear(fromNavDate.getFullYear()); 1304 toNavDate.setMonth(fromNavDate.getMonth()); 1305 toNavDate.setDate(fromNavDate.getDate() - 7); 1306 toNavDate.setHours(0,0,0,0); 1307 } else if(keystroke === 'PageDown') { 1308 toNavDate.setDate(1); 1309 toNavDate.setFullYear(fromNavDate.getFullYear()); 1310 toNavDate.setMonth(fromNavDate.getMonth() + 1); 1311 toNavDate.setHours(0,0,0,0); 1312 } else if(keystroke === 'PageUp') { 1313 toNavDate.setDate(1); 1314 toNavDate.setFullYear(fromNavDate.getFullYear()); 1315 toNavDate.setMonth(fromNavDate.getMonth() - 1); 1316 toNavDate.setHours(0,0,0,0); 1317 } 1318 //Set the calendar month and year in case we need to change the view 1319 this.month = toNavDate.getMonth() + 1; 1320 this.year = toNavDate.getFullYear(); 1321 this.navigationDate = toNavDate; 1322 } else { // events that are available before entering calendar keyboard navigation mode 1323 if(keystroke === 'Tab') { 1324 if(this.flexButtons && this.flexButtons.length > 0 && document.getElementsByClassName('flex-degree-buttons')[0] !== undefined) { 1325 document.getElementsByClassName('flex-degree-buttons')[0].focus({preventScroll:true}); 1326 } else if(document.getElementById('clear-dates-calendar-button') !== undefined) { 1327 document.getElementById('clear-dates-calendar-button').focus({preventScroll:true}); 1328 } else { 1329 document.getElementById('departinput').focus({preventScroll:true}); 1330 } 1331 } 1332 } 1333 //Let the parent instance know the keystroke is finished being evaluated 1334 this.$emit('emit-keystrokecomplete'); 1335 }, 1336 flexDegree: { 1337 immediate: true, 1338 handler: function () { 1339 //Let the parent instance know the keystroke is finished being evaluated 1340 var flexDegree = this.flexDegree; 1341 this.$emit('emit-newflexdegree', flexDegree); 1342 this.updateFlexSession(); 1343 } 1344 } 1345 }, 1346 }; 1347 const rtDateInputs = { 1348 template: '#rt-general-datepick-app', 1349 props: [], 1350 emits: ['update-dates', 'emit-newflexdegree'], 1351 data: function() { 1352 return { 1353 dateSelection: null, 1354 dragSelection: null, 1355 calendarVisible: false, 1356 spaceAboveInputs: false, // is there room above inputs to fit the calendar; false by default 1357 mobileInterfaceVisible: false, 1358 mobileDatesModal: false, 1359 navigateActive: false, 1360 navigationKeyStroke: null, 1361 windowWidth: 0, 1362 windowHeight: 0 1363 } 1364 }, 1365 computed: { 1366 isMobile: function() { 1367 if(this.windowWidth) { 1368 if(this.windowWidth <= 640) { 1369 return true; 1370 } else { 1371 return false;
1372 } 1373 } else { 1374 return null; 1375 } 1376 }, 1377 arriveDate: function () { 1378 if(this.dragSelection == null && this.dateSelection == null) { 1379 return null; 1380 } else if (this.dragSelection) { 1381 this.priceQuote = null; 1382 this.isAvailable = null; 1383 return this.dragSelection.start; 1384 } else if (this.dragSelection == null && this.dateSelection) { 1385 return this.dateSelection.start; 1386 } else { 1387 return null; 1388 } 1389 }, 1390 departDate: function () { 1391 if(this.dragSelection == null && this.dateSelection == null) { 1392 return null; 1393 } else if (this.dragSelection == null && this.dateSelection) { 1394 return this.dateSelection.end; 1395 } else { 1396 return null; 1397 } 1398 }, 1399 dateSelectionLabel: function dateSelectionLabel() { 1400 return JSON.stringify(this.dateSelection, null, '\t'); 1401 }, 1402 }, 1403 methods: { 1404 clearDates: function () { 1405 //Clear root element values 1406 this.dragSelection = null; 1407 this.dateSelection = null; 1408 //Clear child component values 1409 if(this.$refs.rtGenDatepicker) { 1410 this.$refs.rtGenDatepicker.dragRange = null; 1411 this.$refs.rtGenDatepicker.arriveDate = null; 1412 this.$refs.rtGenDatepicker.arriveMinDays = null; 1413 this.$refs.rtGenDatepicker.departDate = null; 1414 } 1415 this.openCalendar(); 1416 //emit the dates to the parent component 1417 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1418 }, 1419 dateString: function dateString(MyDate) { 1420 if(MyDate) { 1421 return ('0' + (MyDate.getMonth()+1)).slice(-2) + '/' 1422 + ('0' + MyDate.getDate()).slice(-2) + '/' 1423 + MyDate.getFullYear(); 1424 } 1425 }, 1426 getWindowWidth: function(event) { 1427 this.windowWidth = document.documentElement.clientWidth; 1428 }, 1429 getWindowHeight: function(event) { 1430 this.windowHeight = document.documentElement.clientHeight; 1431 }, 1432 activateModal: function () { 1433 this.mobileInterfaceVisible = true; 1434 this.clearDates(); 1435 }, 1436 openCalendar: function () { 1437 this.calendarVisible = true; 1438 if (this.isMobile) { 1439 this.mobileDatesModal = true; 1440 } 1441 if(document.getElementById('rt-general-datepick').getBoundingClientRect().top > 500) { 1442 this.spaceAboveInputs = true; 1443 } 1444 }, 1445 closeCalendar: function () { 1446 this.spaceAboveInputs = false; 1447 this.mobileDatesModal = false; // Close the modal 1448 this.calendarVisible = false; 1449 }, 1450 outsideClick: function(e) { 1451 // If the mobile modal is active, let rt-modal handle its own closing 1452 if (this.mobileDatesModal) { 1453 return; 1454 } 1455 // Close the calendar when clicking outside 1456 this.closeCalendar(); 1457 }, 1458 newFlexDegree: function (flexDegree) { 1459 this.$emit('emit-newflexdegree', flexDegree); 1460 }, 1461 }, 1462 directives: { 1463 'click-outside': { 1464 mounted(el, binding, vnode) { 1465 el.clickOutsideEvent = function(event) { 1466 if (!(el === event.target || el.contains(event.target))) { 1467 binding.value(event, el); 1468 } 1469 }; 1470 document.body.addEventListener('click', el.clickOutsideEvent); 1471 }, 1472 unmounted(el) { 1473 document.body.removeEventListener('click', el.clickOutsideEvent); 1474 } 1475 }, 1476 }, 1477 watch: { 1478 selectMode: function selectMode() { 1479 this.dateSelection = null; 1480 }, 1481 //Whenever a depart date is defined, run the price call 1482 departDate: function() { 1483 if(this.arriveDate && this.departDate) { 1484 //emit the dates to the parent component
1485 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1486 // Automatically close the calendar 1487 this.closeCalendar(); 1488 } 1489 } 1490 }, 1491 mounted: function() { 1492 if(this.arriveDate && this.departDate) { 1493 this.$refs.rtGenDatepicker.month = this.arriveDate.getMonth() +1; 1494 this.$refs.rtGenDatepicker.year = this.arriveDate.getFullYear(); 1495 this.$emit('update-dates', {'arrive': this.arriveDate, 'depart': this.departDate}); 1496 } 1497 // Add a window-resize event listener 1498 this.$nextTick(function() { 1499 window.addEventListener('resize', this.getWindowWidth); 1500 window.addEventListener('resize', this.getWindowHeight); 1501 1502 //Init 1503 this.getWindowWidth(); 1504 this.getWindowHeight(); 1505 }); 1506 }, 1507 beforeDestroy: function() { 1508 window.removeEventListener('resize', this.getWindowWidth); 1509 window.removeEventListener('resize', this.getWindowHeight); 1510 }, 1511 }; 1512</script>
1512<template id="rt-modal"> 1513 <Teleport to="body"> 1514 <div class="rt-modal popover-mask"> 1515 <div class="popover-wrapper"> 1516 <div class="popover" :style="{maxWidth: maxWidth}"> 1517 <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> 1518 <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> 1519 <slot/> 1520 </div> 1521 </div> 1522 </div> 1523 </Teleport> 1524</template>
1525<script> 1526 const rtModal = { 1527 template: '#rt-modal', 1528 props: { 1529 maxWidth: { 1530 type: String, 1531 default: '700px' 1532 }, 1533 }, 1534 emits: ['close-modal'], 1535 methods: { 1536 resizeModal: function () { 1537 if(document.getElementsByClassName('popover-mask')[0] !== undefined) { 1538 document.getElementsByClassName('popover-mask')[0].style.height = "100vh"; 1539 document.getElementsByClassName('popover-mask')[0].style.width = "100%"; 1540 } 1541 }, 1542 escapeClose: function (event) { 1543 if(event.key === 'Escape') { 1544 this.$emit('close-modal'); 1545 } 1546 } 1547 }, 1548 mounted: function () { 1549 // add window resize event to deal with screen rotation, and the shrinking address bar on iOS 1550 window.addEventListener('resize', this.resizeModal); 1551 // add escape key listener 1552 document.addEventListener('keyup', this.escapeClose) 1553 }, 1554 unmounted: function () { 1555 // remove escape key listener 1556 document.removeEventListener('keyup', this.escapeClose); 1557 }, 1558 beforeDestroy: function () { 1559 window.removeEventListener('resize', this.resizeModal); 1560 }, 1561 }; 1562</script>
1562<script> 1563 const rtQuickSearch = Vue.createApp({ 1564 data() { 1565 return { 1566 searchCriteria: { 1567 arriveDate: null, 1568 departDate: null, 1569 selectBoxes: [], 1570 }, 1571 windowWidth: 0 1572 } 1573 }, 1574 computed: { 1575 urlQuerystring: function () { 1576 var queryString = '?searchform=1'; 1577 // Build up the dates part of the URL string 1578 if(this.searchCriteria.arriveDate && this.searchCriteria.departDate) { 1579 var datesString = ''; 1580 var arriveString = ''; 1581 var departString = ''; 1582 var arriveMonth = this.searchCriteria.arriveDate.getMonth() +1; 1583 var arriveDay = this.searchCriteria.arriveDate.getDate(); 1584 var arriveYear = this.searchCriteria.arriveDate.getFullYear(); 1585 arriveString = arriveMonth + '/' + arriveDay + '/' + arriveYear; 1586 var departMonth = this.searchCriteria.departDate.getMonth() +1; 1587 var departDay = this.searchCriteria.departDate.getDate(); 1588 var departYear = this.searchCriteria.departDate.getFullYear(); 1589 departString = departMonth + '/' + departDay + '/' + departYear; 1590 datesString = '&arrive_date=' + arriveString + '&depart_date=' + departString; 1591 queryString += datesString; 1592 } 1593 // Loop over every other defined option 1594 for(var i = 0; i < this.searchCriteria.selectBoxes.length; i++) { 1595 var optionString = ''; 1596 if(this.searchCriteria.selectBoxes[i].selected) { 1597 optionString = '&' + this.searchCriteria.selectBoxes[i].label + '=' + this.searchCriteria.selectBoxes[i].selected; 1598 queryString += optionString; 1599 } 1600 } 1601 return encodeURI(queryString).replace(/[\/]/g, '%2F'); 1602 } 1603 }, 1604 methods: { 1605 newDates: function (dates) { 1606 this.searchCriteria.arriveDate = dates.arrive; 1607 this.searchCriteria.departDate = dates.depart; 1608 }, 1609 performSearch: function () { 1610 window.location.href = 'https://www.islandvacationproperties.com/vacation-rentals' + '/results/' + this.urlQuerystring; 1611 }, 1612 getWindowWidth: function(event) { 1613 this.windowWidth = window.innerWidth; 1614 }, 1615 }, 1616 mounted: function() { 1617 // Add a window-resize event listener 1618 window.addEventListener('resize', this.getWindowWidth); 1619 this.getWindowWidth(); 1620 }, 1621 beforeDestroy: function() { 1622 window.removeEventListener('resize', this.getWindowWidth); 1623 }, 1624 }); 1625 // register the components and mount the app 1626 rtQuickSearch.component('general-date-range-picker', generalCalendar); 1627 rtQuickSearch.component('datepick-inputs', rtDateInputs); 1628 rtQuickSearch.component('rt-modal', rtModal); 1629 rtQuickSearch.mount('#qsformroot'); 1630</script>
1630 1631 </div> 1632
1633<script> 1634 jQuery(".menu-item-has-children a").focus(function(){ 1635 jQuery(this).next(".sub-menu").addClass("focusSubmenu"); 1636 jQuery(this).closest('ul').find('li.menu-item-has-children > a').attr('aria-expanded', function (i, attr) { 1637 return attr == 'true' ? 'false' : 'true' 1638 }); 1639 }); 1640 jQuery("ul li:last-of-type").focusout(function(){ 1641 jQuery(this).closest(".sub-menu").removeClass("focusSubmenu"); 1642 jQuery(this).closest('.nav').find('li.menu-item-has-children > a').attr('aria-expanded', function (i, attr) { 1643 return attr == 'false' ? 'true' : 'false' 1644 }); 1645 }); 1646</script>
1646 <div class="content"> 1647 <div class="content-full contained"> 1648 <main role="main" aria-label="main content" id="post-556"> 1649 <div role="complementary" class="content-full"> 1650 <h1 class="page-title">Island Blog</h1> 1651 </div> 1652 <article class="entry"> 1653 1654<div role="region" aria-label="Shortcut Block Quick Links" class="home-cuts flex-wrapper mosaic classic"> 1655 <div class="flex-container" 1656 > 1657 <div role="group" aria-labelledby="Activities" class="flex-item shortcutbox has-medium-font-size" style=""> 1658 <a class="hover-1" style=" 1659 background-image: url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities-1200x730.jpg'); 1660 background-image: -webkit-image-set( 1661 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities-1200x730.jpg') 1x, 1662 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities.jpg') 2x 1663 ); 1664 background-image: image-set( 1665 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities-1200x730.jpg') 1x, 1666 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Activities.jpg') 2x 1667 );" role="link" 1668 target="_blank" rel="noopener noreferrer" href="https://www.islandvacationproperties.com/category/activities/"> 1669 <span class="sr-only">Activities</span> 1670 </a> 1671 <div style="background-color:rgba(0,0,0,0);; font-weight:400; ; color:#fff" class= "box-title hover-1"> 1672 <h2 id="Activities">Activities</h2> </div> 1673 </div> 1674 <div role="group" aria-labelledby="Attractions" class="flex-item shortcutbox has-medium-font-size" style=""> 1675 <a class="hover-1" style=" 1676 background-image: url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Attractions-1200x800.jpg'); 1677 background-image: -webkit-image-set( 1678 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Attractions-1200x800.jpg') 1x, 1679 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Attractions.jpg') 2x 1680 ); 1681 background-image: image-set( 1682 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Attractions-1200x800.jpg') 1x, 1683 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Attractions.jpg') 2x 1684 );" role="link" 1685 target="_blank" rel="noopener noreferrer" href="https://www.islandvacationproperties.com/category/attractions/"> 1686 <span class="sr-only">Attractions</span> 1687 </a> 1688 <div style="background-color:rgba(0,0,0,0);; font-weight:400; ; color:#fff" class= "box-title hover-1"> 1689 <h2 id="Attractions">Attractions</h2> </div> 1690 </div> 1691 <div role="group" aria-labelledby="BeachLife" class="flex-item shortcutbox has-medium-font-size" style=""> 1692 <a class="hover-1" style=" 1693 background-image: url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Beach-Life-IVP-1200x800.jpg'); 1694 background-image: -webkit-image-set( 1695 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Beach-Life-IVP-1200x800.jpg') 1x, 1696 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Beach-Life-IVP.jpg') 2x 1697 ); 1698 background-image: image-set( 1699 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Beach-Life-IVP-1200x800.jpg') 1x, 1700 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Beach-Life-IVP.jpg') 2x 1701 );" role="link" 1702 target="_blank" rel="noopener noreferrer" href="https://www.islandvacationproperties.com/category/beach-life/">
1703 <span class="sr-only">Beach Life</span> 1704 </a> 1705 <div style="background-color:rgba(0,0,0,0);; font-weight:400; ; color:#fff" class= "box-title hover-1"> 1706 <h2 id="BeachLife">Beach Life</h2> </div> 1707 </div> 1708 <div role="group" aria-labelledby="Dining" class="flex-item shortcutbox has-medium-font-size" style="grid-column: span 3;"> 1709 <a class="hover-1" style=" 1710 background-image: url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Dining-1200x800.jpg'); 1711 background-image: -webkit-image-set( 1712 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Dining-1200x800.jpg') 1x, 1713 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Dining.jpg') 2x 1714 ); 1715 background-image: image-set( 1716 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Dining-1200x800.jpg') 1x, 1717 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/IVP-Dining.jpg') 2x 1718 );" role="link" 1719 target="_blank" rel="noopener noreferrer" href="https://www.islandvacationproperties.com/category/dining/"> 1720 <span class="sr-only">Dining</span> 1721 </a> 1722 <div style="background-color:rgba(0,0,0,0);; font-weight:400; ; color:#fff" class= "box-title hover-1"> 1723 <h2 id="Dining">Dining</h2> </div> 1724 </div> 1725 <div role="group" aria-labelledby="Events" class="flex-item shortcutbox has-medium-font-size" style="grid-column: span 3; grid-row:3;grid-column: span 3; grid-row:3;"> 1726 <a class="hover-1" style=" 1727 background-image: url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Events-IVP-1200x800.jpg'); 1728 background-image: -webkit-image-set( 1729 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Events-IVP-1200x800.jpg') 1x, 1730 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Events-IVP.jpg') 2x 1731 ); 1732 background-image: image-set( 1733 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Events-IVP-1200x800.jpg') 1x, 1734 url('https://www.islandvacationproperties.com/wp-content/uploads/2024/07/Events-IVP.jpg') 2x 1735 );" role="link" 1736 target="_blank" rel="noopener noreferrer" href="https://www.islandvacationproperties.com/category/events/"> 1737 <span class="sr-only">Events</span> 1738 </a> 1739 <div style="background-color:rgba(0,0,0,0);; font-weight:400; ; color:#fff" class= "box-title hover-1"> 1740 <h2 id="Events">Events</h2> </div> 1741 </div> 1742 </div> 1743</div> 1744 1745 1746 <div class="flex-container logo-bar" class="align wp-block-acf-logobar" style="background:#ffffff;"> 1747 <div class="logo-bar-logos contained"> 1748 <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
1748w, 500px" /> </div> 1749 </div> 1750 </article> 1751 <div class="clear"></div> 1752 </main> 1753 </div> 1754 </div> 1755 <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='/island-blog/#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'>Name</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>
1755<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='1lug11F/Mk+r/h/2PyxVWWzvWYzQkfocMfsaCDKTa+Nxu3yiLsep8Nc3rk464OWiBAoGW+JIUYDYLfJl5i8VNwiYhTb/0fR2wmdfQHWPgaSUqRo=' /><input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /><input type='hidden' class='gform_hidden' name='state_3' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjcxOTc2NzZjMzA4OWIyZjdlMTY0ZWRkMTJlZTY1ZmU1XCIsXCI0N2ExNDZlMGNiZDlhZWE4NjlhNGFjOGU2ZDgxMTIxYlwiLFwiMWEzY2I0YjUwYTNlNDVhOWQ2ZjI0NTUwZDllNWEzOTZcIl0sXCJnZm9ybV90aGVtZVwiOlwiYTIwNjE3MzljOTZiZDdjYjNmMTM3OWY3MTk1OTcxZjhcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCI4NTU1NWEwODIwNzY2OTgyNWEzMzlhNTMzYzkwNjAxNFwiLFwiZm9ybV9pZFwiOlwiNDI2YWY2ZWJjYzRmODYxMGM4NGYyNzhjZjFlMWUwODNcIixcInVybFwiOlwiOTgyMDg5ZmM2YTQxMWM0MDA5OTAzYTExNmM4YTZkYzZcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiN2ZjYzgyNmUxMDRjYmViNzcxYjg2Nzk3MGJmZTU0ZmFcIn0iLCJmZTQxNzlmMmNlYWUzZWQzOGU3ODE4NzQ5N2FlZDQyMyIsMTc5MTQ1NjkwN10=' /><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="184"/>
1755<script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script>
1755</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>
1755<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>
1755</div></div></div></div></section> <footer aria-label="footer" role="contentinfo" class="footer-wrap white-text"> 1756 <div class="footer contained"> 1757 <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> 1758 </div> 1759 <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> 1760 This site is protected by reCAPTCHA and the Google 1761 <a href="https://policies.google.com/privacy">Privacy Policy</a> and 1762 <a href="https://policies.google.com/terms">Terms of Service</a> apply. 1763 </div> 1764 <div style="clear:both;"></div> 1765 <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> 1766 </div> 1767
1767<script src="https://cdn.userway.org/widget.js" data-account="WjewwfEzKf"></script>
1767 </footer> 1768 </div><!-- end .site-wrap --> 1769 </div> <!-- end content wrap --> 1770 1771 <div class="navclass nav"> 1772 <nav aria-label="Mobile Navigation" id="c-menu--push-left" class="c-menu c-menu--push-left"> 1773 <button class="c-menu__close">← Close Menu</button> 1774 <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">
1774<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 menu-item-has-children menu-item-119"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/" 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 menu-item-5207"><a href="https://www.islandvacationproperties.com/about-island-vacation-properties/">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 current-menu-item current-menu-ancestor current-menu-parent menu-item-has-children menu-item-120"><a href="https://www.islandvacationproperties.com/island-blog/" aria-current="page" 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 current-menu-item page_item page-item-556 current_page_item menu-item-4228"><a href="https://www.islandvacationproperties.com/island-blog/" aria-current="page">Our Blog</a></li></ul></li></ul></div> </nav> 1775 </div> <!-- end div #nav --> 1776 <div style="clear:both;"></div> 1777 <div id="content-mask" class="content-mask"></div><!-- /content-mask --> 1778
1778<script type="speculationrules"> 1779{"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"}]} 1780</script>
1780 1781<div 1782 id="pum-4776" 1783 role="dialog" 1784 aria-modal="false" 1785 aria-labelledby="pum_popup_title_4776" 1786 class="pum pum-overlay pum-theme-823 pum-theme-default-theme popmake-overlay pum-overlay-disabled auto_open click_open" 1787 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":[]}}"> 1788 1789 <div id="popmake-4776" class="pum-container popmake theme-823 pum-responsive pum-responsive-small responsive size-small pum-position-fixed"> 1790 1791 1792 <div id="pum_popup_title_4776" class="pum-title popmake-title"> 1793 Newsletter Sign Up </div> 1794 1795 1796 <div class="pum-content popmake-content" tabindex="0"> 1797 1798 <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> 1799 <div class='gform_heading'> 1800 <p class='gform_description'>Stay in the know. Get exclusive offers straight to your inbox:</p> 1801 </div><form method='post' enctype='multipart/form-data' id='gform_10' action='/island-blog/#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> 1802 <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'>Email</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>
1802<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'> 1803 <input name='input_1' id='input_10_1' type='email' value='' class='large' placeholder='Your Email Address' aria-required="true" aria-invalid="false" /> 1804 </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'> 1805 1806 <span id='input_10_3_3_container' class='name_first gform-grid-col gform-grid-col--size-auto' > 1807 <input type='text' name='input_3.3' id='input_10_3_3' value='' aria-required='false' placeholder='Your Name' /> 1808 <label for='input_10_3_3' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>First</label> 1809 </span> 1810 1811 1812 1813 </div></li></ul></div> 1814 <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> 1815 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_10' value='postback' /> 1816 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_10' id='gform_theme_10' value='legacy' /> 1817 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_10' id='gform_style_settings_10' value='[]' /> 1818 <input type='hidden' class='gform_hidden' name='is_submit_10' value='1' /> 1819 <input type='hidden' class='gform_hidden' name='gform_submit' value='10' /> 1820 1821 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='/GBEUpMbmvcqsKShdVyyg4CuPX/XmWrkU/vcFZNw2Cdk1Ce4lOiw8cCmEX1hQNjDscZK1R9g3m5eMxi4OoZb2+XbU8cyEMLaLXvypK0+XxFJmzs=' /> 1822 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 1823 <input type='hidden' class='gform_hidden' name='state_10' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjcxOTc2NzZjMzA4OWIyZjdlMTY0ZWRkMTJlZTY1ZmU1XCIsXCI0N2ExNDZlMGNiZDlhZWE4NjlhNGFjOGU2ZDgxMTIxYlwiXSxcImdmb3JtX3RoZW1lXCI6XCJhMjA2MTczOWM5NmJkN2NiM2YxMzc5ZjcxOTU5NzFmOFwiLFwiZ2Zvcm1fc3R5bGVfc2V0dGluZ3NcIjpcImQ3MGU5ODhmOTY2ZjlhNDBkMzdhZGQyODY1ZTc4ZTBhXCIsXCJmb3JtX2lkXCI6XCJhZGE2N2NkNDU2OThlNDQxMmNhNDEwMDAwNDk2Y2M3N1wiLFwidXJsXCI6XCI5ODIwODlmYzZhNDExYzQwMDk5MDNhMTE2YzhhNmRjNlwiLFwic3RhdGVfdGltZXN0YW1wXCI6XCI3ZmNjODI2ZTEwNGNiZWI3NzFiODY3OTcwYmZlNTRmYVwifSIsIjcyZDhkMTVjYmI2MmJkNDlhMDM3MTZkOTQ5ODI0MjhlIiwxNzkxNDU2OTA3XQ==' /> 1824 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_10' id='gform_target_page_number_10' value='0' /> 1825 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_10' id='gform_source_page_number_10' value='1' /> 1826 <input type='hidden' name='gform_field_values' value='' /> 1827 1828 </div> 1829 <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="228"/>
1829<script> 1830document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); 1831</script>
1831 1832</p></form> 1833 </div> 1834 </div> 1835 1836 1837 <button type="button" class="pum-close popmake-close" aria-label="Close"> 1838 x </button> 1839 1840 </div> 1841 1842</div>
1843<script id="menu-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/menu.js?ver=1.0"></script>
vendor: 1 bytes, line 1843
1843
1844<script id="shrinkhead-js" src="https://www.islandvacationproperties.com/wp-content/themes/rtapi/js/shrinkhead.js?ver=1.0"></script>
vendor: 1 bytes, line 1844
1844
1845<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 1845
1845
1846<script id="gforms_recaptcha_recaptcha-js-extra"> 1847var 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"}; 1848//# sourceURL=gforms_recaptcha_recaptcha-js-extra 1849</script>
vendor: 127 bytes, lines 1849-1850
1849 1850<script data-wp-strategy="defer" defer id="gforms_recaptcha_recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=
18506LeDap0tAAAAAH8QvJNFDOpBZOagZYajMX8m-Iiv
vendor: 27 bytes, line 1850
1850&ver=2.2.2"></script>
1851<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 1851
1851
1852<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 1852
1852
1853<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 1853
1853
1854<script id="gform_gravityforms_theme-js-extra"> 1855var 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"}; 1856//# sourceURL=gform_gravityforms_theme-js-extra 1857</script>
vendor: 1 bytes, line 1857
1857
1858<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 1858
1858
1859<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 1859
1859
1860<script id="popup-maker-site-js-extra"> 1861var 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"}; 1862var pum_sub_vars = {"ajaxurl":"https://www.islandvacationproperties.com/wp-admin/admin-ajax.php","message_position":"top"}; 1863var 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"}}; 1864//# sourceURL=popup-maker-site-js-extra 1865</script>
vendor: 1 bytes, line 1865
1865
1866<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 1866
1866
1867<script id="wp-emoji-settings" type="application/json"> 1868{"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"}} 1869</script>
vendor: 1 bytes, line 1869
1869
1870<script type="module"> 1871/*! This file is auto-generated */ 1872var 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)))}); 1873//# sourceURL=https://www.islandvacationproperties.com/wp-includes/js/wp-emoji-loader.min.js 1874</script>
vendor: 1 bytes, line 1874
1874
1875<script> 1876gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 10) {if(typeof Placeholders != 'undefined'){ 1877 Placeholders.enable(); 1878 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1879</script>
vendor: 1 bytes, line 1879
1879
1880<script> 1881gform.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(); } } ); 1882</script>
vendor: 1 bytes, line 1882
1882
1883<script> 1884gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 3) {if(typeof Placeholders != 'undefined'){ 1885 Placeholders.enable(); 1886 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1887</script>
vendor: 1 bytes, line 1887
1887
1888<script> 1889gform.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(); } } ); 1890</script>
1890 1891 1892 </body> 1893</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.