www.landal.co.uk
Open in
urlscan Pro
104.122.27.29
Public Scan
Submitted URL: http://landal.co.uk/
Effective URL: https://www.landal.co.uk/
Submission: On April 06 via api from CH — Scanned from GB
Effective URL: https://www.landal.co.uk/
Submission: On April 06 via api from CH — Scanned from GB
Form analysis
1 forms found in the DOMPOST ./
<form method="post" action="./" id="ctl03">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__VSTATE" id="__VSTATE" value="/wEPZA8FATBk">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUBMGRkQtF0ro186sYX7apcmoc/zHbcbmw=">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['ctl03'];
if (!theForm) {
theForm = document.ctl03;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=UFwlDI6_ZFpo4TOwExaum5EsPJASmyWv5KuS7ujaS7rfhRIhHG1EiJuUieENVtnQDvgKe5ToY9PbDVRGAVSgA3jtgb41&t=637729620413207958" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=Q3ShMBOCiJNdFne72zGHWv7n1JPZ6KR_edeJ0CSu2Yg3YaQ8slUlLc-3Qwjuleb7kUOFI-qLLUBanFA4UJt8b2AhgcmO3gkN0XasFWEBWpzQgMFL0&t=734d43f5" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=ZqvpDygtZYQAOa6ULJKuuzGpRHMiJIKcCfBMTO-NrqJXpHOzgOTFOAcOri6IWduxWeW2U5pxxc9vhxKoh96Ow9bB5vd9uMysWTgXKPYFu_0N0lCE1M3272yYB-foXpqzakNURw2&t=734d43f5" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=1AfH7bWKmS9CtHqqykPLi30s5vrhtZsZE5NCBQRfURJIeXxYUA_a1eO2TuVzRxf5v5-B9xCHWr522Lybc0TewtnMz9qiuc4tBQpEWVehHTKWdJuUNzvtl6mVDr44VC3saoHgkw2" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="65B0CE58">
</div>
<!-- css links -->
<link rel="stylesheet" href="/brand.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- script links -->
<script src="/owl.carousel.js"></script>
<script src="/brand.js"></script>
<style type="text/css">
.holding-page-overlay {
position: fixed;
display: none;
z-index: 999999;
}
.holding-page-overlay .overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
background: url('/assets/logo-only.png?v=6750dd69949643d6f80e84328fedebb9') #fff no-repeat center 100px;
}
.coming-soon {
position: fixed;
width: 100%;
top: 265px;
text-align: center;
color: #6ebb20;
font-weight: normal;
font-family: "Intro-Light-Alt";
font-size: 30px;
}
.dot-com {
position: fixed;
width: 100%;
top: 350px;
font-weight: normal;
font-size: 20px;
}
a.all-regions,
a.all-regions:hover,
a.all-regions:focus {
text-decoration: none;
}
.mobile-only ul.panel {
height: 0;
transition: 0.2s all ease-in;
}
</style>
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container-fluid user-controls-outer-container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="row user-controls-container">
<div class="container">
<div class="row user-controls-row">
<div class="user-controls">
<a class="social-link" href="https://www.facebook.com/landaluk/" target="_blank"><img src="/assets/facebook-nav-icon.png?v=ec27c2daff6f665ee08fb372f9863053" alt="Facebook"></a>
<a class="social-link" href="https://www.youtube.com/channel/UCLl_Atw6PKQpbPGrKeJFjDg" target="_blank"><img src="/assets/youtube-nav-icon.png?v=46dd3d3db171e577d9ae00790515bcea" alt="Youtube"></a>
<a class="social-link" href="https://www.instagram.com/landal_uk/" target="_blank"><img src="/assets/insta-nav-icon.png?v=d7ae4ac432d9b35bad2961ef9cea2464" alt="Instagram"></a>
<a href="/recall-booking" class="pay-balance">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"></path><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"></path></svg>
Pay Balance
</a>
<a href="/contact-us" data-toggle="tooltip" data-placement="bottom" title="Call us on 0345 498 6200" class="contact">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"></path><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"></path></svg>
Contact
</a>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="navbar-header">
<a class="navbar-brand" id="mobile-logo" href="/"><img src="/assets/logo-only.png?v=6750dd69949643d6f80e84328fedebb9" alt="Landal.co.uk"></a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#landal-navbar-collapse" id="nav-icon">
<span></span>
<span></span>
<span></span>
<em id="menu-help-text">MENU</em>
</button>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="landal-navbar-collapse">
<a class="navbar-brand" id="desktop-logo" href="/"><img src="/assets/logo-only.png?v=6750dd69949643d6f80e84328fedebb9" alt="Landal.co.uk"></a>
<!-- <div class="endorser-link"><a href="https://www.awaze.com" target="_blank">An Awaze Company</a></div> -->
<ul class="nav navbar-nav navbar-left">
<li class="dropdown united-kingdom-dd">
<a href="/uk/all-regions?adult=2&child=0&infant=0&pets=0&nights=7&range=3" class="dropdown-toggle">United Kingdom</a>
<!-- <ul class="dropdown-menu">
<div class="block-sm-12">
<div class="block-sm-8 block-md-9 right-side-nav">
<h3><span>Nine stunning locations</span></h3>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-kielder-waterside-kiel" class="kiel">
<div class="kielder-link park-link">
<div class="block-xs-4">
<img src="https://img.chooseacottage.co.uk/property/kie/300/kiel-01c_14.jpg">
</div>
<div class="block-xs-8">
<p class="title">Landal Kielder Waterside</p>
<p class="location">Kielder, Northumberland</p>
<p class="cost-per-week">from <span>£489</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-darwin-forest-darw" class="darw">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="https://img.chooseacottage.co.uk/property/dar/300/darw-01a_13.jpg">
</div>
<div class="block-xs-8">
<p class="title">Landal Darwin Forest</p>
<p class="location">Matlock, Peak District</p>
<p class="cost-per-week">from <span>£435</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding clear-left">
<a href="/uk/landal-sandybrook-sanb" class="sanb">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/sanb-nav.jpg?v=24f1231d6a3c4f24c2d0adc2846ca8f1">
</div>
<div class="block-xs-8">
<p class="title">Landal Sandybrook</p>
<p class="location">Ashbourne, Peak District</p>
<p class="cost-per-week">from <span>£419</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-gwel-an-mor-gwel" class="gwel">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/gwel-nav.jpg?v=cc1656bea47b488da0eb0b661c0cc9fc">
</div>
<div class="block-xs-8">
<p class="title">Landal Gwel an Mor</p>
<p class="location">Portreath, Cornwall</p>
<p class="cost-per-week">from <span>£545</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-piperdam-pipe" class="pipe">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/pipe-nav.jpg?v=cf4ae692c3183466350c53c4afd7fbf2">
</div>
<div class="block-xs-8">
<p class="title">Landal Piperdam</p>
<p class="location">Dundee, Southern Highlands</p>
<p class="cost-per-week">from <span>£337</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-kenwick-woods-kenw" class="kenw">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/kenw-nav.png?v=65e7a982b74a380951fd697657a92cb8">
</div>
<div class="block-xs-8">
<p class="title">Landal Kenwick Woods</p>
<p class="location">Louth, Lincolnshire</p>
<p class="cost-per-week">from <span>£339</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-woodland-lakes-wdls" class="wdls">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/wdls-nav.jpg?v=53cf1e9f4e5c82225068a3e543fafe1c">
</div>
<div class="block-xs-8">
<p class="title">Landal Woodland Lakes</p>
<p class="location">Thirsk, Yorkshire</p>
<p class="cost-per-week">from <span>£305</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="/uk/landal-barton-pines-beyo" class="beyo">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/beyo-nav.png?v=16e5e0fd46f7b34319252b66d910eab2">
</div>
<div class="block-xs-8">
<p class="title">Landal Barton Pines</p>
<p class="location">Paignton, South Devon</p>
<p class="cost-per-week">from <span>£335</span> per week</p>
</div>
</div>
</a>
</div>
<div class="block-sm-12 block-md-6 lg-no-padding">
<a href="https://www.landal.co.uk/uk/landal-rockingham-forest-rofo" class="rofo">
<div class="darwin-link park-link clearfix">
<div class="block-xs-4">
<img src="/assets/rockingham-nav.png?v=30765ebcc5744a01d500f5598bc677dd">
</div>
<div class="block-xs-8">
<p class="title">Landal Rockingham Forest</p>
<p class="location">Wansford, Cambridgeshire</p>
<p class="cost-per-week">from <span>£439</span> per week</p>
</div>
</div>
</a>
</div>
</div>
<div class="block-sm-4 block-md-3 left-side-nav">
<div class="map"> -->
<!-- UK map -->
<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 358 631"><defs><style>.cls-1{fill:#6ebb44;}.cls-2{fill:#70bb44;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><g id="Layer_2-2" data-name="Layer 2"><g id="Layer_1-2-2" data-name="Layer 1-2"><polygon class="cls-1" points="42 77 67 60 86 77 131 0 205 10 205 31 162 61 170 68 156.5 83 230 83 238 106 201 171 187 177 203 192 195 208 230 239 238 318 271 331.39 295 430 285 447 303 447 313 442 340 447 358 473 336 532 305 553 311 569 337 569 335 593 268 610 151 610 121 596 102 597 93 625 52 616 16 631 0 614 60 555 105 543 39 511 39 490 87 464 93 435 67 435 67 422 88 412 81 386 94 384 109 398 142 390 152 348 129 315.5 144 284 113 295 75 278 72 258 111 237 96 207 55 242 74 164 44 168 74 112 42 77"/><polygon class="cls-2" points="28 51 33 19 54 7 65 21 46.5 44 28 51"/><polygon class="cls-2" points="18 64 9 101 22 101 33 64 18 64"/></g></g></g></g></svg> -->
<!-- end UK map -->
<!-- <div class="pointer kiel">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer darw">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer gwel">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer sanb">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer pipe">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer kenw">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer wdls">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer rofo">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
<div class="pointer beyo">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="40" height="40"><g><path xmlns:default="http://www.w3.org/2000/svg" class="map-marker" d="M13.88,11.22c-1.04,1.04-2.72,1.04-3.76,0.01c0,0-0.01-0.01-0.01-0.01C9.06,10.18,9.06,8.5,10.1,7.46 c0,0,0.01-0.01,0.01-0.01c1.04-1.04,2.72-1.04,3.76-0.01c0,0,0.01,0.01,0.01,0.01C14.86,8.48,14.8,10.14,13.88,11.22z M17.33,9.34 c0.02-1.42-0.54-2.78-1.56-3.77C14.78,4.55,13.42,3.98,12,4c-1.42-0.02-2.78,0.55-3.77,1.57C7.21,6.56,6.65,7.92,6.67,9.33 C6.64,9.97,6.75,10.61,7,11.2l3.8,8.06c0.1,0.23,0.27,0.41,0.48,0.54c0.43,0.26,0.98,0.26,1.41,0c0.21-0.13,0.38-0.32,0.49-0.54 L17,11.2c0.25-0.59,0.36-1.22,0.34-1.86l0,0H17.33z" style="fill: rgb(0, 139, 178);" vector-effect="non-scaling-stroke"/></g></svg>
</div>
</div>
</div>
</div>
</ul> -->
</li>
<li class="dropdown europe-dd">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Europe</a>
<ul class="dropdown-menu">
<div class="block-sm-12">
<h3><span>Over 80 locations in 8 countries</span></h3>
<div class="block-sm-5 block-md-3 left-side-nav">
<div class="nav-popular block-sm-12">
<h4>Explore all destinations</h4>
<ul class="nav-link-list">
<li class="last-minute"><a class="last-minute-link" href="/europe/all-regions/?adult=2&child=0&infant=0&range=3&pets=0">Last minute getaways</a></li>
<li><a href="/europe/all-regions?adult=2&child=0&infant=0&nights=4&range=3&pets=0&start=21-02-2022">February Half Term</a></li>
<li><a href="/europe/all-regions?features=9857&adult=2&child=0&infant=0&pets=1">Pet-friendly holidays</a></li>
<li>
<a href="/europe/all-regions?adult=2&child=2&infant=0&nights=4&range=7&pets=0&start=26-07-2022">School summer holidays</a>
<!-- <a data-toggle="modal" data-target="#landalEuroDDLowDepTerms" style="cursor:pointer;"> *</a> -->
</li>
<li><a href="/europe/all-regions?sleeps=7-8&page=1">Breaks for groups</a></li>
</ul>
</div>
</div>
<div class="block-sm-7 block-md-9 right-side-nav">
<div class="block-sm-12">
<div class="block-sm-5 block-md-3 no-padding eu-list">
<ul class="nav-region-list">
<li class="active nav-content-switcher" data-value="allEuropeContent">
<a href="/europe/all-regions">All Europe</a>
</li>
<li class="nav-content-switcher" data-value="netherlandsContent">
<a href="/europe/holland">The Netherlands</a>
</li>
<li class="nav-content-switcher" data-value="germanyContent">
<a href="/europe/germany">Germany</a>
</li>
<li class="nav-content-switcher" data-value="belgiumContent">
<a href="/europe/belgium">Belgium</a>
</li>
<li class="nav-content-switcher" data-value="austriaContent">
<a href="/europe/austria">Austria</a>
</li>
<li class="nav-content-switcher" data-value="czechContent">
<a href="/europe/czech-republic">Czech Republic</a>
</li>
<li class="nav-content-switcher" data-value="denmarkContent">
<a href="/europe/denmark">Denmark</a>
</li>
<li class="nav-content-switcher" data-value="hungaryContent">
<a href="/europe/hungary">Hungary</a>
</li>
<li class="nav-content-switcher" data-value="switzerlandContent">
<a href="/europe/switzerland">Switzerland</a>
</li>
</ul>
</div>
<div class="block-sm-7 block-md-9 no-padding">
<div id="allEuropeContent" class="block-sm-12 nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/all-regions?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/all-regions?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/all-regions?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/all-regions" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="/assets/nav-all-regions.png?v=2d4fc724c13aa44a4f6d982ea063b1a0" class="eu-nav-img" data-value="/assets/nav-all-regions.png?v=2d4fc724c13aa44a4f6d982ea063b1a0" data-loaded="true">
</div>
</div>
<div id="netherlandsContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/holland?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/holland?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/holland?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/holland" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="/assets/nav-netherlands.jpg?v=57e81063a1af3df17bec4965c09a3e34" class="eu-nav-img" data-value="/assets/nav-netherlands.jpg?v=57e81063a1af3df17bec4965c09a3e34" data-loaded="true">
</div>
</div>
<div id="germanyContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/germany?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/germany?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/germany?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/germany" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-germany.jpg?v=2b6f35b9f24514fdab16a770baa4112c" data-loaded="false">
</div>
</div>
<div id="belgiumContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/belgium?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/belgium?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/belgium?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/belgium" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-belgium.jpg?v=8bb444d90e22ada8a099e684c132bb90" data-loaded="false">
</div>
</div>
<div id="austriaContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/austria?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/austria?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/austria?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/austria" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-austria.jpg?v=0d2bc7e90e74caa4a93c5e689cde7987" data-loaded="false">
</div>
</div>
<div id="czechContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/czech-republic?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/czech-republic?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/czech-republic?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/czech-republic" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-czech-republic.jpg?v=c2f80d262ff18facf97cd13c5dfe9019" data-loaded="false">
</div>
</div>
<div id="denmarkContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/denmark?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/denmark?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/denmark?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/denmark" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-denmark.jpg?v=5ccb69a16111e1a3217378ae25eafc52" data-loaded="false">
</div>
</div>
<div id="hungaryContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/hungary?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/hungary?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/hungary?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/hungary" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-hungary.jpg?v=15333aab47e1918fa172eb85b6075670" data-loaded="false">
</div>
</div>
<div id="switzerlandContent" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Holiday types</h4>
<ul class="nav-link-list">
<li><a href="/europe/switzerland?fshow=1&features=2195">Great for families</a></li>
<li><a href="/europe/switzerland?features=2187">Parks with swimming pools</a></li>
<li><a href="/europe/switzerland?features=9857&adult=2&child=0&infant=0&pets=1">Perfect for pets</a></li>
</ul>
<a href="/europe/switzerland" class="nav-btn">View all parks</a>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="" class="eu-nav-img" data-value="/assets/nav-switzerland.jpg?v=5eda473035d0701136e303c7ba5a08c6" data-loaded="false">
</div>
</div>
</div>
</div>
</div>
</div>
</ul>
</li>
<!-- Discover Landal dropdown -->
<li class="dropdown discover-dd">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Discover Landal GreenParks</a>
<ul class="dropdown-menu">
<div class="block-sm-12">
<h3><span>Discover Landal GreenParks</span></h3>
<div class="block-sm-5 block-md-3 left-side-nav">
<div class="nav-popular block-sm-12">
<h4>About Us</h4>
<ul class="nav-link-list">
<li><a class="" href="/about-landal">About Landal GreenParks</a></li>
<li><a href="/discover-landal">Our Brand</a></li>
<li><a href="/greenpledge">Our Green Pledge</a></li>
<!-- <li><a href="/awards">Awards</a></li> -->
<li><a href="/join-the-family">Join the Family</a></li>
</ul>
</div>
</div>
<div class="block-sm-7 block-md-9 right-side-nav">
<div class="block-sm-12">
<div class="block-sm-5 block-md-3 no-padding discover-list">
<ul class="nav-region-list">
<li class="active nav-content-switcher" data-value="ourlocations">
<a class="nav-content-switcher-link">Explore UK regions</a>
</li>
<li class="nav-content-switcher" data-value="discoverlandal">
<a class="nav-content-switcher-link">Holiday Types</a>
</li>
</ul>
</div>
<div class="block-sm-7 block-md-9 no-padding">
<div id="ourlocations" class="block-sm-12 nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Our Locations</h4>
<ul class="nav-link-list">
<li><a href="/discover/peak-district">Peak District</a></li>
<li><a href="/discover/northumberland">Northumberland</a></li>
<li><a href="/discover/cornwall">Cornwall</a></li>
<li><a href="/discover/scotland">Scotland</a></li>
<li><a href="/discover/lincolnshire">Lincolnshire</a></li>
<li><a href="/discover/yorkshire">Yorkshire</a></li>
</ul>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="/assets/landal-holiday-types-nav-side.png?v=f381f3d34a485e418c0787949ec5efbe" class="eu-nav-img" alt="Landal regional locations "
data-value="/assets/landal-holiday-types-nav-side.png?v=f381f3d34a485e418c0787949ec5efbe" data-loaded="true">
</div>
</div>
<div id="discoverlandal" class="block-sm-12 hidden-content nav-region-content no-padding">
<div class="block-sm-12 block-md-6 nav-content-links">
<h4>Our Holidays</h4>
<ul class="nav-link-list">
<li><a href="/discover-landal/adventure-holidays">Adventure holidays</a></li>
<li><a href="/discover-landal/activity-holidays">Activity Holidays</a></li>
<li><a href="/discover-landal/luxury-breaks">Luxury Holidays</a></li>
<li><a href="/discover-landal/wildlife-holidays">Wildlife holidays</a></li>
</ul>
</div>
<div class="block-md-6 nav-content-img no-padding">
<img src="/assets/landal-regional-nav-side.png?v=9ce04d0eed2677993e212f9468fbaeb2" class="eu-nav-img" alt="Landal Holiday types" data-value="/assets/landal-regional-nav-side.png?v=9ce04d0eed2677993e212f9468fbaeb2g"
data-loaded="true">
</div>
</div>
</div>
</div>
</div>
</div>
</ul>
</li>
<li class="mobile-only">
<div class="parent-lnk">Europe</div>
<ul class="panel">
<li>
<a href="/europe/all-regions">All Europe</a>
</li>
<li>
<a href="/europe/holland">The Netherlands</a>
</li>
<li>
<a href="/europe/germany">Germany</a>
</li>
<li>
<a href="/europe/belgium">Belgium</a>
</li>
<li>
<a href="/europe/austria">Austria</a>
</li>
<li>
<a href="/europe/czech-republic">Czech Republic</a>
</li>
<li>
<a href="/europe/denmark">Denmark</a>
</li>
<li>
<a href="/europe/hungary">Hungary</a>
</li>
<li>
<a href="/europe/switzerland">Switzerland</a>
</li>
</ul>
</li>
<li class="mobile-only">
<div class="parent-lnk">Explore UK regions</div>
<ul class="panel">
<li><a href="/discover/peak-district">Peak District</a></li>
<li><a href="/discover/northumberland">Northumberland</a></li>
<li><a href="/discover/cornwall">Cornwall</a></li>
<li><a href="/discover/scotland">Scotland</a></li>
<li><a href="/discover/lincolnshire">Lincolnshire</a></li>
</ul>
</li>
<li class="mobile-only">
<div class="parent-lnk">Holiday types</div>
<ul class="panel">
<li><a href="/discover-landal/adventure-holidays">Adventure holidays</a></li>
<li><a href="/discover-landal/activity-holidays">Activity Holidays</a></li>
<li><a href="/discover-landal/luxury-breaks">Luxury Holidays</a></li>
<li><a href="/discover-landal/wildlife-holidays">Wildlife holidays</a></li>
<!-- <li><a href="#">Forest holidays</a></li>
<li><a href="#">Family breaks</a></li>
<li><a href="#">Log cabin holidays</a></li> -->
</ul>
</li>
<li>
<a href="https://blog.landal.co.uk" class="dropdown-toggle">Blog</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
<div class="fullscreen-overlay"></div>
</div>
<!-- /.container -->
</nav>
<div id="landalEuroDDLowDepTerms" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Terms & Conditions</h4>
</div>
<div class="modal-body">
<p>Book an Easter break today<br> Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only.<br>
</p>
<p>UK Lodges and Parks<br> The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and
11/04/22.<br> These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for
accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows:<br> • up to £1000 = £25<br> • £1,001 – £1,500 = £75<br> • £1,501 - £2,000 = £100<br> • +£2,001 – Not
applicable<br> When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are
purchasing ferry tickets with your booking).<br> The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10
weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not
received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges
which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable).<br> If you have made your booking with the benefit
of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge.<br> We can decide to
extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. </p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script>
if (document.body.classList.contains('lodges')) {
// copied from Hoseasons and tweaked, only run on search, supplier and product details
/* NEW FOR STICKY HEADER */
var StickyHeaderHandler = function() {
var m_iMobileWidthThreshold = 481,
m_iMobileNavHeight = 50,
m_bDefaultMobileNavAndBodyStyles = true,
m_bMobileNavHidden = false,
m_iCachedScrollPos = 0,
m_oMobileNav = document.getElementsByClassName('navbar')[0],
m_iScrollPositionHandlerInterval = 100,
m_iCachedDocumentWidth = 0;
m_fnThrottle = null;
// Public
function fnInit() {
sanityCheck();
}
function fnForceShowMobileNav() {
// try to force a show of the mobile nav if scroll is outside of bounds
if (window.pageYOffset > (m_iMobileNavHeight * 2)) {
m_bMobileNavHidden = true; // assume mobile nav has been automatically hidden by previous dom/css/script
}
scrollUpHandler(true); // always assume scroll up (takes into account window.pageYOffset == 0 and showing the nev if out of bounds)
m_iCachedScrollPos = window.pageYOffset;
}
function fnToggleScrollHandler(bToggle) {
removeScrollListener();
if (bToggle) {
addScrollListener();
}
}
function fnReset(oEvent) {
if (document.documentElement.clientWidth !== m_iCachedDocumentWidth) { // width has changed
m_iCachedDocumentWidth = document.documentElement.clientWidth;
m_bMobileNavHidden = false;
m_iCachedScrollPos = 0;
removeScrollListener();
applyDefaultMobileNavAndBodyClasses();
if (m_iCachedDocumentWidth <= m_iMobileWidthThreshold) { // is mobile
if (GlobalJS.hasOwnProperty('throttle')) { // remove once replication has succeeded
fnToggleScrollHandler(true);
fnForceShowMobileNav();
}
} else {
fnToggleScrollHandler(false);
}
}
}
// Private
function sanityCheck() {
// if markup meets requirements, allow proceed, otherwise feature is not implemented
if (m_oMobileNav && GlobalJS.hasOwnProperty('throttle')) {
m_fnThrottle = GlobalJS.throttle(handleScrollDirection, m_iScrollPositionHandlerInterval);
fnReset(null);
handleDeviceOrientationChange();
}
}
function handleDeviceOrientationChange() {
// Handle device orientation change, using the resize event for most compatibility
window.removeEventListener('resize', fnReset, true); // remove if already added (robust)
window.addEventListener('resize', fnReset, true);
}
function removeScrollListener() {
window.removeEventListener('scroll', m_fnThrottle, true);
}
function addScrollListener() {
removeScrollListener(); // remove if already added (robust)
if (document.documentElement.clientWidth <= m_iMobileWidthThreshold) { // mobile only
window.addEventListener('scroll', m_fnThrottle, true); // throttle the heavy lifting
}
}
function handleScrollDirection() {
if (window.pageYOffset < m_iCachedScrollPos) { // scrolling up
scrollUpHandler();
} else { // scrolling down
scrollDownHandler();
}
// cache the previous scroll position
m_iCachedScrollPos = window.pageYOffset;
}
function scrollUpHandler(bForceApply) {
if (window.pageYOffset === 0) { // within header bounds
// always apply the default body and mobile nav styles if the scroll position is zero
if (!m_bDefaultMobileNavAndBodyStyles) { // only apply if they are not already applied
applyDefaultMobileNavAndBodyClasses();
} else if (bForceApply) {
applyDefaultMobileNavAndBodyClasses();
}
} else {
if (window.pageYOffset > (m_iMobileNavHeight * 2)) { // outside twice the height of header bounds (gives buffer)
// apply the sticky body and mobile nav styles if the scroll position is greater than twice header height
if (m_bDefaultMobileNavAndBodyStyles) { // only apply if they are not applied
applyStickyHeaderClasses();
}
if (m_bMobileNavHidden && window.pageYOffset >= (m_iMobileNavHeight * 2)) {
showMobileNav();
}
} else {
if (!m_bDefaultMobileNavAndBodyStyles && m_bMobileNavHidden) {
applyDefaultMobileNavAndBodyClasses();
}
}
}
}
function scrollDownHandler() {
if (window.pageYOffset <= m_iMobileNavHeight) { // within header bounds
// always show the header if the scroll position is less than the header height
if (!m_bDefaultMobileNavAndBodyStyles) {
applyDefaultMobileNavAndBodyClasses();
}
} else { // outside header bounds
if (m_bDefaultMobileNavAndBodyStyles) {
applyStickyHeaderClasses();
}
if (!m_bMobileNavHidden && window.pageYOffset >= m_iMobileNavHeight) {
hideMobileNav();
}
}
}
function applyStickyHeaderClasses() {
// apply sticky header mobile nav and body classes
m_bDefaultMobileNavAndBodyStyles = false;
m_oMobileNav.classList.add('mobile-nav-sticky-header');
m_oMobileNav.classList.add('mobile-nav-sticky-header-transition');
}
function applyDefaultMobileNavAndBodyClasses() {
// set mobile nav and body back to their default classes
m_bDefaultMobileNavAndBodyStyles = true;
m_oMobileNav.classList.remove('mobile-nav-sticky-header-transition');
m_oMobileNav.classList.remove('mobile-nav-sticky-header');
showMobileNav();
}
function showMobileNav() {
// show header animation
m_bMobileNavHidden = false;
m_oMobileNav.classList.remove('hide-mobile-header');
}
function hideMobileNav() {
// hide header animation
m_bMobileNavHidden = true;
m_oMobileNav.classList.add('hide-mobile-header');
}
return {
init: fnInit,
showMobileNav: fnForceShowMobileNav,
toggleScrollHandler: fnToggleScrollHandler,
reset: fnReset
}
}();
/* END NEW FOR STICKY HEADER */
$(function() {
StickyHeaderHandler.init();
});
}
document.addEventListener('DOMContentLoaded', function() {
$('li.dropdown').mouseover(function(e) {
// clear existing time out and get time hovered on
iTimeNavHoveredOn = new Date().getTime();
killNavTimeout(mainNavTimeout);
// prevent nav from closing
killNavTimeout(closeNavTimeout);
// set new timeout function
mainNavTimeout = setTimeout(function() {
var navbar = document.getElementsByClassName('navbar')[0];
// set nav to be active if it isn't already
if (!navbar.classList.contains('active')) {
navbar.classList.add('active');
}
// check section isn't already active
if (!e.currentTarget.classList.contains('active')) {
// set part of nav hovered on to active
var activeNavSection = document.querySelector('li.dropdown.active');
if (activeNavSection !== null) {
activeNavSection.classList.remove('active');
}
e.currentTarget.classList.add('active');
}
}, 250);
})
$('li.dropdown').mouseleave(function(e) {
var iTimeleft = new Date().getTime();
// if time hovered on is less than half a second cancel function
if ((iTimeleft / 1000) - (iTimeNavHoveredOn / 1000) < 0.5) {
killNavTimeout(mainNavTimeout);
}
closeNavTimeout = setTimeout(closeNav, 250);
})
// nav europe region hover functions
$('.europe-dd .nav-region-list li').mouseover(function(e) {
// clear timeout that exists
iTimeHoveredOn = new Date().getTime();
killNavTimeout(navRegionTimeout);
// set new timeout function
navRegionTimeout = setTimeout(function() {
// get ID of content to show
var sContentToShow = e.currentTarget.getAttribute('data-value'),
oNewContent = document.getElementById(sContentToShow);
// toggle active classes
document.querySelector('.eu-list .nav-region-list li.active').classList.remove('active');
e.currentTarget.classList.add('active');
// show and hide relevant regional content
$('.europe-dd .nav-region-content:visible').hide();
oNewContent.style.display = 'block';
// activate images if not loaded
var oImgToShow = oNewContent.getElementsByClassName('eu-nav-img')[0];
if (oImgToShow.getAttribute('data-loaded') === 'false') {
oImgToShow.setAttribute('src', oImgToShow.getAttribute('data-value'));
oImgToShow.setAttribute('data-loaded', 'true');
}
}, 250);
});
$('.europe-dd .nav-region-list li').mouseout(function(e) {
var iTimeleft = new Date().getTime();
// if time hovered on is less than half a second cancel function
if ((iTimeleft / 1000) - (iTimeHoveredOn / 1000) < 0.5) {
killNavTimeout(navRegionTimeout);
}
});
// nav discover region hover functions
$('.discover-dd .nav-region-list li').mouseover(function(e) {
// clear timeout that exists
iTimeHoveredOn = new Date().getTime();
killNavTimeout(navRegionTimeout);
// set new timeout function
navRegionTimeout = setTimeout(function() {
// get ID of content to show
var sContentToShow = e.currentTarget.getAttribute('data-value'),
oNewContent = document.getElementById(sContentToShow);
// toggle active classes
document.querySelector('.discover-list .nav-region-list li.active').classList.remove('active');
e.currentTarget.classList.add('active');
// show and hide relevant regional content
$('.discover-dd .nav-region-content:visible').hide();
oNewContent.style.display = 'block';
// activate images if not loaded
var oImgToShow = oNewContent.getElementsByClassName('eu-nav-img')[0];
if (oImgToShow.getAttribute('data-loaded') === 'false') {
oImgToShow.setAttribute('src', oImgToShow.getAttribute('data-value'));
oImgToShow.setAttribute('data-loaded', 'true');
}
}, 250);
});
$('.discover-dd .nav-region-list li').mouseout(function(e) {
var iTimeleft = new Date().getTime();
// if time hovered on is less than half a second cancel function
if ((iTimeleft / 1000) - (iTimeHoveredOn / 1000) < 0.5) {
killNavTimeout(navRegionTimeout);
}
});
//Accordian for mobile nav toggles
MasterJS.forEach(document.querySelectorAll(".parent-lnk"), function(oAccordion) {
oAccordion.addEventListener("click", function() {
var oPanel = oAccordion.parentElement.querySelector(".panel");
if (oPanel.className.indexOf("active") > -1) {
oPanel.classList.remove("active");
oAccordion.classList.remove("active");
oPanel.style.height = "0px";
} else {
oPanel.classList.add("active");
oAccordion.classList.add("active");
oPanel.style.height = oPanel.scrollHeight + "px";
}
});
});
// nav uk map hover functions
$('.united-kingdom-dd .right-side-nav a').on('mouseenter', function() {
var hoveredSite = $(this).attr('class');
$('.pointer.' + hoveredSite + '> svg path').css('fill', '#f16f22');
}).on('mouseleave', function() {
var hoveredSite = $(this).attr('class');
$('.pointer.' + hoveredSite + '> svg path').css('fill', '#008bb2');
});
// touch screen nav functions
if (('ontouchstart' in window) || navigator.msMaxTouchPoints || navigator.userAgent.toLowerCase().match(/windows phone os 7/i)) { // is touch screen device
$('.nav-content-switcher').click(function(ev) {
if (!ev.currentTarget.classList.contains('active')) { // only run function if not already active
ev.stopPropagation();
ev.preventDefault();
// set clicked region to be only active region
document.querySelector('.nav-region-list li.active').classList.remove('active');
ev.currentTarget.classList.add('active');
// work out which content to show
var sContentToShow = ev.currentTarget.getAttribute('data-value'),
oNewContent = document.getElementById(sContentToShow);
// show and hide relevant content
$('.nav-region-content:visible').hide();
oNewContent.style.display = 'block';
// load images if screen is big enough and not already loaded
if (document.documentElement.clientWidth > 999) {
var oImgToShow = oNewContent.getElementsByClassName('eu-nav-img')[0];
if (oImgToShow.getAttribute('data-loaded') === 'false') {
oImgToShow.setAttribute('src', oImgToShow.getAttribute('data-value'));
oImgToShow.setAttribute('data-loaded', 'true');
}
}
}
});
}
// mob nav
$('#nav-icon').click(function() {
$(this).toggleClass('open');
$('.navbar-inverse').toggleClass('open');
$('.navbar-collapse').toggleClass('in');
$('html, body').toggleClass('no-scroll');
$('#menu-help-text').text(function(i, text) {
return text === "MENU" ? "CLOSE" : "MENU";
});
});
//*
//*
//End main nav functions
});
// global variables for nav functions
var navRegionTimeout,
iTimeHoveredOn,
mainNavTimeout,
iTimeNavHoveredOn,
closeNavTimeout;
// used to kill functions in timeout
function killNavTimeout(fn) {
if (fn) {
clearTimeout(fn);
fn = null;
}
}
// close nav function
function closeNav() {
var activeDropdown = document.querySelector('li.dropdown.active');
document.getElementsByClassName('navbar')[0].classList.remove('active');
if (activeDropdown !== null) {
activeDropdown.classList.remove('active');
}
}
</script>
<style type="text/css">
.inspirational-modal-text {
margin: 25px 0;
}
/* Preload second background image */
body::after {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
z-index: -1;
content: url(/assets/landal-darw-hero.jpg?v=17ad8a503a3569f0fa07c176d8605b3d);
}
.pod-text .lead-in {
font-size: 30px;
}
@media only screen and (max-width: 768px) {
.pod-text .lead-in {
font-size: 22px;
}
}
@media only screen and (max-width: 320px) {
.pod-text .lead-in {
font-size: 18px;
}
}
.label-container {
position: absolute;
}
.label-container h3 span {
font-family: "Intro-Thin-Alt";
letter-spacing: 0.5px;
}
.label.label-secondary {
background-color: #00adef;
border: 1px solid #00adef;
}
@media only screen and (min-width: 768px) {
.terms-link {
margin-top: 20px;
}
}
@media only screen and (min-width: 768px) and (max-width: 959px) {
.col-sm-offset-3.col-sm-6.col-md-4.col-md-offset-0.pod {
margin-top: 30px;
}
}
/* homepage specific styles */
.hero-img {
position: relative;
height: 580px;
background-image: url(/assets/landal-greenparks-lodge-hero2.jpg?v=7519d58798869eacd04e16add933762f);
background-position: center;
}
.hero-overlay,
.tour-overlay {
position: absolute;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .5);
top: 0;
left: 0;
}
.tour-overlay {
background: rgba(0, 0, 0, 0.3);
}
#hero-featured {
top: 0;
}
.search-row {
padding-top: 100px;
}
#hero-featured h1,
#hero-featured h1 span {
color: #fff;
font-family: 'Open Sans', Arial, Helvetica, sans-serif;
font-size: 40px;
font-weight: 100;
margin: 20px auto;
padding: 20px 0;
position: relative;
}
#hero-featured h1:before,
#hero-featured h1:after {
content: '';
display: block;
width: 252px;
height: 1px;
background: #fff;
position: absolute;
left: calc(50% - 126px);
}
#hero-featured h1:before {
top: 0;
}
#hero-featured h1:after {
bottom: 0;
}
h3.search-title {
font-family: 'Open Sans', Arial, Helvetica, sans-serif;
font-size: 18px;
font-weight: 300;
margin-top: 80px;
}
.usp-text {
font-size: 18px;
font-family: 'Open Sans';
}
.hero-usp {
display: inline-block;
padding: 25px 40px;
}
.hero-usp svg {
vertical-align: middle;
margin-right: 10px;
display: inline-block;
margin-top: -2px;
}
#promo-pods {
margin: 0 auto 60px;
max-width: 95%;
}
#promo-pods a {
display: block;
position: relative;
text-align: center;
}
.pod-text {
margin: -160px auto 40px;
text-align: center;
padding: 10px 20px;
background: rgba(0, 0, 0, .5);
display: inline-block;
vertical-align: top;
}
.pod-text span {
color: #fff;
font-family: 'Open Sans', Arial, Helvetica, sans-serif;
display: block;
font-size: 36px;
font-weight: 300;
}
.pod-text strong {
font-weight: 600;
}
.second-line sup {
font-size: 20px;
top: -15px;
font-weight: 600;
}
.terms-link {
margin-top: 0;
}
.terms-link a {
color: #656565;
text-decoration: underline;
}
.featured-logos .logo {
display: inline-block;
margin: 0 30px 40px;
width: auto;
}
.featured-logos .logo svg {
opacity: .7;
height: 50px;
}
/* svg widths for IE fix */
.featured-logos .logo #telegraph {
width: 308px;
}
.featured-logos .logo #natGeo {
width: 146px;
}
.featured-logos .logo #theGuardian {
width: 152px;
}
.featured-logos .logo #gq {
width: 100px;
}
.featured-logos .logo #travelLeisure {
width: 159px;
}
.grey-bg {
background: #f6f6f6;
}
h2.swoosh,
#tours h2 {
font-size: 40px;
color: #656565;
font-family: 'Intro-Light-Alt';
}
#tours h2 {
display: inline-block;
}
h2.swoosh:after {
content: '';
background-image: url('data:image/svg+xml,%3Csvg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 414.4100036621094 19.920000076293945" width="281" height="7.0986601941747"%3E%3Cg transform="translate(1, 1)"%3E%3Cdefs%3E%3C/defs%3E%3Cg data-name="Layer 2" id="Layer_2_1541778076991"%3E%3Cg data-name="Layer 1" id="Layer_1-2_1541778076991"%3E%3Cpath d="M412.41,6.84a9.74,9.74,0,0,1-4.13.73c-7.45-.13-14.9-.31-22.36-.39-5.69-.07-11.57-.65-17,.09-9.63,1.29-19.24.29-28.84.64-11,.4-22.19.26-33.3.17-9.64-.07-19.28-.59-28.95-.28-3.75.13-7.56-.46-11.33-.06a82.56,82.56,0,0,1-16.56,0c-2.52-.25-4.92.37-7.39.51-6.54.37-13.09.43-19.64.53a13.74,13.74,0,0,0-3.44.39,42.35,42.35,0,0,1-11.55,1.51c-6.59,0-13,1-19.6,1-11.23-.11-22.48.54-33.72.51-10.81,0-21.61-.14-32.43,0-4.1,0-8.18.14-12.26.42a34.43,34.43,0,0,1-3.92.2c-8.7-.43-17.18.77-25.75,1.3-7.7.47-15.39,1.08-23.11,1.46-9.47.47-18.91,1.27-28.3,2.2-7.76.77-15.16-.23-22.56-1.35C3.51,15.89.13,12.64,0,10.79S1,8,3.88,7.57C11.15,6.45,18.65,6.4,26,5.46c16.09-2.08,32.36-3.38,48.73-4Q94,.66,113.31.72c9.94,0,19.88-.31,29.82-.15,10.68.18,21.34-.16,32-.16C192,.41,208.77,0,225.58,0c14.63,0,29.26.18,43.88.71,26.6,1,53.24,1.56,79.81,2.84C367.52,4.42,385.79,5,404,5.84A70.88,70.88,0,0,1,412.41,6.84Z" class="cls-1_1541778076991" vector-effect="non-scaling-stroke" style="fill: rgb(110, 187, 32);"/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E');
background-repeat: no-repeat;
display: block;
width: 284px;
height: 20px;
margin-left: calc(50% - 142px);
margin-top: 10px;
transform: rotate(1deg);
}
section#featured {
padding: 40px 0 60px;
}
.new-in-copy {
padding-top: 30px;
}
.new-text {
font-family: 'Intro-bold-alt';
font-size: 24px;
color: #231f20;
}
.new-in-copy svg {
vertical-align: middle;
margin-top: -10px;
margin-right: 5px;
}
#new-in-carousel img {
padding: 0;
}
#new-in h3 {
font-size: 35px;
font-family: 'Intro-Regular-Alt';
color: #231f20;
margin: 0 auto 20px;
}
#new-in h3 span {
color: inherit;
font-family: 'Intro-Light-Alt';
}
#new-in p {
color: #656565;
font-weight: 100;
font-family: 'Open Sans';
font-size: 18px;
}
.cta-price {
font-size: 18px;
color: #f16e22;
display: block;
font-family: 'Open Sans';
font-weight: 600;
}
.btn.primary-cta {
color: #fff;
background: #6ebb20;
font-size: 16px;
width: 340px;
padding: 15px 0;
margin-top: 10px;
transition: background .3s;
}
.btn.primary-cta:hover {
background: #438927;
}
div#new-in-carousel:before {
content: '';
width: 0;
height: 0;
border-style: solid;
border-width: 0 0px 480px 205px;
border-color: transparent transparent #fff transparent;
display: block;
position: absolute;
top: 0;
left: 0px;
z-index: 1;
transform: rotate(180deg);
}
#new-in-carousel .owl-next {
right: 0;
height: 70px;
}
#new-in-carousel .owl-prev {
left: 122px;
transform: rotate(180deg);
height: 70px;
z-index: 10;
}
#carousel-popular-parks .item .img {
height: 280px;
position: relative;
}
.carousel-overlay:hover {
opacity: 1;
}
.carousel-overlay {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: -moz-linear-gradient(rgba(0, 0, 0, 0) 23%, rgba(0, 0, 0, 0.4) 103%);
background: -webkit-linear-gradient(rgba(0, 0, 0, 0) 23%, rgba(0, 0, 0, 0.4) 103%);
background: linear-gradient(rgba(0, 0, 0, 0) 23%, rgba(0, 0, 0, 0.4) 103%);
opacity: 0;
transition: .4s opacity;
}
#carousel-popular-parks .info {
padding: 5px 0 15px;
}
#inspire {
padding-top: 40px;
}
.inspire-row {
max-width: 900px;
margin: auto;
}
.inspire-block {
height: 310px;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
max-width: 400px;
margin: 40px auto;
position: relative;
}
.inspire-block.cycle {
background-image: url(/assets/inspire-cycling.jpg?v=22afb77821fd3c9894b7c3b378092f16);
}
.inspire-block.peak {
background-image: url(/assets/inspire-peak-district.jpg?v=5233aacbab53cd682b04a07b0277faf0);
}
.inspire-block.scotland {
background-image: url(/assets/inspire-scotland.jpg?v=97b5b21c7ee6964b2929279632f5af3c);
}
.inspire-block.cornwall {
background-image: url(/assets/inspire-cornwall.jpg?v=e2e428febcbbd4f14cdca523b7c65d70);
margin-bottom: 10px;
}
.inspire-block.northumberland {
background-image: url(/assets/inspire-northumberland.jpg?v=ddee18a0ac98ae2b3cf052dfa16f5438);
}
.inspire-block.tall {
height: 660px;
}
.inspire-text {
display: block;
width: 300px;
height: 100px;
background: #fff;
position: absolute;
top: calc(50% - 50px);
left: calc(50% - 150px);
padding-top: 24px;
}
.inspire-text h4 {
font-family: 'Open Sans';
font-size: 24px;
font-weight: 100;
color: #656565;
margin: 0;
}
.inspire-text span {
color: #656565;
font-family: 'Intro-bold-alt';
font-size: 16px;
letter-spacing: 5px;
}
#tours {
margin-top: 20px;
border-top: 1px solid #d6d6d6;
padding-top: 40px;
}
.tour-image {
background-image: url(/assets/360-tours-link.jpg?v=59483909cb4fd7a7db66a24412a9e7e7);
background-position: center;
background-repeat: no-repeat;
background-size: cover;
padding: 50px 0;
}
.tour-image img {
position: relative;
display: block;
margin: auto;
}
.tour-copy p {
font-size: 18px;
font-family: 'Open Sans';
font-weight: 300;
}
.tour-copy>svg {
display: inline-block;
width: 30px;
height: 37px;
margin-right: 10px;
vertical-align: sub;
}
.tour-link {
font-family: 'Open Sans';
font-weight: 600;
color: #000;
font-size: 15px;
display: inline-block;
margin-top: 20px;
margin-bottom: 10px;
}
.tour-link:hover,
.tour-link:focus {
text-decoration: none;
color: #000;
}
.tour-link svg {
vertical-align: middle;
margin-left: 15px;
transition: margin-left .3s;
}
.tour-link:hover svg {
margin-left: 10px;
}
#reviews {
padding: 40px 0 50px;
}
.rated-copy {
display: inline-block;
vertical-align: top;
margin-left: 12px;
}
.rated-content span {
font-family: 'Open Sans';
font-size: 28px;
font-weight: 300;
}
.rated-content a {
font-family: 'Open Sans';
font-size: 15px;
color: #555;
cursor: pointer;
display: block;
text-align: left;
margin-top: 5px;
}
.rated-content a:hover,
.rated-content a:focus {
text-decoration: none;
color: #555;
}
.rated-content a svg {
vertical-align: middle;
margin-left: -5px;
}
.rated-content>svg {
width: 109px;
height: 60px;
vertical-align: middle;
margin-top: 9px;
}
.new-in-copy:last-child {
margin-top: -80px;
padding-top: 0;
clear: both;
}
@media only screen and (max-width: 1200px) {
.hero-usp {
padding: 25px 10px;
}
.usp-text {
font-size: 15px;
}
.new-in-copy:last-child {
margin-top: -10px;
}
}
@media only screen and (min-width: 975px) and (max-width: 1200px) {
.featured-logos .logo {
margin: 0 60px 40px;
}
}
@media only screen and (max-width: 1024px) {
.pod-text span {
font-size: 28px;
}
.second-line sup {
font-size: 16px;
top: -9px;
}
#promo-pods>.container {
max-width: 100%;
width: 100%;
}
}
@media only screen and (max-width: 991px) {
div#new-in-carousel:before {
display: none;
}
#new-in-carousel .owl-prev {
left: 0;
}
.new-in-copy {
text-align: center;
padding-bottom: 30px;
}
.new-in-copy:last-child {
margin-top: 30px;
}
h2.swoosh,
#tours h2 {
font-size: 30px;
}
.tour-copy>svg {
width: 22px;
height: 28px;
}
.tour-image img {
max-width: 80%;
padding: 20px 0;
}
#new-in .owl-item:first-child .item {
background: url(/assets/Barnsoul_interior_min_new.jpg?v=ac04d06b286a59b1c2a534c29180b2d1) center;
background-size: cover;
}
#new-in p {
color: #656565;
font-weight: 100;
font-family: 'Open Sans';
font-size: 18px;
height: 264px;
}
#new-in .owl-item:first-child .item img {
opacity: 0;
}
}
@media only screen and (max-width: 900px) {
.search-row {
padding-top: 20px;
}
h3.search-title {
margin-top: 60px;
}
.usp-text {
font-size: 13px;
}
.pod-text {
margin: -99px auto 20px;
padding: 10px 0;
width: 100%;
}
#inspire .container {
padding: 0;
}
}
@media only screen and (min-width: 768px) {
.inspire-block.cycle,
.inspire-block.peak {
margin-top: 0;
}
.inspire-block.northumberland {
margin-bottom: 10px;
}
}
@media only screen and (max-width: 767px) {
h2.swoosh,
#tours h2 {
font-size: 25px;
}
h2.swoosh:after {
background-size: contain;
width: 204px;
margin-left: calc(50% - 102px);
}
h3.search-title {
display: none;
}
#hero-featured h1 {
font-size: 14px;
letter-spacing: 1px;
margin-bottom: 50px;
}
#hero-featured h1:before,
#hero-featured h1:after {
width: 270px;
left: calc(50% - 135px);
}
.hero-usp svg {
width: 20px;
height: 20px;
}
.hero-usp {
display: block;
padding: 15px 0 0;
}
.hero-usp:last-child {
padding-bottom: 20px;
}
.rated-content img {
display: block;
margin: auto;
}
.rated-content span {
font-size: 24px;
}
.rated-content a {
text-align: center;
}
.inspire-block,
.inspire-block.tall {
margin: 0 auto 10px;
height: 180px;
}
.inspire-text h4 {
font-size: 15px;
}
.inspire-text h4 br {
display: none;
}
span.inspire-text {
position: absolute;
padding: 10px;
height: auto;
width: 230px;
top: auto;
bottom: 13px;
left: calc(50% - 115px);
}
.inspire-text span {
font-size: 14px;
letter-spacing: 3px;
}
.inspire-block.cycle {
background-position: 50% 80%;
}
#tours {
margin-top: 0;
border-top: 0;
}
.tour-image img {
width: 50%;
padding: 0;
}
.tour-copy {
text-align: center;
margin-bottom: 50px;
}
.featured-logos .logo svg {
width: 100% !important;
}
.featured-logos .logo {
margin: 10px 4%;
width: 40%;
}
section#featured {
padding: 40px 0;
}
#carousel-popular-parks .item .img {
height: 200px;
}
}
@media only screen and (max-width: 550px) {
.hero-img {
background: url(/assets/homepage-hero-mobile.jpg?v=478311333522bfab6a5fc147543e7d70);
background-position: center;
background-size: cover;
}
}
@media only screen and (max-width: 400px) {
.pod-text span {
font-size: 20px;
}
.second-line sup {
font-size: 13px;
top: -5px;
}
.pod-text {
margin: auto;
position: absolute;
left: 0;
bottom: 0;
}
.terms-link {
margin-top: 20px;
padding: 5px 0;
}
}
/* price match text styling */
h2.pmp-message {
color: #fff;
}
a.pmp-terms {
color: #fff;
text-decoration: underline;
font-size: 15px;
margin-top: -20px;
display: block;
margin-bottom: 80px;
}
.home .bta-roundel {
top: 7%;
}
@media only screen and (max-width: 767px) {
#hero-featured h1 {
font-size: 24px;
margin-bottom: 20px;
}
a.pmp-terms {
margin-bottom: 30px;
}
}
/* end price match styling */
/* start book with confidence messaging */
.book-with-confidence {
display: flex;
flex-flow: row;
align-items: center;
padding: 100px 0;
text-align: center;
}
.bwc-section {
display: flex;
flex-flow: column;
width: 50%;
align-items: center;
}
.confidence-leaf {
display: none;
}
body:not(.gateway) .confidence-leaf {
display: block;
height: 18px;
padding-bottom: 5px;
}
body:not(.gateway) .book-with-confidence .gateway-leaves {
display: none;
}
.confidence-icon {
display: flex;
height: 45px;
align-items: center;
}
.confidence-title {
color: #555555;
font-size: 32px;
font-weight: 300;
margin: 20px 0;
}
body:not(.gateway) .confidence-title {
font-size: 27px;
font-weight: 400;
margin-top: 0;
}
.book-with-confidence p {
margin-bottom: 30px;
max-width: 430px;
line-height: 1.4;
}
.confidence-usps {
margin: 10px 0 30px;
}
.confidence-usps li {
margin: 5px 0;
}
.confidence-usps li:before {
content: '';
display: inline-block;
width: 6px;
height: 15px;
border-bottom: 2px solid #3a861c;
border-right: 2px solid #3a816c;
transform: rotate(45deg);
margin-right: 12px;
}
.confidence-link {
color: #3a861C;
border: 1px solid #3a861c;
border-radius: 3px;
padding: 15px;
min-width: 200px;
text-align: center;
}
.cottages--home .hide-cottages,
.main .show-boats {
display: none;
}
.boats--home .hide-boats {
display: none;
}
.boats--home .main .show-boats {
display: block;
}
svg.show-boats {
width: auto;
height: 42px;
}
@media only screen and (max-width: 767px) {
.book-with-confidence {
flex-flow: column;
}
.bwc-section {
width: 100%;
}
.bwc-section:first-child {
margin-bottom: 50px;
}
.confidence-title {
font-size: 20px;
}
.confidence-usps {
margin: 0 0 20px;
padding: 0 10px;
}
.confidence-usps li:before {
width: 4px;
height: 12px;
position: absolute;
left: 10px;
}
.confidence-usps li {
position: relative;
padding-left: 30px;
}
body:not(.gateway) .confidence-title {
font-weight: 600;
}
}
.confidence-icon img {
height: 100%;
}
/* end book with confidence messaging */
</style>
<div class="hero">
<div class="hero-img">
<div class="hero-overlay"></div>
</div>
<div class="container" id="hero-featured">
<div class="row">
<div class="col-md-12 search-row">
<!-- S: BTA Winner Logo - desktop -->
<div class="bta-roundel">
<img src="/assets/Landal-bta-2019-winner-logo.png?v=fd6b0381b328a079710c3c0c8a72f541" alt="British Travel Awards - Best UK Family Holiday Company Winner" title="British Travel Awards 2019 Winner Logo">
</div>
<!-- E: BTA Winner Logo - desktop -->
<div class="col-lg-offset-2 col-lg-8 col-sm-12 col-xs-12 no-padding">
<div class="col-xs-12 no-padding text-center">
<h1>Unforgettable holidays are in our nature</h1>
<h2 class="pmp-message">Secure your 2022 getaway with a £25 low deposit</h2>
</div>
<style type="text/css">
/*Defined in search-widget control on 000 GRAND MASTER GLOBAL site*/
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-webkit-text-size-adjust: 100%
}
html {
-webkit-tap-highlight-color: transparent
}
select::-ms-expand {
display: none
}
#global-search-widget.lock-ui {
pointer-events: none !important
}
#global-search-widget .gsw-hide {
display: none !important
}
#global-search-widget input,
#global-search-widget textarea,
#global-search-widget select,
#global-search-widget label,
#global-search-widget span,
#global-search-widget li,
#global-search-widget a {
line-height: 1.3;
font-size: 15px
}
#global-search-widget a {
color: #555;
text-decoration: none
}
#global-search-widget span {
color: #333;
font-weight: 600
}
#global-search-widget input,
#global-search-widget select {
cursor: pointer;
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
-moz-appearance: none
}
#global-search-widget ul {
margin: 0;
list-style: none
}
#global-search-widget table {
border-collapse: collapse;
border-spacing: 0
}
#global-search-widget .form__label {
font-size: 15px;
font-style: normal;
font-variant: normal;
-webkit-font-smoothing: antialiased;
font-family: "Open Sans", Helvetica, Arial, sans-serif;
font-weight: 600;
color: #555;
white-space: nowrap
}
#global-search-widget .form__field--select .form__input option {
color: #555
}
#global-search-widget small {
font-size: 13px;
font-weight: 400
}
#global-search-widget div {
font-size: 0
}
#global-search-widget *:before,
#global-search-widget *:after {
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box
}
#global-search-widget {
width: 100%;
margin: 0;
padding: 0;
text-align: center;
line-height: 27px;
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
user-select: none;
position: relative
}
#global-search-widget.use-border {
border: 10px solid rgba(0, 0, 0, 0.35);
background-color: rgba(0, 0, 0, 0.35)
}
#global-search-widget .showme {
color: #fff;
font-size: 13px;
padding: 10px 0 0 5px;
float: left
}
#global-search-widget #regions li {
font-size: 17px;
font-weight: 600
}
#global-search-widget #regions ul li {
font-size: 18px
}
#global-search-widget #regions ul ul li {
font-size: 15px;
font-weight: 400
}
#global-search-widget #regions ul {
padding: 10px 0 0
}
#global-search-widget #regions {
background: #fff;
padding: 15px;
position: absolute;
width: 100%;
top: 53px;
text-align: left;
margin: 0;
z-index: 1;
-webkit-box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
-moz-box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09)
}
#global-search-widget #regions>li>ul>li {
display: inline-block;
width: 20%;
vertical-align: top;
padding: 0 0 20px 15px;
border-left: 1px solid #e8e8e8
}
#global-search-widget #regions>li>ul>li:nth-of-type(4) {
width: 38%;
padding: 0 0 20px 15px
}
#global-search-widget #regions li:nth-of-type(1),
#global-search-widget #regions li:nth-of-type(5) {
border: none
}
#global-search-widget .date-options-left {
float: left;
width: 75%
}
#global-search-widget .date-options-right {
float: right;
width: 25%;
padding: 45px 6px 0 20px;
line-height: 0
}
#global-search-widget .flexibility {
padding: 30px 0 0
}
#global-search-widget .search_field_container {
width: 25%;
min-width: 25%;
display: inline-block;
position: relative;
vertical-align: bottom;
text-align: left;
line-height: 0
}
#global-search-widget #region-root-select-container {
display: none;
border-right: 1px solid #e2e2e2
}
#global-search-widget.region-root-control-visible #region-root-select-container {
display: inline-block
}
#global-search-widget #region-root-select-container.constrain-width {
width: 18%;
min-width: 18%
}
#global-search-widget #destination-select-container.constrain-width {
min-width: 27%;
width: 27%
}
#global-search-widget #date-select-container.constrain-width {
width: 21%;
min-width: 21%
}
#global-search-widget #party-select-container.constrain-width {
width: 18%;
min-width: 18%
}
#global-search-widget .ui-datepicker-header .ui-state-disabled {
display: none
}
#global-search-widget #gsw-search-btn {
min-width: 16%;
width: 16%;
font-size: 18px;
background-color: #3A861C;
border: #3A861C;
padding: 6px 0;
transition: .25s;
vertical-align: bottom;
display: inline-block;
text-transform: none;
float: none;
margin: 0;
height: 53px;
color: #fff;
font-weight: 600;
font-family: "Open Sans", Arial, sans-serif;
font-style: normal;
letter-spacing: -.5px;
position: relative;
overflow: hidden;
-webkit-mask-image: -webkit-radial-gradient(white, black)
}
#global-search-widget #gsw-search-btn:after {
display: none
}
#global-search-widget #gsw-search-btn span {
font-size: 18px;
line-height: 40px;
color: #fff;
white-space: nowrap
}
#global-search-widget #gsw-search-btn:hover {
color: #fff;
background-color: #275c13
}
#global-search-widget #gsw-search-btn.search-btn-disable {
opacity: .2;
cursor: default !important;
pointer-events: none !important
}
#global-search-widget .ui-datepicker-group {
display: inline-block;
width: 50%
}
#global-search-widget .falseBox {
width: 20px;
height: 20px;
cursor: pointer;
position: absolute;
top: 7px;
left: 0;
background: #fff;
border-radius: 5px;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.4)
}
#global-search-widget .falseBox:after {
content: '';
width: 7px;
height: 3px;
position: absolute;
top: 7px;
left: 5px;
border: 3px solid #3A861C;
border-top: none;
border-right: none;
background: transparent;
opacity: 0;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg)
}
#global-search-widget .filter-checkbox input {
width: 20px;
height: 20px;
position: relative;
top: 5px;
right: 5px;
cursor: pointer
}
#global-search-widget .filter-checkbox {
color: #000;
float: left;
position: relative;
margin: 0 10px
}
#global-search-widget .filter-checkbox input[type=checkbox] {
visibility: hidden
}
#global-search-widget .filter-checkbox input[type=checkbox]:checked+label.falseBox:after {
opacity: 1
}
#global-search-widget #datepickerPopup .ui-datepicker-inline {
width: 100% !important
}
#global-search-widget .ui-datepicker .ui-datepicker-header {
padding: 0 0 10px !important
}
#global-search-widget .ui-datepicker .ui-datepicker-title {
font-size: 18px;
padding: 0 0 6px;
margin: 0 3rem !important
}
#global-search-widget .ui-datepicker .ui-datepicker-title select {
border-color: #336329;
border-radius: 3px;
margin: 0 5px !important;
padding: 3px;
width: 45% !important;
border: 1px solid;
font-size: 13px
}
#global-search-widget .ui-datepicker-header {
text-align: center;
position: relative
}
#global-search-widget .ui-datepicker-prev,
#global-search-widget .ui-datepicker-next {
position: absolute;
width: 80px;
height: 50px;
top: 0;
cursor: pointer
}
#global-search-widget .ui-datepicker-next:after,
#global-search-widget .ui-datepicker-prev:after {
display: inline-block;
font-family: none;
content: "";
position: relative;
margin: 0;
width: 13px;
height: 13px;
top: 5px;
border-left: 6px solid #3A861C;
border-bottom: 6px solid #3A861C;
transform: rotate(225deg);
transition: all .25s ease-in 0
}
#global-search-widget .ui-datepicker-prev:after {
transform: rotate(45deg)
}
#global-search-widget .hasDatepicker .ui-datepicker-next:after,
#global-search-widget .hasDatepicker .ui-datepicker-prev:after {
margin-top: 0
}
#global-search-widget .ui-datepicker-prev:after:hover,
#global-search-widget .ui-datepicker-next:after:hover {
color: #336329
}
#global-search-widget .ui-datepicker-next {
right: -14px
}
#global-search-widget .ui-datepicker-prev {
left: -14px
}
#global-search-widget .ui-datepicker-prev span,
#global-search-widget .ui-datepicker-next span {
display: block;
height: 0;
overflow: hidden;
text-indent: 100%
}
#global-search-widget #dateselection .hasDatepicker {
border-radius: none;
cursor: pointer
}
#global-search-widget .ui-datepicker-calendar {
width: 100%;
text-align: center;
border-spacing: 0;
padding: 0 40px 20px
}
#global-search-widget .ui-datepicker-calendar th {
padding: 0 0 5px;
width: 45px;
min-width: 0;
background: #fff;
color: #333;
line-height: 10px
}
#global-search-widget .ui-state-default {
border: 0 !important;
background-color: #fff;
height: auto;
display: block;
padding: 11px
}
#global-search-widget a.ui-state-default {
color: #333
}
#global-search-widget .ui-state-disabled .ui-state-default {
background: #fefefe;
color: #aaa;
cursor: default;
font-weight: 300
}
#global-search-widget .ui-state-disabled .ui-state-default:hover {
background: #fff;
cursor: no-drop
}
#global-search-widget .ui-state-default--today {
position: relative
}
#global-search-widget .ui-state-default--today:before {
content: " ";
position: absolute;
top: 2px;
right: 2px;
width: 0;
height: 0;
border-top: .5em solid #336329;
border-left: .5em solid transparent
}
#global-search-widget .ui-state-default--disabled:before {
border-top-color: #a9a9a9
}
#global-search-widget .ui-state-default--outfocus {
color: #c6c5c5
}
#global-search-widget .ui-state-default--infocus:hover,
#global-search-widget .ui-state-default--outfocus:hover {
cursor: pointer;
background: #336329;
color: #fff
}
#global-search-widget .ui-state-default--outfocus:hover {
background: none;
color: #eee
}
#global-search-widget .ui-state-active,
#global-search-widget .ui-state-active:hover {
cursor: pointer;
background: #99b194
}
#global-search-widget .ui-state-active.ui-state-default--disabled,
#global-search-widget .ui-state-active.ui-state-default--disabled:hover {
background: #a9a9a9
}
#global-search-widget .ui-state-default--selected,
.ui-state-default--selected:hover {
background: #336329;
color: #fff
}
#global-search-widget a.ui-state-default.date-range {
background-color: #bed8b3 !important
}
#global-search-widget tr th {
text-transform: capitalize
}
#global-search-widget .gsw-chevron-down {
display: block;
float: right;
font-size: 12px;
line-height: 0;
margin: 0;
pointer-events: none;
position: relative;
padding-right: 5px;
text-align: center;
width: 14px;
right: 16px;
bottom: 31px;
z-index: 1
}
#global-search-widget .gsw-chevron-down:before {
content: "";
width: 6px;
height: 6px;
border-left: 2px solid #3A861C;
border-bottom: 2px solid #3A861C;
transform: rotate(-45deg);
position: absolute
}
#global-search-widget .realLabel {
cursor: pointer;
margin-left: 0;
vertical-align: middle;
font-size: 13px;
color: #fff;
font-weight: 400;
margin-top: 10px
}
#global-search-widget .no-dt {
display: none !important
}
#global-search-widget .ui-datepicker-calendar td.ui-datepicker-today {
border: 1px solid #ececec
}
#global-search-widget .ui-datepicker-week-end .ui-state-default {
background: #fff
}
#global-search-widget #dateCancelBtn,
#global-search-widget #partyCancelBtn,
#global-search-widget #rhsCancelBtn {
font-size: 17px;
color: #fff;
padding: 10px 20px;
background: #3A861C;
width: 45.5%;
display: inline-block;
text-align: center;
margin: 0 6px 0 0
}
#global-search-widget #party-breakdown .close-button {
display: none
}
#global-search-widget #party-breakdown>.form__fieldlist>li:first-child {
padding-top: 5px
}
#global-search-widget #dateselection {
display: none;
background: #fff;
padding: 20px;
position: absolute;
top: 53px;
z-index: 2;
width: 100%;
box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
border-bottom: 1px solid #eee
}
#global-search-widget input:focus,
#global-search-widget select:focus,
#global-search-widget textarea:focus,
#global-search-widget button:focus {
outline: none
}
#global-search-widget .destination {
min-width: 34%;
width: 34%;
border-right: 1px solid #e2e2e2
}
#global-search-widget .date {
border-right: 1px solid #e2e2e2
}
#global-search-widget .dp-select {
width: 100%;
text-align: left
}
#global-search-widget .dp-select select {
border: 1px solid #e2e2e2;
margin-top: 4px
}
#global-search-widget .ui-datepicker-multi-2 .ui-datepicker-group {
width: 48%;
margin: 0 1%;
display: inline-block
}
#global-search-widget .ui-datepicker-other-month,
#global-search-widget .ui-datepicker-other-month .ui-state-default {
background: #f7f7f3;
color: #aaa
}
#global-search-widget #region-select,
#dateselection select,
#dateselection input,
.search_field_container select,
.search_field_container input {
display: inline-block;
background: #fff;
padding: 13px 16px;
width: 100%;
border-radius: 0;
border: 0;
cursor: pointer;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
margin: 0;
color: #555;
font-size: 15px;
height: 53px
}
#global-search-widget #region-select {
line-height: 27px
}
#region-select span {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
width: 90%;
position: relative;
top: 4px;
display: block;
font-weight: 400;
color: #555
}
#global-search-widget #regions a {
color: #3A861C;
font-size: 14px
}
#global-search-widget #regions .gsw-global-nav-parent {
cursor: default
}
#global-search-widget #regions a:not(.gsw-global-nav-parent):hover {
text-decoration: underline;
cursor: pointer
}
#global-search-widget #regions .gsw-level-1 li a {
color: #333;
font-weight: 400;
width: 150px;
float: left;
line-height: 26px
}
#global-search-widget #regions .gsw-level-1 li a:hover {
text-decoration: underline !important
}
#global-search-widget #regions .gsw-level-1 li {
width: 150px;
float: left
}
#global-search-widget .gsw-level-1 {
margin: 0 0 0 5px;
padding: 0;
list-style-type: none
}
#global-search-widget .ui-datepicker-current-day a.ui-state-default:hover {
color: #fff
}
#global-search-widget .ui-datepicker-current-day a.ui-state-default {
color: #fff;
background: #3A861C;
border-width: 2px;
padding: 11px !important
}
#global-search-widget .ui-state-active {
border-color: #3A861C
}
#global-search-widget a.ui-state-default:hover {
background: #3A861C;
color: #fff
}
#global-search-widget .ui-datepicker .ui-datepicker-title span,
.dp-select span {
font-size: 15px;
font-weight: 600
}
#global-search-widget .ui-datepicker-unselectable {
background: #f7f7f3 !important
}
#global-search-widget .ui-datepicker-calendar td {
border: 1px solid #ececec;
margin: 0;
padding: 0;
text-align: center;
min-width: 0;
line-height: 41px
}
#global-search-widget .ui-state-default:hover {
text-decoration: none
}
#global-search-widget td.ui-datepicker-week-end {
background: #f3f3f3
}
#global-search-widget #gsw-thg_durationlist option,
#global-search-widget #gsw-thg_adultlist option {
background: #fff
}
#global-search-widget #gsw-thg_durationlist option[disabled] {
font-weight: bold;
color: #000;
}
#global-search-widget .mobile-region-cancel {
text-align: right;
padding: 0;
position: relative;
bottom: 0;
left: 0;
right: 0;
background: #fff;
color: #555;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
width: 50%;
float: right
}
#global-search-widget #checkbox-container {
margin: 0;
padding-left: 10px;
opacity: 0;
transition: .25s opacity ease-in-out
}
#global-search-widget.use-border #checkbox-container {
transform: translateY(10px)
}
#global-search-widget #checkbox-container label {
display: inline-block;
max-width: 100%;
margin: 5px 0 8px;
letter-spacing: 0;
user-select: none
}
#global-search-widget .stepper {
height: 34px;
width: 34px;
border-radius: 3px;
border: 1px solid #3A861C;
display: inline-block;
position: relative;
transition: background-color .3s ease-out;
cursor: pointer;
vertical-align: middle
}
#global-search-widget .stepper.inactive {
color: #D1D1D1;
border-color: #D1D1D1;
background-color: #fff;
border-width: 1px;
cursor: initial;
pointer-events: none
}
#global-search-widget .stepper:after,
#global-search-widget .stepper:before {
transition: border-color .3s ease-out;
content: "";
display: block;
position: absolute
}
#global-search-widget .stepper.up:before {
border-right: 2px solid #3A861C;
width: 15px;
height: 14px;
top: 9px
}
#global-search-widget .stepper:after {
border-bottom: 2px solid #3A861C;
width: 14px;
height: 15px;
left: 9px
}
#global-search-widget .stepper.inactive:before,
#global-search-widget .stepper.inactive:after {
color: #D1D1D1;
border-color: #D1D1D1
}
#global-search-widget .stepper:hover {
background-color: #CEE1C6
}
#global-search-widget .stepper:active {
background-color: #CEE1C6;
border-width: 2px
}
#global-search-widget .party-label {
display: block;
font-size: 15px
}
#global-search-widget #party-breakdown .form__fieldlist {
padding: 0
}
#global-search-widget #party-breakdown .form__fieldlist>li>span {
float: right
}
#global-search-widget .form__label.party__label {
width: 45%;
margin: 0;
display: inline-block;
vertical-align: -webkit-baseline-middle
}
#global-search-widget #party-breakdown {
position: absolute;
width: 100%;
min-width: 270px;
background: #fff;
box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
z-index: 1;
padding: 20px;
border-bottom: 1px solid #eee
}
#global-search-widget #party-breakdown .form__field--select .form__input {
display: none
}
#global-search-widget #party-breakdown .stepperLabel {
padding: 0 10px;
width: 45px;
max-width: 45px;
min-width: 45px;
height: initial;
pointer-events: none;
text-align: center;
display: inline-block;
overflow: hidden;
vertical-align: middle;
font-weight: 400
}
#global-search-widget #party-breakdown>.form__fieldlist>li {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border-bottom: 1px solid #D9D9D9;
padding: 15px 0;
margin: 0;
max-width: 100%
}
#global-search-widget #party-breakdown>.form__fieldlist>li:last-child {
border-bottom: none
}
#global-search-widget .no-children {
border-bottom: 1px dotted #e0e0e0 !important;
font-weight: 600 !important;
}
#global-search-widget #regions .active.gsw-global-nav-parent:after,
#global-search-widget #regions.dropdown-mode .active.gsw-global-nav-parent:after {
-webkit-transform: translateY(4px)rotate(-225deg);
-moz-transform: translateY(4px)rotate(-225deg);
-ms-transform: translateY(4px)rotate(-225deg);
-o-transform: rotate(-225deg);
transform: translateY(4px)rotate(-225deg);
transition: .3s ease all
}
/* DROPDOWN MODE VIEW OF RHS REGIONS */
#global-search-widget #regions.dropdown-mode {
overflow-x: hidden;
overflow-y: auto;
max-height: 466px;
width: 34%;
padding: 10px 15px 15px
}
#global-search-widget.region-root-control-visible #regions.dropdown-mode {
left: 18%;
width: 27%;
max-width: 27%
}
#global-search-widget #regions.dropdown-mode .gsw-global-nav-parent {
border-bottom: 1px dotted #e0e0e0 !important;
font-weight: 600 !important;
cursor: pointer
}
#global-search-widget #regions.dropdown-mode .gsw-global-nav-parent:after {
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
transition: .3s ease all;
content: "";
z-index: -5;
position: relative;
display: inline-block;
float: right;
top: 17px;
right: 4px;
width: 8px;
height: 8px;
border-left: 2px solid #3A861C;
border-bottom: 2px solid #3A861C
}
#global-search-widget #regions.dropdown-mode li:last-of-type {
border: none
}
#global-search-widget #regions.dropdown-mode ul {
padding: 0
}
#global-search-widget #regions.dropdown-mode>li>ul>li {
width: 100%;
padding: 0 5px;
border-left: none;
display: block
}
#global-search-widget #regions.dropdown-mode .gsw-level-1 {
display: none;
overflow: hidden
}
#global-search-widget #regions.dropdown-mode .gsw-level-1 li {
width: 98% !important;
display: block;
padding: 0px;
z-index: -1;
border-bottom: 1px dotted #e0e0e0 !important
}
#global-search-widget #regions.dropdown-mode .gsw-level-1 li a {
font-size: 14px;
width: 100% !important;
color: #5a5a5a !important;
line-height: 16px;
text-decoration: none !important;
padding: 10px
}
#global-search-widget #regions.dropdown-mode a {
width: 100% !important;
display: block;
padding: 0;
font-size: 15px;
font-family: 'Open Sans', Arial, sans-serif;
font-weight: 400;
color: #5a5a5a;
line-height: 48px;
z-index: -1
}
#global-search-widget #regions.dropdown-mode a:hover {
text-decoration: none
}
/* FREETEXT SEARCH */
#global-search-widget #free-text-search-container,
#global-search-widget #gsw-freetext-close-btn,
#global-search-widget #gsw-freetext-clear-btn {
display: none
}
#global-search-widget #gsw-free-text-search {
padding-right: 24px;
text-overflow: ellipsis
}
#global-search-widget #gsw-free-text-search.clear-btn-enabled {
padding-right: 118px
}
#global-search-widget #gsw-free-text-search-output-inner {
display: flex;
flex-direction: column
}
#global-search-widget #gsw-freetext-close-btn {
width: 53px;
height: 53px;
position: absolute;
right: 0;
z-index: 1;
cursor: pointer
}
#global-search-widget #gsw-freetext-clear-btn {
height: 30px;
width: 50px;
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 53px;
background-color: #fff;
color: #555;
font-size: 15px;
line-height: 28px;
text-align: center;
border: 1px solid #dedede;
border-radius: 10px;
cursor: pointer
}
#global-search-widget #gsw-free-text-search-output {
display: none;
width: 100%;
height: auto;
background-color: #fff;
font-size: 15px;
padding: 15px 15px 10px
}
#global-search-widget .gsw-free-text-search-output-separator {
border-bottom: 1px solid #d0d0d0;
margin: 10px 0 20px;
width: 100%
}
#global-search-widget .gsw-free-text-search-output-heading {
font-size: 18px;
color: #3A861C;
font-weight: 500;
margin-bottom: 10px
}
#global-search-widget #regions.dropdown-mode .gsw-free-text-search-output-separator {
width: 100%
}
#global-search-widget #regions.dropdown-mode a.gsw-freetext-search-value {
line-height: 20px;
border-top: 1px dotted #e0e0e0 !important;
padding: 10px 0
}
#global-search-widget #regions.dropdown-mode a.gsw-freetext-search-value:hover {
text-decoration: underline
}
#global-search-widget #regions a.gsw-freetext-search-value {
color: #555;
font-weight: 400;
line-height: 25px
}
#global-search-widget #freetext-rhs-locations {
order: 0
}
#global-search-widget #freetext-rhs-accom-1 {
order: 2
}
#global-search-widget #freetext-rhs-accom-2 {
order: 3
}
#global-search-widget #freetext-geo-locations {
order: 1
}
#global-search-widget svg#gsw-magnify {
display: none
}
#gsw-free-text-search-output-inner .gsw-free-text-search-output-heading ul {
margin-top: 20px
}
#gsw-free-text-search-output-inner .gsw-free-text-search-output-heading ul li:nth-of-type(1) {
border-top: 1px dotted #e0e0e0 !important
}
#gsw-free-text-search-output-inner .gsw-free-text-search-output-heading ul li {
border-bottom: 1px dotted #e0e0e0 !important
}
#petText {
font-weight: normal !important;
font-size: 12px !important;
margin-top: 10px;
text-align: center;
}
@media only screen and (max-width: 500px) {
#petText {
font-size: 15px !important;
}
}
/*SEARCHING BAR*/
#global-search-widget #gsw-search-btn #gsw-loading-bar,
#global-search-widget #gsw-search-btn.searching #gsw-loading-bar {
display: block !important;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(255, 255, 255, 0.3);
overflow: hidden;
-webkit-transform: translateX(-100%);
-ms-transform: translateX(-100%);
-moz-transform: translateX(-100%);
-o-transform: translateX(-100%);
transform: translateX(-100%);
pointer-events: none
}
#global-search-widget #gsw-search-btn.searching #gsw-loading-bar {
-webkit-animation: loading 1.9s cubic-bezier(0.63, 0.12, 0.39, 1) infinite;
-moz-animation: loading 1.9s cubic-bezier(0.63, 0.12, 0.39, 1) infinite;
-ms-animation: loading 1.9s cubic-bezier(0.63, 0.12, 0.39, 1) infinite;
-o-animation: loading 1.9s cubic-bezier(0.63, 0.12, 0.39, 1) infinite;
-animation: loading 1.9s cubic-bezier(0.63, 0.12, 0.39, 1) infinite
}
@keyframes loading {
0% {
-webkit-transform: translateX(-100%);
-moz-transform: translateX(-100%);
-ms-transform: translateX(-100%);
-o-transform: translateX(-100%);
transform: translateX(-100%)
}
50% {
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-o-transform: translateX(0);
transform: translateX(0)
}
100% {
-webkit-transform: translateX(100%);
-moz-transform: translateX(100%);
-ms-transform: translateX(100%);
-o-transform: translateX(100%);
transform: translateX(100%)
}
}
/* JQuery UI - adds this div to the bottom of body, we're not using this in search widget so set to display none*/
#ui-datepicker-div {
display: none
}
/*Reduce the size of the finding holiday font */
@media only screen and (min-width: 990px) and (max-width: 1210px) {
#global-search-widget #gsw-search-btn.searching span {
font-size: 15px
}
}
@media only screen and (min-width: 901px) and (max-width: 989px) {
#global-search-widget #gsw-search-btn.searching span {
font-size: 14px
}
}
@media only screen and (max-width: 1024px) {
#global-search-widget #dateselection {
display: none;
background: #fff;
padding: 20px;
position: absolute;
top: 53px;
z-index: 2;
box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
border-bottom: 1px solid #eee
}
#global-search-widget .date-options-left {
float: left;
width: 80%
}
#global-search-widget .date-options-right {
width: 20%
}
#global-search-widget #dateCancelBtn,
#global-search-widget #partyCancelBtn,
#global-search-widget #rhsCancelBtn {
width: 34.5%
}
}
@media only screen and (max-width: 900px) {
#global-search-widget #checkbox-container {
display: none
}
#global-search-widget.use-border {
border: none;
background-color: transparent
}
#global-search-widget.use-border #checkbox-container {
transform: translateY(0)
}
#global-search-widget .regionList {
min-width: 50%;
border-bottom: 1px solid #e2e2e2
}
#global-search-widget .destination {
min-width: 50%;
border-bottom: 1px solid #e2e2e2;
border-right: none
}
#global-search-widget .date {
min-width: 50%;
border-bottom: 1px solid #e2e2e2
}
#global-search-widget .party {
min-width: 50%
}
#global-search-widget #gsw-search-btn {
width: 100%;
max-width: 100%;
margin: 8px 0 0;
border-radius: 3px
}
#global-search-widget .filter-checkbox {
color: #000;
float: left;
position: relative;
margin: 0 20px 0 0
}
#global-search-widget .realLabel {
cursor: pointer;
margin-left: 0;
vertical-align: middle;
font-size: 15px;
color: #fff;
font-weight: 400
}
#global-search-widget label.realLabel {
position: relative;
left: -9px;
top: -10px
}
#global-search-widget #region-root-select-container.constrain-width,
#global-search-widget #destination-select-container.constrain-width,
#global-search-widget #date-select-container.constrain-width,
#global-search-widget #party-select-container.constrain-width,
#global-search-widget #region-root-select-container,
#global-search-widget #destination-select-container,
#global-search-widget #date-select-container,
#global-search-widget #party-select-container {
width: 100%;
min-width: 100%
}
#global-search-widget.region-root-control-visible #region-root-select-container {
display: inline-block
}
#global-search-widget.region-root-control-visible #regions,
#global-search-widget #dateselection {
top: 108px
}
#global-search-widget.region-root-control-visible #regions.dropdown-mode,
#global-search-widget #regions.dropdown-mode {
left: 0;
width: 100%;
max-width: 100%
}
#global-search-widget.region-root-control-visible #dateselection {
top: 162px
}
}
@media only screen and (max-width: 798px) {
#global-search-widget #dateselection select {
padding: 10px 16px;
height: 50px;
margin-top: 10px
}
#global-search-widget .duration.dp-select {
width: 48%;
margin-left: 0;
float: left
}
#global-search-widget .flexibility.dp-select {
width: 48%;
float: right;
padding: 0
}
#global-search-widget .flexibility {
padding: 20px 0 0
}
#global-search-widget .date-options-left,
#global-search-widget .date-options-right {
width: 100%
}
#global-search-widget .date-options-right {
padding: 0 7px;
margin: 20px 0
}
#global-search-widget .regionList {
min-width: 100%;
border-bottom: 1px solid #e2e2e2
}
#global-search-widget #region-root-select-container {
border-right: none
}
#global-search-widget .destination {
min-width: 100%;
border-bottom: 1px solid #e2e2e2;
border-right: none
}
#global-search-widget .date {
min-width: 100%;
border-bottom: 1px solid #e2e2e2;
border-right: none
}
#global-search-widget .party {
min-width: 100%;
border-right: none
}
#global-search-widget #gsw-search-btn {
width: 100%;
max-width: 100%;
margin: 10px 0 0;
border-radius: 3px;
border: none
}
#global-search-widget #gsw-search-btn:hover {
border: none
}
#global-search-widget label {
margin: 0
}
#global-search-widget label.realLabel {
position: relative;
left: -10px;
top: -4px
}
#global-search-widget .filter-checkbox {
margin: 0
}
/* FREETEXT SEARCH */
#global-search-widget.free-text-search-enabled.gsw-modal #gsw-free-text-search {
height: 60px;
border-bottom: 1px solid #bfbfbf
}
#global-search-widget.free-text-search-enabled.gsw-modal #region-root-select-container,
#global-search-widget.free-text-search-enabled #gsw-freetext-close-btn,
#global-search-widget .free-text-search .gsw-chevron-down {
display: none !important
}
#global-search-widget.free-text-search-enabled.gsw-modal #destination-select-container {
position: fixed;
top: 0;
left: 0;
z-index: 9
}
/* END FREETEXT SEARCH */
}
@media only screen and (max-width: 768px) {
/*Mobile*/
#global-search-widget #dateCancelBtn,
#global-search-widget #partyCancelBtn,
#global-search-widget #rhsCancelBtn {
width: 100%;
height: 60px;
line-height: 40px;
border-radius: 0 !important
}
/* Handle Mobile hover states */
#global-search-widget a.ui-state-default:hover {
background: #fff !important;
color: #333 !important
}
#global-search-widget a.ui-state-default.ui-state-active:hover {
background: #3A861C !important;
color: #fff !important
}
#global-search-widget .ui-datepicker-week-end .ui-state-default:hover {
background: #fff !important
}
/* End Handle Mobile hover states */
#global-search-widget #regions>li>ul>li {
width: 50%;
padding: 0 0 0 15px;
border-left: none
}
#global-search-widget #regions.dropdown-mode .gsw-global-nav-parent:after {
top: 19px
}
#global-search-widget #regions {
background: #fff;
padding: 0 0 70px;
position: fixed;
text-align: left;
margin: 0;
top: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
left: 0;
height: 100%;
z-index: 20;
overflow-y: scroll
}
#global-search-widget.region-root-control-visible #regions {
top: 0
}
#global-search-widget #regions ul {
padding: 0
}
/* Reset dropdown-mode styles */
#global-search-widget.region-root-control-visible #regions.dropdown-mode,
#global-search-widget #dateselection,
#global-search-widget.region-root-control-visible #dateselection {
top: 0
}
#global-search-widget #regions.dropdown-mode {
padding: 0 0 76px;
max-height: calc(100% - 60px)
}
#global-search-widget #regions.dropdown-mode .gsw-level-1 li {
width: calc(100% - 20px) !important
}
#global-search-widget #regions.dropdown-mode .gsw-level-1 li a {
font-size: 16px;
line-height: 26px
}
#global-search-widget #regions.dropdown-mode a {
font-size: 18px;
line-height: 52px
}
#global-search-widget #regions>li>ul>li,
#global-search-widget #regions>li>ul>li:nth-of-type(4),
#global-search-widget #regions.dropdown-mode>li>ul>li,
#global-search-widget #regions.dropdown-mode>li>ul>li:nth-of-type(4) {
padding: 0 15px
}
.body-fixed {
position: fixed;
width: 100%;
height: 100%;
overflow: hidden
}
#global-search-widget .dp-select {
display: inline-block;
position: relative;
width: 18%;
margin: 15px 0 16px 10px
}
#global-search-widget .party__label {
font-size: 18px
}
#global-search-widget .gsw-global-nav-parent {
border-bottom: 1px dotted #e0e0e0 !important;
font-weight: 600 !important
}
#global-search-widget .gsw-global-nav-parent:after {
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
transition: .3s ease all;
content: "";
z-index: -5;
position: relative;
display: inline-block;
float: right;
top: 19px;
right: 4px;
width: 8px;
height: 8px;
border-left: 2px solid #3A861C;
border-bottom: 2px solid #3A861C
}
#global-search-widget .ui-state-default {
padding: 11px !important
}
#global-search-widget #dateselection {
display: none;
background: #fff;
padding: 20px 20px 100px;
position: fixed;
top: 0;
left: 0;
z-index: 20;
width: 100%;
height: 100%;
box-shadow: inset 0 2px 5px 0 rgba(0, 0, 0, 0.09);
overflow-y: scroll
}
#global-search-widget .date-options-right {
padding: 0
}
#global-search-widget .no-dt {
display: block !important
}
#global-search-widget #regions>li>ul>li {
width: 100% !important
}
#global-search-widget #regions .gsw-level-1 li {
width: 100% !important;
display: block;
padding: 3%;
border-bottom: 1px dotted #e0e0e0 !important;
font-size: 1.7rem;
font-family: 'Open Sans', Arial, sans-serif;
font-weight: 400;
color: #5a5a5a;
line-height: 2.2rem;
z-index: -1
}
#global-search-widget .mobile-region-cancel {
text-align: center;
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: #fff;
color: #555;
-webkit-box-shadow: 0 -1px 12px -2px rgba(196, 196, 196, 1);
-moz-box-shadow: 0 -1px 12px -2px rgba(196, 196, 196, 1);
box-shadow: 0 -1px 12px -2px rgba(196, 196, 196, 1);
width: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 999
}
#global-search-widget #regions .mobile-region-cancel {
padding: 20px 0 !important
}
#global-search-widget .gsw-level-1 {
display: none;
overflow: hidden
}
#global-search-widget #regionsContainer .mobile-region-cancel {
padding: 0 !important
}
#global-search-widget #regions a {
width: 100% !important;
display: block;
padding: 0;
font-size: 18px;
font-family: 'Open Sans', Arial, sans-serif;
font-weight: 400;
color: #5a5a5a;
line-height: 52px;
z-index: -1
}
#global-search-widget #regions a:hover {
text-decoration: none
}
#global-search-widget #regions .gsw-level-1 li a {
font-size: 16px;
width: 100% !important;
color: #5a5a5a !important
}
#global-search-widget #regions li:last-of-type {
border: none
}
#global-search-widget #party-breakdown {
position: fixed;
width: 100%;
left: 0;
top: 0px;
height: 100%;
z-index: 99;
overflow-y: scroll;
padding-bottom: 120px
}
#global-search-widget #party-breakdown .close-button {
display: block
}
#global-search-widget #party-breakdown>.form__fieldlist>li {
width: 100%;
max-width: none
}
/* FREETEXT SEARCH */
#global-search-widget.free-text-search-enabled.gsw-modal #regions {
top: 60px
}
#global-search-widget.free-text-search-enabled.gsw-modal #destination-select-container .gsw-chevron-down {
display: none !important
}
#global-search-widget.free-text-search-enabled.gsw-modal #gsw-freetext-clear-btn {
right: 13px
}
#global-search-widget #regions a.gsw-freetext-search-value {
font-size: 16px;
line-height: 22px;
font-size: 16px;
border-top: 1px dotted #e0e0e0 !important;
padding: 5px 0 5px 10px
}
#global-search-widget #gsw-free-text-search-output {
padding: 15px 15px 60px
}
#global-search-widget svg#gsw-magnify {
width: 24px;
height: 24px;
position: absolute;
right: 13px;
top: calc(50% - 12px)
}
/* END FREETEXT SEARCH */
}
@media only screen and (max-width: 350px) {
/*iPhone 5*/
#global-search-widget #datepickerPopup {
overflow-x: hidden
}
#global-search-widget .ui-datepicker-calendar {
width: calc(100% - 1px);
text-align: center;
border-spacing: 0;
padding: 0 15px 10px
}
#global-search-widget .ui-datepicker .ui-datepicker-title span {
font-size: 16px;
font-weight: 600
}
#global-search-widget #dateselection {
padding: 5px 5px 100px
}
#global-search-widget .ui-state-default {
font-size: 13px
}
#global-search-widget .ui-datepicker-calendar td {
line-height: 40px
}
#global-search-widget #regions .gsw-level-1 li a {
width: 130px
}
#global-search-widget .ui-datepicker-prev,
#global-search-widget .ui-datepicker-next {
top: 10px
}
#global-search-widget .date-options-right {
padding: 0 20px;
margin: 0
}
#global-search-widget .ui-datepicker .ui-datepicker-title {
padding: 10px 0 0
}
}
</style>
<div id="global-search-widget" class="use-border">
<div class="global-search-widget-inner">
<div id="region-root-select-container" class="search_field_container regionList">
<div class="disable-overlay"></div>
<select name="regionList" id="region-root-select" class="" data-url="" data-all-regions="all-regions">
<option value="27244" data-url="">Landal</option>
</select>
<i class="gsw-chevron-down" aria-hidden="true"></i>
</div>
<div id="destination-select-container" class="search_field_container destination">
<div id="free-text-search-container">
<div id="gsw-freetext-close-btn"></div>
<svg id="gsw-magnify" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 248 349.57">
<title>magnifying glass icon</title>
<path d="M272.05,260.63A123.62,123.62,0,1,0,222,281.23l48.29,96.71a12,12,0,0,0,16.09,5.37l26.84-13.4a12,12,0,0,0,5.38-16.09ZM116,159a85,85,0,1,1,85,85A85,85,0,0,1,116,159Z" transform="translate(-77 -35)" style="fill:#5a5a5a">
</path>
</svg>
<div id="gsw-freetext-clear-btn">clear</div>
<input id="gsw-free-text-search" type="text" data-url="" data-rhs-search="true" data-value="All regions" placeholder="Enter destination or property name" autocomplete="off">
</div>
<div id="region-select" data-url="uk/all-regions" data-value="UK" data-using-defaultregionid="true"><span>UK</span></div>
<i class="gsw-chevron-down" aria-hidden="true"></i>
</div>
<div id="date-select-container" class="search_field_container date">
<input type="text" id="dateselect" class="datecol" readonly="true" autocomplete="false" data-date="08/04/2022">
<i class="gsw-chevron-down" aria-hidden="true"></i>
</div>
<div id="party-select-container" class="search_field_container party">
<input name="adult" id="gsw-thg_adultlist" class="" readonly="" value="2 guests">
<i class="gsw-chevron-down" aria-hidden="true"></i>
<div id="party-breakdown" style="display: none">
<ul class="form__fieldlist">
<li class="form__field form__field--select">
<label id="adult-stepper-label" for="" class="form__label party__label"><span class="party-label">Adults</span>
<small class="age-range-label">(18+ years)</small></label>
<span id="gsw-adults-span">
<span class="stepper down"></span>
<label for="gsw-ddlAdults" class="stepperLabel">2</label>
<select id="gsw-ddlAdults" name="adult" class="form__input form__input--chosen" autocomplete="nope">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<span class="stepper up"></span>
</span>
</li>
<li class="form__field form__field--select">
<label id="child-stepper-label" for="" class="form__label party__label"><span class="party-label">Children</span>
<small class="age-range-label">(2 - 17 years)</small></label>
<span id="gsw-children-span">
<span class="stepper down inactive"></span>
<label for="gsw-ddlChild" class="stepperLabel">0</label>
<select id="gsw-ddlChild" name="children" class="form__input form__input--chosen" autocomplete="nope">
<option value="0" selected="selected">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<span class="stepper up"></span>
</span>
</li>
<li class="form__field form__field--select">
<label id="infant-stepper-label" for="" class="form__label party__label"><span class="party-label">Babies</span>
<small class="age-range-label">(Under 2 years)</small></label>
<span id="gsw-babies-span">
<span class="stepper down inactive"></span>
<label for="gsw-ddlInfants" class="stepperLabel">0</label>
<select id="gsw-ddlInfants" name="infant" class="form__input form__input--chosen" autocomplete="nope">
<option value="0" selected="selected">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<span class="stepper up"></span>
</span>
</li>
<li class="form__field form__field--select">
<label id="pet-stepper-label" for="" class="form__label party__label"><span class="party-label">Pets</span></label>
<span id="gsw-pets-span">
<span class="stepper down inactive"></span>
<label for="gsw-ddlPets" class="stepperLabel">0</label>
<select id="gsw-ddlPets" name="pets" class="form__input form__input--chosen" autocomplete="nope">
<option value="0" selected="selected">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<span class="stepper up"></span>
</span>
</li>
</ul>
<span id="petText" style="display: none;">Only properties that allow pets will be shown</span>
<div id="partyCancel" class="mobile-region-cancel no-dt">
<a href="" id="partyCancelBtn" class="close-button">Done</a>
</div>
</div>
</div>
<a id="gsw-search-btn">
<span class="search-text">Search</span>
<div id="gsw-loading-bar"></div>
</a>
<div id="checkbox-container"></div>
<div class="" id="dateselection" style="display: none">
<div class="date-options-left">
<div id="datepickerPopup" class="hasDatepicker">
<div class="ui-datepicker-inline ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-datepicker-multi ui-datepicker-multi-2" style="display: block; width: 34em;">
<div class="ui-datepicker-group ui-datepicker-group-first">
<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-left"><a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="Prev"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a>
<div class="ui-datepicker-title"><span class="ui-datepicker-month">April</span> <span class="ui-datepicker-year">2022</span></div>
</div>
<table class="ui-datepicker-calendar">
<thead>
<tr>
<th scope="col"><span title="Monday">Mon</span></th>
<th scope="col"><span title="Tuesday">Tue</span></th>
<th scope="col"><span title="Wednesday">Wed</span></th>
<th scope="col"><span title="Thursday">Thu</span></th>
<th scope="col"><span title="Friday">Fri</span></th>
<th scope="col" class="ui-datepicker-week-end"><span title="Saturday">Sat</span></th>
<th scope="col" class="ui-datepicker-week-end"><span title="Sunday">Sun</span></th>
</tr>
</thead>
<tbody>
<tr>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">1</span></td>
<td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">2</span></td>
<td class=" ui-datepicker-week-end ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">3</span></td>
</tr>
<tr>
<td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">4</span></td>
<td class=" ui-datepicker-unselectable ui-state-disabled "><span class="ui-state-default">5</span></td>
<td class=" ui-datepicker-today" data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default ui-state-highlight" href="#">6</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">7</a></td>
<td class="ui-datepicker-current-day" data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default ui-state-active" href="#">8</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default date-range" href="#">9</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default date-range" href="#">10</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default date-range" href="#">11</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">12</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">13</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">14</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">15</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">16</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">17</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">18</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">19</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">20</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">21</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">22</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">23</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">24</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">25</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">26</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">27</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">28</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">29</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="3" data-year="2022"><a class="ui-state-default" href="#">30</a></td>
<td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
</tr>
</tbody>
</table>
</div>
<div class="ui-datepicker-group ui-datepicker-group-last">
<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-right">
<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="Next"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>
<div class="ui-datepicker-title"><span class="ui-datepicker-month">May</span> <span class="ui-datepicker-year">2022</span></div>
</div>
<table class="ui-datepicker-calendar">
<thead>
<tr>
<th scope="col"><span title="Monday">Mon</span></th>
<th scope="col"><span title="Tuesday">Tue</span></th>
<th scope="col"><span title="Wednesday">Wed</span></th>
<th scope="col"><span title="Thursday">Thu</span></th>
<th scope="col"><span title="Friday">Fri</span></th>
<th scope="col" class="ui-datepicker-week-end"><span title="Saturday">Sat</span></th>
<th scope="col" class="ui-datepicker-week-end"><span title="Sunday">Sun</span></th>
</tr>
</thead>
<tbody>
<tr>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">1</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">2</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">3</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">4</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">5</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">6</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">7</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">8</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">9</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">10</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">11</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">12</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">13</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">14</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">15</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">16</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">17</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">18</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">19</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">20</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">21</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">22</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">23</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">24</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">25</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">26</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">27</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">28</a></td>
<td class=" ui-datepicker-week-end " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">29</a></td>
</tr>
<tr>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">30</a></td>
<td class=" " data-handler="selectDay" data-event="click" data-month="4" data-year="2022"><a class="ui-state-default" href="#">31</a></td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
<td class=" ui-datepicker-week-end ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"> </td>
</tr>
</tbody>
</table>
</div>
<div class="ui-datepicker-row-break"></div>
</div>
</div>
</div>
<div class="date-options-right">
<div class="duration dp-select">
<span>Duration:</span>
<select name="nights" id="gsw-thg_durationlist" class="">
<option value="1">1 night</option>
<option value="2">2 nights</option>
<option value="3">3 nights</option>
<option value="4">4 nights</option>
<option value="5">5 nights</option>
<option value="7" selected="selected">7 nights</option>
<option value="14">14 nights</option>
<option value="21">21 nights</option>
</select>
<i class="gsw-chevron-down" aria-hidden="true"></i>
</div>
<div class="flexibility dp-select">
<span>Flexibility:</span>
<select name="nights" id="thg_flexlist" class="">
<option value="3" selected="selected">+/- 3 days</option>
<option value="7">+/- 7 days</option>
<option value="0">Exact</option>
</select>
<i class="gsw-chevron-down" aria-hidden="true"></i>
</div>
</div>
<div id="dateCancel" class="mobile-region-cancel">
<a href="" id="dateCancelBtn">Done</a>
</div>
</div>
<div id="regionsContainer" style="display: none;">
<ul id="regions" class="dropdown-mode">
<li id="region-id-27244" class="gsw-region-container" style="display: block;">
<ul>
<li data-index="0"><a class="gsw-global-nav-parent"></a>
<ul class="gsw-level-1" style="display: none;">
<li><a data-region-id="1001" href="/uk/all-regions" data-url="uk/all-regions">UK</a></li>
<li><a data-region-id="1002" href="/europe/all-regions" data-url="europe/all-regions">All Europe</a></li>
<li><a data-region-id="1003" href="/europe/holland" data-url="europe/holland">Holland</a></li>
<li><a data-region-id="1004" href="/europe/germany" data-url="europe/germany">Germany</a></li>
<li><a data-region-id="1005" href="/europe/belgium" data-url="europe/belgium">Belgium</a></li>
<li><a data-region-id="1006" href="/europe/austria" data-url="europe/austria">Austria</a></li>
<li><a data-region-id="1007" href="/europe/czech-republic" data-url="europe/czech-republic">Czech Republic</a></li>
<li><a data-region-id="1008" href="/europe/denmark" data-url="europe/denmark">Denmark</a></li>
<li><a data-region-id="1009" href="/europe/hungary" data-url="europe/hungary">Hungary</a></li>
<li><a data-region-id="1010" href="/europe/switzerland" data-url="europe/switzerland">Switzerland</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="mobile-region-cancel no-dt"><a href="" id="rhsCancelBtn" class="close-button">Done</a></div>
</div>
</div>
</div>
<script>
var GlobalSearchWidget = function() {
var m_sinitialCachedBrand = null,
NUM_DAYS_BEFORE_RETENTION_IS_CLEARED = 1,
m_oOptions = null,
m_oaRHSData = null,
m_bRHSInit = false, // flag indicates when RHS has been initialised
m_bDatePickerInit = false,
m_bQuickFiltersVisible = false,
m_iPlusOnMaximumNumber = null,
m_aoRadiiList = null,
m_GSW = document.getElementById('global-search-widget'),
m_oRegionRootSelect = document.getElementById('region-root-select'),
m_oCheckboxContainer = document.getElementById('checkbox-container'),
m_oDateSelector = document.getElementById('dateselect'),
m_oDateContainer = document.getElementById('dateselection'),
m_oRegionSelect = document.getElementById('region-select'),
m_oFreeTextInput = document.getElementById('gsw-free-text-search'),
m_oFreeTextIcon = document.getElementById('gsw-magnify'),
m_oPartySelect = document.getElementById('gsw-thg_adultlist'),
m_oPartyStepperContainer = document.getElementById('party-breakdown'),
m_oHeaderEl = document.getElementsByTagName('header')[0],
m_oBodyEl = document.getElementsByTagName('body')[0],
m_oPartyAdults = document.getElementById('gsw-ddlAdults'),
m_oPartyChildren = document.getElementById('gsw-ddlChild'),
m_oPartyBabies = document.getElementById('gsw-ddlInfants'),
m_oPartyPets = document.getElementById('gsw-ddlPets'),
m_oSearchButton = document.getElementById('gsw-search-btn'),
m_oDurationSelect = document.getElementById('gsw-thg_durationlist'),
m_oFlexibilitySelect = document.getElementById('thg_flexlist'),
m_oRegionsContainer = null,
m_oRegions = null,
m_oSelectedRegion = null,
m_bQuickFiltersPresent = false, // indicates wheteher there are quick filters on the page (set to true after filters are created)
m_oaQuickFiltersToShow = null,
m_iTabletLandscapeMaxWidth = 1023,
m_iMobileLandscapeMaxWidth = 768,
m_iCachedScrollPos = 0,
m_bUseSearchRetention = false,
m_initAllRegion = true,
m_bNonDatedSearch = false,
m_isCatCPartner = false;
m_sWebsiteRoute = /hoseasons.co.uk/.test(window.location.host) ? '' : /chooseacottage.co.uk/.test(window.location.host) ? window.location.pathname.replace(/^\//, '') : '';
// Search Date Properties
m_iMinDate = 0,
m_iDefaultSameDayCutoff = 12,
m_iDefaultDuration = parseInt(m_oDurationSelect.value),
// RHS Dropdown mode
m_bRHSAsDropdownClass = '',
// Flag for resizing
m_sResizeType = 'desktop',
// Labels
m_sSearchLabel = 'Search',
m_sFindingLabel = 'Finding your holiday...',
// Device detection
m_bIsIOS = getIsIOS(),
m_sDefaultSearch = 'All regions',
m_useAjax = null,
DatepickerHandler = null,
hjFreeTextRecording = false;
// **************************************************************************************
// PUBLIC METHODS
function fnInit(oOptions) {
addResizeHandler();
setOptions(oOptions);
DatepickerHandler.init();
addClickHandlers();
changeRHS();
// If RHS has initialised, select default region
if (m_bRHSInit) {
selectDefaultRegion();
}
handleDestinationSearchRetention();
}
function fnSetRHSData(oaRHSData) {
// oaRHSData comes from included search-widget-regions.js file
m_oaRHSData = oaRHSData; // store globally
// If fnInit has not yet ran, stall setting of RHS data until init
if (!m_oOptions) {
return false;
}
// init has already ran (m_oOptions is defined)
processRHSData();
selectDefaultRegion();
}
function fnSetRadiiList(aoRadiiList) {
m_aoRadiiList = aoRadiiList;
}
function fnSetDefaultRegionId(iBrand) {
m_oRegionRootSelect.value = String(iBrand);
setRegionSelectDataUrlFromId(String(m_oRegionRootSelect.value));
changeRHS();
}
// **************************************************************************************
// PRIVATE METHODS
function setOptions(oOptions) {
m_oOptions = oOptions; // store globally
// Use Ajax (for search results pages)
if (m_oOptions.hasOwnProperty("useAjax") && m_oOptions.useAjax) {
m_useAjax = m_oOptions.useAjax;
}
// RHS dropdown
if (m_oOptions.hasOwnProperty('rhsAsDropdown') && m_oOptions.rhsAsDropdown) { // is present and is true
m_bRHSAsDropdownClass = 'dropdown-mode';
}
// RHS has not been initialised yet but m_oaRHSData has been set (RHS loaded before init call)
if (!m_bRHSInit && m_oaRHSData) {
processRHSData();
}
// Region Root Control
if (m_oOptions.hasOwnProperty('showRegionRootControl') && m_oOptions.showRegionRootControl) {
m_GSW.classList.add('region-root-control-visible');
handleRegionRootControlVisibility();
} else {
m_oOptions.showRegionRootControl = false;
}
// End Region Root Control
//Change iniital webRoute
if (m_oOptions.hasOwnProperty('initAllRegion')) {
if (m_oOptions.initAllRegion === false) {
changeWebRoute();
}
}
// TwelvePlus text option
if (m_oOptions.hasOwnProperty('twelvePlus')) {
if (m_oOptions.twelvePlus) {
m_bTwelvePlus = true
}
}
// Search retention active
if (m_oOptions.hasOwnProperty('useSearchRetention')) {
if (m_oOptions.useSearchRetention) {
m_bUseSearchRetention = true;
}
}
// End Search retention active
// Show plus on maximum
if (m_oOptions.hasOwnProperty('setPlusMaximumNumber')) {
if (m_oOptions.setPlusMaximumNumber) {
m_iPlusOnMaximumNumber = m_oOptions.setPlusMaximumNumber
}
}
// If true, bring in site level list of locations to use for overriding default search functionality
if (m_oOptions.hasOwnProperty('useRadiiList')) {
if (m_oOptions.useRadiiList) {
try {
$.getScript("/search-widget-locations.js");
} catch (e) {
throw new Warning('m_oOptions.useRadiiList was set to true but no search-widget-locations.js file was found, defaulting to standard URL building logic')
}
}
}
// Freetext search
if (m_oOptions.hasOwnProperty('freeTextSearch')) {
if (typeof(m_oOptions.freeTextSearch) === 'object' || typeof(m_oOptions.freeTextSearch) === 'boolean') {
m_oOptions.enableFreeTextSearch = true;
FreeTextSearchHandler.init({
openRegionsContainer: openRegionsContainer,
toggleElement: toggleElement
});
} else {
throw new Error('BUILD HALTED: m_oOptions.freeTextSearch must be of type object or boolean');
}
} else {
m_oOptions.enableFreeTextSearch = false;
}
if (m_oOptions.hasOwnProperty('customSearch')) {
if (typeof(m_oOptions.customSearch) === 'object') {
m_bFreeTextInputValid = true;
m_oFreeTextInput.removeAttribute('data-rhs-search');
m_oFreeTextInput.removeAttribute('data-using-defaultRegionID');
m_oFreeTextInput.value = m_oOptions.customSearch.location;
m_oFreeTextInput.setAttribute('data-url', m_oOptions.customSearch.url);
} else {
throw new Error('BUILD HALTED: m_oOptions.customSearch must be of type object');
}
}
// End Freetext search
// If website is a CAT C Partner (Necessary due to URL structure)
if (m_oOptions.hasOwnProperty('isCatCPartner')) {
if (m_oOptions.isCatCPartner) {
m_isCatCPartner = true;
}
}
// Date
if (m_oOptions.hasOwnProperty('date')) {
senseCheckDataProperty(m_oOptions, 'm_oOptions', 'date', 'object');
// start
if (m_oOptions.date.hasOwnProperty('start')) {
senseCheckDataProperty(m_oOptions.date, 'm_oOptions.date', 'start', 'object');
if (m_oOptions.date.start.hasOwnProperty('minDate')) {
senseCheckDataProperty(m_oOptions.date.start, 'm_oOptions.date.start', 'minDate', 'number');
m_iMinDate = Math.min(1, m_oOptions.date.start.minDate);
}
}
// Duration
if (m_oOptions.date.hasOwnProperty('duration')) {
senseCheckDataProperty(m_oOptions.date, 'm_oOptions.date', 'duration', 'object');
// Range
if (m_oOptions.date.duration.hasOwnProperty('range')) {
senseCheckDataProperty(m_oOptions.date.duration, 'm_oOptions.date.duration', 'range', 'array');
createDurationOptions(m_oOptions.date.duration.range);
}
// Value
if (m_oOptions.date.duration.hasOwnProperty('value')) {
senseCheckDataProperty(m_oOptions.date.duration, 'm_oOptions.date.duration', 'value', 'number');
var bUserValueValid = false;
for (var i = 0; i < m_oDurationSelect.children.length; i++) {
var oOption = m_oDurationSelect.children[i];
if (parseInt(oOption.value, 10) === m_oOptions.date.duration.value) {
bUserValueValid = true;
break;
}
}
if (bUserValueValid) {
m_oDurationSelect.value = m_oOptions.date.duration.value;
} else {
m_oDurationSelect.value = m_oDurationSelect.children[0].value;
}
}
}
}
// End Date
// Party
if (m_oOptions.hasOwnProperty('party')) {
senseCheckDataProperty(m_oOptions, 'm_oOptions', 'party', 'object');
buildPartySteppers();
initSteppers();
} else {
initSteppers();
}
// End Party
// Quick Filters
if (m_oOptions.hasOwnProperty('quickFilters')) {
if (Array.isArray(m_oOptions.quickFilters)) {
buildQuickFilterCheckboxes();
} else {
console.log('m_oOptions.quickFilters must be of type Array');
}
}
// Sort Order
if (m_oOptions.hasOwnProperty('sortOrder')) {
senseCheckDataProperty(m_oOptions, 'm_oOptions', 'sortOrder', 'number');
}
// Border
if (m_oOptions.hasOwnProperty('useBorder') && m_oOptions.useBorder) { // is present and is true
m_GSW.classList.add('use-border');
}
// Anchor scrolling
m_oOptions.scrollToAnchorEnabled = true;
if (m_oOptions.hasOwnProperty('scrollToAnchor')) { // is present and is true
if (typeof(m_oOptions.scrollToAnchor) === 'object') {
if (m_oOptions.scrollToAnchor.hasOwnProperty('cssSelector')) {
senseCheckDataProperty(m_oOptions.scrollToAnchor, 'm_oOptions.scrollToAnchor', 'cssSelector', 'string');
setScrollToAnchorElement()
}
} else if (typeof(m_oOptions.scrollToAnchor) === 'boolean' && !m_oOptions.scrollToAnchor) {
m_oOptions.scrollToAnchorEnabled = false;
} else {
throw new Error('BUILD HALTED: m_oOptions.scrollToAnchor must be of type object or boolean');
}
}
// Free Text Google Search Radius
if (!m_oOptions.hasOwnProperty('searchRadius')) {
m_oOptions.searchRadius = 50;
}
// Enable/disable Google API
if (!m_oOptions.hasOwnProperty('disableGoogleAPI')) {
m_oOptions.disableGoogleAPI = false;
}
// Enable/Disable Supplier Search
if (!m_oOptions.hasOwnProperty('supplierResults')) {
m_oOptions.supplierResults = true;
}
// Custom RHS Levels
if (!m_oOptions.hasOwnProperty('rhsSearch')) {
m_oOptions.rhsSearch = 'RHS1,RHS2,RHS3,RHS4,RHS5,GAZETTEER';
}
// Exclude Terms From Free Text Results
if (!m_oOptions.hasOwnProperty('freeTextExcludeList')) {
m_oOptions.freeTextExclude = false;
}
}
function setScrollToAnchorElement() {
if (m_oOptions.scrollToAnchorEnabled && m_oOptions.hasOwnProperty('scrollToAnchor') && m_oOptions.scrollToAnchor.hasOwnProperty('cssSelector')) {
var oScrollToAnchorElement = document.querySelector(m_oOptions.scrollToAnchor.cssSelector);
if (oScrollToAnchorElement) {
m_oOptions.scrollToAnchorElement = oScrollToAnchorElement;
} else {
m_oOptions.scrollToAnchorElement = null;
}
}
}
function handleRegionRootControlVisibility() {
if (m_oOptions.showRegionRootControl) {
//select containers
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) { // desktop
document.getElementById('region-root-select-container').classList.add('constrain-width');
document.getElementById('destination-select-container').classList.add('constrain-width');
document.getElementById('date-select-container').classList.add('constrain-width');
document.getElementById('party-select-container').classList.add('constrain-width');
} else { // mobile
document.getElementById('region-root-select-container').classList.remove('constrain-width');
document.getElementById('destination-select-container').classList.remove('constrain-width');
document.getElementById('date-select-container').classList.remove('constrain-width');
document.getElementById('party-select-container').classList.remove('constrain-width');
}
}
}
function processRHSData() {
// check if the data is an array and it's length is greater than 0
if (Array.isArray(m_oaRHSData) && m_oaRHSData.length > 0) {
createRegionListOptions();
buildRHSMarkup();
initRHS();
} else {
throw new Error('BUILD HALTED: m_oaRHSData is either not an array or it\'s length is 0');
}
}
function changeWebRoute() {
m_oFreeTextInput.dataset.value = '';
}
function createDurationOptions(oaRange) {
// create the options markup for the duration control
if (oaRange.length > 0) {
var sMarkup = '',
bCurrentValueValid = false;
for (var i = 0; i < oaRange.length; i++) {
var oOption = oaRange[i],
bSectionHeading = false;
// check to see if the current value of the duration select equals one if the new options
if (parseInt(m_oDurationSelect.value, 10) === oOption.value) {
bCurrentValueValid = true;
}
// check if current option is a section heading, give it a value of 0 if so
if (oOption.hasOwnProperty('sectionHeading') && oOption.sectionHeading) {
bSectionHeading = true;
oOption.value = 0;
}
// sense check
senseCheckDataProperty(oOption, 'oaRange[' + i + ']', 'value', 'number');
senseCheckDataProperty(oOption, 'oaRange[' + i + ']', 'label', 'string');
// build option attributes
var sAttributes = 'value="' + oOption.value + '"';
if (bSectionHeading) {
sAttributes += ' disabled';
}
// example: <option value="1">1 nights</option>
sMarkup += '<option ' + sAttributes + '>' + oOption.label + '</option>';
}
m_oDurationSelect.innerHTML = sMarkup;
if (!bCurrentValueValid) { // not valid, set the value of the select to the minimum new value
m_oDurationSelect.value = m_oDurationSelect.children[0].value;
}
}
}
function buildQuickFilterCheckboxes() {
var oaQuickFilters = m_oOptions.quickFilters;
if (oaQuickFilters.length > 0) {
m_bQuickFiltersPresent = true;
// create the features pretext
var oFeaturesPretext = document.createElement('div');
oFeaturesPretext.textContent = 'Include these features:';
oFeaturesPretext.className = 'showme';
m_oCheckboxContainer.appendChild(oFeaturesPretext);
// build all quick filters
for (var i = 0; i < oaQuickFilters.length; i++) {
var oQuickFilter = oaQuickFilters[i],
sCheckBoxHTML = '',
oFilterCheckbox = document.createElement('div'),
sChecked = false, // default to false
sName = String('quickFilter_' + i + '_' + oQuickFilter.value); // create a unique name for each quickFilter
if (oQuickFilter.hasOwnProperty('checked') && oQuickFilter.checked) {
sChecked = true;
}
// create markup
oFilterCheckbox.className = 'filter-checkbox';
oFilterCheckbox.style.display = 'none';
sCheckBoxHTML = '<input type="checkbox" id="' + sName + '" value="' + oQuickFilter.value + '" ';
// sense check quick filter properties
senseCheckDataProperty(oQuickFilter, 'oQuickFilter', 'label', 'string');
senseCheckDataProperty(oQuickFilter, 'oQuickFilter', 'value', 'number');
if (!oQuickFilter.hasOwnProperty('regionRootId')) {
throw new Error('oQuickFilter must contain the property regionRootId');
}
if (typeof(oQuickFilter.regionRootId) === 'number') {
// add single regionRootId attribute
sCheckBoxHTML += 'data-region-root-id="' + oQuickFilter.regionRootId + '"';
} else {
senseCheckDataProperty(oQuickFilter, 'oQuickFilter', 'regionRootId', 'array');
// {label:'Wi-Fi', value: 6948, regionRootId: [4335, 22222, 33333, 44444, 55555, 66666, 77777, 88888]},
// add multiple regionRootId attribute
sCheckBoxHTML += 'data-region-root-id="' + oQuickFilter.regionRootId.toString() + '"';
}
if (sChecked) { // add the checked attribute
sCheckBoxHTML += ' checked';
}
sCheckBoxHTML += '>'; // close input tag
sCheckBoxHTML += '<label for="' + sName + '" class="falseBox"></label>';
sCheckBoxHTML += '<label for="' + sName + '" class="realLabel">' + oQuickFilter.label + '</label>';
oFilterCheckbox.innerHTML = sCheckBoxHTML;
m_oCheckboxContainer.appendChild(oFilterCheckbox);
}
}
}
function deselectAllQuickFilters() {
var oaCheckedCheckboxes = document.querySelectorAll('.filter-checkbox input:checked');
if (oaCheckedCheckboxes && oaCheckedCheckboxes.length > 0) {
for (var i = 0; i < oaCheckedCheckboxes.length; i++) {
oaCheckedCheckboxes[i].checked = false;
}
}
}
function buildPartySteppers() {
if (m_oOptions.hasOwnProperty('party')) {
// Adult
if (m_oOptions.party.hasOwnProperty('adult')) {
if (typeof(m_oOptions.party.adult) === 'boolean') { // can be a boolean set to false to remove the option
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'adult', 'boolean');
} else { // must be an object
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'adult', 'object');
if (m_oOptions.party.adult.hasOwnProperty('showPlusOnMaximum') && m_oOptions.party.adult.showPlusOnMaximum) {
m_bShowAdultMaxPlus = true
}
}
buildPartyStepperSection(m_oOptions.party.adult, 'adult-stepper-label', 'gsw-ddlAdults');
} else if (m_bUseSearchRetention) {
attemptToRetainPartyComponent('adult');
}
// Child
if (m_oOptions.party.hasOwnProperty('child')) {
if (typeof(m_oOptions.party.child) === 'boolean') { // can be a boolean set to false to remove the option
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'child', 'boolean');
} else { // must be an object
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'child', 'object');
}
buildPartyStepperSection(m_oOptions.party.child, 'child-stepper-label', 'gsw-ddlChild');
} else if (m_bUseSearchRetention) {
attemptToRetainPartyComponent('child');
}
// Baby
if (m_oOptions.party.hasOwnProperty('baby')) {
if (typeof(m_oOptions.party.baby) === 'boolean') { // can be a boolean set to false to remove the option
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'baby', 'boolean');
} else { // must be an object
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'baby', 'object');
}
buildPartyStepperSection(m_oOptions.party.baby, 'infant-stepper-label', 'gsw-ddlInfants');
} else if (m_bUseSearchRetention) {
attemptToRetainPartyComponent('infant');
}
// Pet
if (m_oOptions.party.hasOwnProperty('pet')) {
if (typeof(m_oOptions.party.pet) === 'boolean') { // can be a boolean set to false to remove the option
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'pet', 'boolean');
} else { // must be an object
senseCheckDataProperty(m_oOptions.party, 'm_oOptions.party', 'pet', 'object');
}
buildPartyStepperSection(m_oOptions.party.pet, 'pet-stepper-label', 'gsw-ddlPets');
} else if (m_bUseSearchRetention) {
attemptToRetainPartyComponent('pets');
}
} else if (m_bUseSearchRetention) {
attemptToRetainPartyComponent('adult');
attemptToRetainPartyComponent('child');
attemptToRetainPartyComponent('infant');
attemptToRetainPartyComponent('pets');
}
}
function attemptToRetainPartyComponent(sPartyComponent) {
var sComponentValue = getStoredSearchValue(sPartyComponent);
if (sComponentValue) {
var sLabelId,
sSelectId;
switch (sPartyComponent) {
case 'adult':
sLabelId = 'adult-stepper-label';
sSelectId = 'gsw-ddlAdults';
break;
case 'child':
sLabelId = 'child-stepper-label';
sSelectId = 'gsw-ddlChild';
break;
case 'infant':
sLabelId = 'infant-stepper-label';
sSelectId = 'gsw-ddlInfants';
break;
case 'pets':
sLabelId = 'pet-stepper-label';
sSelectId = 'gsw-ddlPets';
break;
}
var oOptions = {
value: parseInt(sComponentValue)
}
buildPartyStepperSection(oOptions, sLabelId, sSelectId);
}
}
function buildPartyStepperSection(vPartySection, sLabelId, sSelectId) {
var oLabel = document.getElementById(sLabelId),
oPartySection = null;
if (typeof(vPartySection) === 'boolean') {
if (!vPartySection) {
// is a boolean set to false, delete the party section
oPartySection = oLabel.parentNode;
oPartySection.parentNode.removeChild(oPartySection);
oPartySection = null;
} else {
return false;
}
} else { // is an object, proceed with updating party
oPartySection = vPartySection;
var oSelect = document.getElementById(sSelectId),
iMin = parseInt(oSelect.children[0].value, 10), // get the value of the first option
iMax = parseInt(oSelect.children[oSelect.children.length - 1].value, 10), // get the value of the last option,
iValue = parseInt(oSelect.value, 10),
bReBuildOptions = false,
bChangeValue = false;
// Label
if (oPartySection.hasOwnProperty('label')) {
senseCheckDataProperty(oPartySection, 'oPartySection', 'label', 'string');
oLabel.getElementsByClassName('party-label')[0].innerText = oPartySection.label;
}
// Age Range
if (oPartySection.hasOwnProperty('ageRangeLabel')) {
senseCheckDataProperty(oPartySection, 'oPartySection', 'ageRangeLabel', 'string');
oLabel.getElementsByTagName('small')[0].innerText = oPartySection.ageRangeLabel;
}
// Options
// Min
if (oPartySection.hasOwnProperty('min')) {
senseCheckDataProperty(oPartySection, 'oPartySection', 'min', 'number');
iMin = oPartySection.min;
bReBuildOptions = true;
}
// Max
if (oPartySection.hasOwnProperty('max')) {
senseCheckDataProperty(oPartySection, 'oPartySection', 'max', 'number');
iMax = oPartySection.max;
bReBuildOptions = true;
}
// Value
if (oPartySection.hasOwnProperty('value')) {
senseCheckDataProperty(oPartySection, 'oPartySection', 'value', 'number');
iValue = oPartySection.value;
bChangeValue = true;
}
// check value is still within bounds
if (iValue < iMin || iValue > iMax) {
// value is outside of the bounds, set it to the minimum
iValue = iMin;
bChangeValue = true;
}
// add options
if (bReBuildOptions) {
var sMarkup = '';
for (var i = iMin; i <= iMax; i++) {
sMarkup += '<option value="' + i + '"';
if (iValue === i) {
sMarkup += 'selected="selected"';
}
sMarkup += '>' + i + '</option>';
}
oSelect.innerHTML = sMarkup;
}
if (bChangeValue) {
oSelect.value = iValue;
}
}
}
DatepickerHandler = function() {
var m_oaNextMonthStoredDateRangeData = null,
m_iMonthsToShow = (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) ? 1 : 2;
// Public
function fnInit() {
if (!window.$) {
throw new Error('JQuery missing. Datepicker in global search widget is dependant upon jQuery');
}
if ($.ui) {
// jquery UI already exists on the page, no need to re init
createDatePicker();
} else {
// load in jQuery-ui
var oScript = document.createElement('script');
oScript.async = true;
oScript.addEventListener('load', function(oEvent) {
createDatePicker();
});
oScript.src = 'https://code.jquery.com/ui/1.11.4/jquery-ui.js';
document.getElementsByTagName('head')[0].appendChild(oScript);
}
}
function fnSelectDateRange(bFromSelectMonth) {
var inst = window.$.datepicker._getInst(document.getElementById('datepickerPopup')), // get instance
bCanDelete = true;
deselectDateRange();
// Highlight current day
var oCurrentDay = null;
$('#datepickerPopup td[data-handler=selectDay][data-month=' + inst.currentMonth + '][data-year=' + inst.currentYear + ']').find('a').each(function(oEvent) {
oCurrentDay = $(this);
if (parseInt(oCurrentDay.text(), 10) === parseInt(inst.currentDay, 10)) {
oCurrentDay.parent().addClass('ui-datepicker-current-day');
oCurrentDay.addClass('ui-state-active');
return false;
}
});
if (!oCurrentDay) {
if (m_oaNextMonthStoredDateRangeData) {
var oCalMonth = (m_iMonthsToShow === 2) ? $('.ui-datepicker-group-first') : $('.ui-datepicker-inline');
if (oCalMonth.length > 0) {
bCanDelete = false;
oRow = $(oCalMonth.find('tbody tr')[0]);
if (oRow.find('td[data-month="' + m_oaNextMonthStoredDateRangeData.iMonth + '"][data-year="' + m_oaNextMonthStoredDateRangeData.iYear + '"]').length ===
0) { // only apply the date range to the correct month in the correct year
return false;
}
if (bFromSelectMonth) {
var iNewNumDays = Math.max(m_oaNextMonthStoredDateRangeData.iDurationValue - m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth, 0);
m_oaNextMonthStoredDateRangeData.iDurationValue = parseInt(m_oDurationSelect.value);
m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth = m_oaNextMonthStoredDateRangeData.iDurationValue - iNewNumDays;
}
carryOverDays(oRow, m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth, true, true);
}
}
return false;
}
// Only store the max days to carry into the next month once
if (bCanDelete && m_oaNextMonthStoredDateRangeData) {
m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth = null;
}
// Highlight duration
var iNights = parseInt(m_oDurationSelect.value),
oaNextAll = oCurrentDay.parent().nextAll().not('.ui-datepicker-unselectable').slice(0, iNights);
iDaysToCarryForward = Math.max(iNights - oaNextAll.length, 0);
oaNextAll.find('.ui-state-default').addClass('date-range');
if (iDaysToCarryForward > 0) {
carryOverDays(oCurrentDay.parent(), iDaysToCarryForward, false);
}
}
function fnReset() {
// capture the currently selected date
var oCurrentDatepickerDate = $('#datepickerPopup').datepicker('getDate');
// kill the datepicker
$('#datepickerPopup').datepicker('destroy');
createDatePicker(oCurrentDatepickerDate);
}
function fnUpdateMaxYear(oMaxYearDate) {
$('#datepickerPopup').datepicker('option', 'maxDate', oMaxYearDate);
}
// Private
function createDatePicker(oDate) {
var oSelectedDateEl = null;
//datepicker js
var oStartDateProperties = getStartDateProperties(),
oStartDate = (oDate && typeof(oDate !== 'undefined')) ? oDate : oStartDateProperties.date,
iDuration = oStartDateProperties.duration;
if (m_bUseSearchRetention) { // if search retention is being used
var sDate = getStoredSearchValue('start');
if (sDate && sDate !== 'null') { // check startDate is stored and is not null
var saDate = sDate.split('-');
oStartDate = new Date(saDate[2], (saDate[1] - 1), saDate[0]);
}
var sDuration = getStoredSearchValue('nights');
if (sDuration) { // check nights is stored
iDuration = parseInt(sDuration);
}
var sRange = getStoredSearchValue('range');
if (sRange) { // check range is stored
m_oFlexibilitySelect.value = sRange;
}
}
if (oStartDate) {
var iMonth = oStartDate.getMonth() + 1,
iDay = oStartDate.getDate(),
oCurrentdate = (('' + iDay).length < 2 ? '0' : '') + iDay + '/' + (('' + iMonth).length < 2 ? '0' : '') + iMonth + '/' + oStartDate.getFullYear();
oStartDate.setDate(oStartDate.getDate());
}
$('#datepickerPopup').datepicker({
altFormat: "dd-mm-yyyy",
dateFormat: "dd/mm/yy",
maxDate: getMaxDate(),
minDate: m_iMinDate,
firstDay: 1,
numberOfMonths: m_iMonthsToShow,
dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
onSelect: function(dateText, inst) {
if (m_bNonDatedSearch) {
m_bNonDatedSearch = false;
extendUpdateDatepickerInternalMethod(fnSelectDateRange);
}
m_oaNextMonthStoredDateRangeData = null;
// apply the date text to m_oDateSelector
var sNights = (parseInt(m_oDurationSelect.value) === 1) ? 'night' : 'nights';
m_oDateSelector.value = this.value + ' for ' + m_oDurationSelect.value + ' ' + sNights;
m_oDateSelector.setAttribute('data-date', this.value);
// select date range
setTimeout(function(oEvent) {
fnSelectDateRange();
}, 1); // timeout to get around timing bug within datepicker
},
onChangeMonthYear: function(iYear, iMonth) {
setTimeout(function(oEvent) {
fnSelectDateRange();
}, 1); // timeout to get around timing bug within datepicker
}
});
if (oStartDate) { // allow the date to be set for a dated search
m_bDatePickerInit = true;
m_bNonDatedSearch = false;
// ***************************
// DP BUG FIX
// implement updateDatepicker override, this is to get around a severe timing bug with datepicker, doing a cache clear refresh and a normal refresh causes
// dp to call it's internal _updateDatepicker method at different times :(
extendUpdateDatepickerInternalMethod(fnSelectDateRange);
// END DP BUG FIX
// ***************************
$('#datepickerPopup').datepicker('setDate', oStartDate);
// Set duration
// Check if requested duration exists as an option in the select
for (var i = 0; i < m_oDurationSelect.children.length; i++) {
if (parseInt(m_oDurationSelect[i].value, 10) === iDuration) {
m_oDurationSelect.value = iDuration;
setInitialDateSelectorValue(iDuration, oCurrentdate);
return;
}
}
// otherwise set to default
m_oDurationSelect.value = m_iDefaultDuration;
setInitialDateSelectorValue(m_iDefaultDuration, oCurrentdate);
} else {
// ***************************
// DP BUG FIX
// implement updateDatepicker override, this is to get around a severe timing bug with datepicker, doing a cache clear refresh and a normal refresh causes
// dp to call it's internal _updateDatepicker method at different times :(
extendUpdateDatepickerInternalMethod(deselectCurrentDay);
// END DP BUG FIX
$('#datepickerPopup').datepicker('setDate', null);
}
}
function extendUpdateDatepickerInternalMethod(fnCallback) {
if ($.datepicker._updateDatepicker_originalDurationSelect) {
$.datepicker._updateDatepicker = $.datepicker._updateDatepicker_originalDurationSelect;
$.datepicker._updateDatepicker_originalDurationSelect = null;
delete $.datepicker._updateDatepicker_originalDurationSelect;
}
$.datepicker._updateDatepicker_originalDurationSelect = $.datepicker._updateDatepicker; // store the original reference to _updateDatepicker
$.datepicker._updateDatepicker = function(inst) {
// call the original _updateDatepicker method
$.datepicker._updateDatepicker_originalDurationSelect(inst);
setTimeout(function(oEvent) {
fnCallback();
}, 1);
}
}
function setInitialDateSelectorValue(iDuration, oCurrentdate) {
var sNights = (parseInt(m_oDurationSelect.value) === 1) ? 'night' : 'nights',
sDurationDisplay = 'for ' + iDuration + ' ' + sNights;
if (m_bIsIOS) { // fixes an ios display bug when used in conjunction with popstate
m_oDateSelector.setAttribute('placeholder', oCurrentdate + ' ' + sDurationDisplay);
}
m_oDateSelector.value = oCurrentdate + ' ' + sDurationDisplay;
m_oDateSelector.setAttribute('data-date', oCurrentdate);
}
function carryOverDays(oRow, iDays, bUseNextMonth, bAfterChangeMonth) {
var oNextRow = (bUseNextMonth) ? oRow : oRow.closest('tr').next(),
oChildren = oNextRow.find('td').not('.ui-datepicker-unselectable').slice(0, iDays),
iRemainingDays = 0,
oaChildrenToHighlight = oChildren.find('.ui-state-default');
if (bUseNextMonth) {
// store the data for next month highlighting
m_oaNextMonthStoredDateRangeData.iDays = iDays;
m_oaNextMonthStoredDateRangeData.iMonth = parseInt(oChildren[0].getAttribute('data-month'));
m_oaNextMonthStoredDateRangeData.iYear = parseInt(oChildren[0].getAttribute('data-year'));
}
oaChildrenToHighlight.addClass('date-range');
if (iDays > 7) {
if (oaChildrenToHighlight.length > 0) {
iRemainingDays = iDays - oaChildrenToHighlight.length;
carryOverDays(oNextRow, iRemainingDays, false);
} else {
attemptToSelectNextMonth(iDays, oaChildrenToHighlight);
}
} else {
if (iDays > oaChildrenToHighlight.length) {
if (oaChildrenToHighlight.length > 0) {
if (!bAfterChangeMonth) {
attemptToSelectNextMonth(iDays, oaChildrenToHighlight);
} else {
iRemainingDays = iDays - oaChildrenToHighlight.length;
carryOverDays(oNextRow, iRemainingDays, false);
}
} else {
attemptToSelectNextMonth(iDays, oaChildrenToHighlight);
}
}
}
function attemptToSelectNextMonth(iDays, oaChildrenToHighlight) {
// at the end of the month, carry over days into the following month
iDays = iDays - oaChildrenToHighlight.length;
// Only store the max days to carry into the next month once
if (!m_oaNextMonthStoredDateRangeData) {
m_oaNextMonthStoredDateRangeData = {
iMaxDaysToCarryIntoNextMonth: iDays,
iDurationValue: parseInt(m_oDurationSelect.value)
};
} else {
if (!m_oaNextMonthStoredDateRangeData.hasOwnProperty('iMaxDaysToCarryIntoNextMonth') || !m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth) {
m_oaNextMonthStoredDateRangeData.iMaxDaysToCarryIntoNextMonth = iDays;
m_oaNextMonthStoredDateRangeData.iDurationValue = parseInt(m_oDurationSelect.value);
}
}
// If user is currently selecting a date in the .ui-datepicker-group-last, do not allow selection of the same month
if ($('.ui-datepicker-current-day').parents('.ui-datepicker-group-last').length === 1) {
return false;
}
// Allow selection of date-range in the next month
var oNextCalMonth;
if (m_iMonthsToShow === 2) {
oNextCalMonth = $('.ui-datepicker-group-last');
if (oNextCalMonth.length > 0) {
oNextRow = $(oNextCalMonth.find('tbody tr td a.ui-state-default:not(.date-range)')[0]).parents('tr');
carryOverDays(oNextRow, iDays, true);
}
} else { // is mobile
// store the data for next month highlighting
var oCurrentDay = $('.ui-datepicker-current-day'),
iCurrentMonth = parseInt(oCurrentDay.attr('data-month')),
iCurrentYear = parseInt(oCurrentDay.attr('data-year')),
iNextMonth = (iCurrentMonth === 11) ? 0 : iCurrentMonth + 1,
iYear = (iCurrentMonth === 11) ? iCurrentYear + 1 : iCurrentYear;
m_oaNextMonthStoredDateRangeData.iDays = iDays;
m_oaNextMonthStoredDateRangeData.iMonth = iNextMonth;
m_oaNextMonthStoredDateRangeData.iYear = iYear;
}
}
}
function deselectCurrentDay() {
// deselect the current day
var sNonDatedMessage = 'Please select a date',
oCurrentDayTD = $('.ui-datepicker-current-day'),
oCurrentDayA = oCurrentDayTD.find('a');
if (oCurrentDayTD[0]) {
oCurrentDayTD[0].className = '';
}
if (oCurrentDayA[0]) {
oCurrentDayA[0].className = 'ui-state-default';
}
if (m_bIsIOS) { // fixes an ios display bug when used in conjunction with popstate
m_oDateSelector.setAttribute('placeholder', sNonDatedMessage);
}
m_oDateSelector.value = sNonDatedMessage;
m_oDateSelector.setAttribute('data-date', 'null');
}
function deselectDateRange() {
// reset highlighting
var oPreviousCurrentDay = $('.ui-datepicker-current-day');
oPreviousCurrentDay.removeClass('ui-datepicker-current-day');
oPreviousCurrentDay.find('.ui-state-default.ui-state-active').removeClass('ui-state-active');
$('#datepickerPopup .date-range').each(function(oEvent) {
$(this).removeClass('date-range');
});
}
return {
init: fnInit,
selectDateRange: fnSelectDateRange,
reset: fnReset,
updateMaxYear: fnUpdateMaxYear
}
}();
function resetRegionSelect() {
// for now hard code innerText to All regions
m_oRegionSelect.setAttribute('data-value', m_sDefaultSearch);
m_oRegionSelect.innerText = m_sDefaultSearch;
m_oRegionSelect.setAttribute('data-url', m_oRegionRootSelect.getAttribute('data-all-regions'));
}
function resetFreeTextInput(bFromRegionRootSelect) {
if (m_oOptions.enableFreeTextSearch && bFromRegionRootSelect) {
m_oFreeTextInput.setAttribute('data-value', m_sDefaultSearch);
m_oFreeTextInput.setAttribute('data-rhs-search', 'true');
m_oFreeTextInput.setAttribute('data-url', '');
m_oFreeTextInput.removeAttribute('data-directLink');
m_oFreeTextInput.removeAttribute('data-geoSearch');
m_oFreeTextInput.value = '';
}
}
function updateDatePickerMaxYear() {
if (m_bDatePickerInit) {
DatepickerHandler.updateMaxYear(getMaxDate());
}
}
function getMaxDate() {
var iMaxYear,
bUseDefaultMaxYear = true;
// max year
if (m_oOptions.hasOwnProperty('date') && m_oOptions.date.hasOwnProperty('maxYear')) {
senseCheckDataProperty(m_oOptions.date, 'm_oOptions.date', 'maxYear', 'object');
if (m_oOptions.hasOwnProperty('defaultRegionRootId')) {
var iMaxYearFromDateObject = m_oOptions.date.maxYear[String(m_oRegionRootSelect.value)];
if (iMaxYearFromDateObject) {
bUseDefaultMaxYear = false;
iMaxYear = m_oOptions.date.maxYear[String(m_oRegionRootSelect.value)];
}
}
}
if (bUseDefaultMaxYear) {
// default max year to next year
var oCurrentDate = new Date();
iMaxYear = oCurrentDate.getFullYear() + 1;
}
// end max year
// 31st dec is hard-coded, year is optional through init
return new Date(iMaxYear, 11, 31);
}
function getStartDateProperties() {
// current defaults
var bUseDefaultStartDate = true, // used to prevent defualt start date
iSameDayCutoff = m_iDefaultSameDayCutoff,
iDuration = m_iDefaultDuration,
oToday,
iSingleDay = (24 * 60 * 60 * 1000), // the number of milliseconds of a single day (used to add days to a date)
oStartDate = new Date();
// Handle start date
if (m_oOptions.hasOwnProperty('date') && m_oOptions.date.hasOwnProperty('start')) {
senseCheckDataProperty(m_oOptions.date, 'm_oOptions.date', 'start', 'object');
// can set cutoff independantly from type, this will change the cutoff time of the default logic
if (m_oOptions.date.start.hasOwnProperty('cutoff')) {
senseCheckDataProperty(m_oOptions.date.start, 'm_oOptions.date.start', 'cutoff', 'number');
iSameDayCutoff = m_oOptions.date.start.cutoff;
}
if (m_oOptions.date.start.hasOwnProperty('type')) {
senseCheckDataProperty(m_oOptions.date.start, 'm_oOptions.date.start', 'type', 'string'); // mandatory
switch (m_oOptions.date.start.type) {
case 'sameday':
// SAME DAY BOOKING
bUseDefaultStartDate = false;
oToday = new Date();
// if custom minDate, minDate temporarily shelved to 1 as max value
if (m_iMinDate === 1) {
oStartDate = new Date(oToday.setDate(oToday.getDate() + m_iMinDate));
} else {
// if the time is after or at cutoff, set oStartDate to tomorrow
if (oStartDate.getHours() >= iSameDayCutoff) {
oStartDate = new Date(oToday.setDate(oToday.getDate() + 1));
}
}
break;
case 'specified':
var oDateToUse = m_oOptions.date.start.chosenDate;
oToday = new Date();
if (oDateToUse && typeof(oDateToUse) === 'object' && oDateToUse > oToday) {
bUseDefaultStartDate = false;
oStartDate = oDateToUse;
} else {
bUseDefaultStartDate = true;
}
break;
case 'nondated':
bUseDefaultStartDate = false;
m_bNonDatedSearch = true;
oStartDate = null;
break;
// TODO: Add further booking options (ie 'nextday') if needed
}
}
}
if (bUseDefaultStartDate) {
// Default booking logic
return getDefaultSearchCriteria();
}
return {
date: oStartDate,
duration: iDuration
};
}
function getDefaultSearchCriteria() {
// Default booking logic
var oDate = new Date(),
iDay = oDate.getDay(),
iHours = oDate.getHours(),
iDuration = null,
bIsWeekend = false,
oStartDate = null;
// Check if current day and time is between friday 12pm and Monday 12pm
if (iDay > 4 || iDay < 2) {
// Within Day Range
switch (iDay) {
case 5: // Friday
if (iHours >= 12) {
bIsWeekend = true;
}
break;
case 1: // Monday
if (m_iMinDate === 0 && iHours < 12) {
bIsWeekend = true;
}
break;
default:
bIsWeekend = true;
}
}
if (bIsWeekend) {
if (m_iMinDate === 1 && iDay === 1) {
// mindate is 1 and is Monday, book for the weekend starting on the next friday (5)
oStartDate = getSpecificDay(oDate, 5);
iDuration = 3; // Book for 3 nights
} else {
// Is the weekend, book for the week starting on the next monday (1)
oStartDate = getSpecificDay(oDate, 1);
iDuration = 4; // Book for 4 nights
}
} else {
if (m_iMinDate === 1 && iDay === 5) {
// mindate is 1 and day is Friday, book for the week starting on the next monday (1)
oStartDate = getSpecificDay(oDate, 1);
iDuration = 4; // Book for 4 nights
} else {
// Is the week, book for the weekend starting on the next friday (5)
oStartDate = getSpecificDay(oDate, 5);
iDuration = 3; // Book for 3 nights
}
}
return {
date: oStartDate,
duration: iDuration
};
}
function getSpecificDay(oDate, iDayOfWeek) {
// Return the date for a specific future day
var specificDate = new Date(oDate),
iDaysOffset = (iDayOfWeek + 7 - specificDate.getDay()) % 7;
specificDate.setDate(specificDate.getDate() + iDaysOffset);
return specificDate;
}
function addClickHandlers() {
// ios/ Safari input fix
var oaReadonlyInputs = document.querySelectorAll('input[readonly]');
for (var i = 0; i < oaReadonlyInputs.length; i++) {
oaReadonlyInputs[i].addEventListener('focus', function(oEvent) {
this.blur();
});
}
// end ios/ Safari input fix
m_oDateSelector.addEventListener('click', function(oEvent) {
toggleElement(m_oDateContainer);
toggleElement(m_oRegionsContainer, false);
toggleElement(m_oPartyStepperContainer, false);
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
toggleFixBody(true);
}
});
// show list of regions
if (!m_oOptions.enableFreeTextSearch) {
m_oRegionSelect.addEventListener('click', function(oEvent) {
openRegionsContainer();
});
}
m_oPartySelect.addEventListener('click', function(oEvent) {
oEvent.preventDefault();
toggleElement(m_oPartyStepperContainer);
toggleElement(m_oRegionsContainer, false);
toggleElement(m_oDateContainer, false);
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
toggleFixBody(true);
}
});
// other fields changing functions HOS Specific
m_oRegionRootSelect.addEventListener('change', function(oEvent) {
setRegionSelectDataUrlFromId(String(oEvent.currentTarget.value));
changeRHS(true);
});
// search button click
m_oSearchButton.addEventListener('click', function(oEvent) {
if (m_bIsIOS) {
history.pushState({}, ''); // Handle navigating back in ios, reset the search button
setTimeout(function(oEvent) { // allow safari browser catchup
getSearchUrl();
}, 50);
} else {
getSearchUrl();
}
});
// Handle navigating back (fixes iOS specific back state issues)
window.onpopstate = function(event) {
// reset the search button
toggleSearchBtnSearchingState(false);
DatepickerHandler.reset();
updatePartyLabel(true);
resetRegionSelect();
resetFreeTextInput();
toggleLockUI(false);
};
// Mac safari back button fix
if (navigator.userAgent.indexOf('Intel Mac OS') > -1) {
window.addEventListener('pagehide', function() {
// reset the search button
toggleSearchBtnSearchingState(false);
DatepickerHandler.reset()
updatePartyLabel(true);
toggleLockUI(false);
});
setTimeout(function() {
// set timeout seems to be the only to get this to work on back button
if (m_GSW.classList.contains('lock-ui')) {
// reset the search button
toggleSearchBtnSearchingState(false);
DatepickerHandler.reset();
updatePartyLabel(true);
resetRegionSelect();
resetFreeTextInput();
toggleLockUI(false);
}
}, 500);
}
document.getElementById('dateCancelBtn').addEventListener('click', function(oEvent) {
handleClick(oEvent, m_oDateContainer);
});
// prevent default mouseup
m_oDateContainer.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
m_oDateSelector.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
m_oPartySelect.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
m_oPartyStepperContainer.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
m_oRegionSelect.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
document.getElementById('dateselect').addEventListener('mousedown', function(oEvent) {
oEvent.preventDefault();
oEvent.stopPropagation();
});
document.getElementById('gsw-thg_adultlist').addEventListener('mousedown', function(oEvent) {
oEvent.preventDefault();
oEvent.stopPropagation();
});
handleDesktopDocumentMouseListeners();
// mobile close button functions
document.getElementById('partyCancelBtn').addEventListener('click', function(oEvent) {
oEvent.preventDefault();
m_oPartyStepperContainer.style.display = 'none';
toggleFixBody(false);
});
m_oDurationSelect.addEventListener('change', function(oEvent) {
var sNights = (parseInt(m_oDurationSelect.value) === 1) ? 'night' : 'nights';
m_oDateSelector.value = document.getElementById('datepickerPopup').value + ' for ' + m_oDurationSelect.value + ' ' + sNights;
DatepickerHandler.selectDateRange(true);
}, true);
}
function openRegionsContainer() {
if (m_oOptions.enableFreeTextSearch) {
FreeTextSearchHandler.regionsContainerOpened();
}
toggleElement(m_oRegionsContainer);
toggleElement(m_oDateContainer, false);
toggleElement(m_oPartyStepperContainer, false);
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
toggleFixBody(true);
}
}
function handleDesktopDocumentMouseListeners() {
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) {
// functions to hide boxes when clicked outside of
document.addEventListener('mouseup', documentMouseUp);
} else {
document.removeEventListener('mouseup', documentMouseUp);
}
}
function documentMouseUp(oEvent) {
closeAllUIPanels();
}
function handleClick(oEvent, oEl) {
oEvent.preventDefault();
oEl.style.display = 'none';
toggleFixBody(false);
}
function toggleFixBody(bFix) {
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) {
return false
} // do not reset scroll
if (bFix) {
m_GSW.classList.add('gsw-modal');
// cache the window scroll position
m_iCachedScrollPos = window.pageYOffset;
if (m_oHeaderEl) { // Hoseasons sticky header
m_oHeaderEl.style.display = 'none';
}
if (!(window.location.hostname.indexOf('www.bluechipholidays.co.uk') > -1)) {
m_oBodyEl.classList.add('body-fixed');
}
} else {
m_GSW.classList.remove('gsw-modal');
m_oBodyEl.classList.remove('body-fixed');
if (m_oHeaderEl) {
m_oHeaderEl.style.display = 'block';
}
// Re-apply last cached window scroll position
window.scrollTo(0, m_iCachedScrollPos);
}
}
function selectRegion(oElement) {
// turn attributes of clicked element in to variables
var sDataUrl = (oElement !== null) ? oElement.getAttribute('data-url') : '',
sLinkText = (oElement !== null) ? oElement.innerText : 'All regions';
// use variables to update region input
m_oRegionSelect.removeAttribute('data-using-defaultRegionID');
if (!m_oOptions.enableFreeTextSearch) {
m_oRegionSelect.setAttribute('data-value', sLinkText);
m_oRegionSelect.innerHTML = '<span>' + sLinkText + '</span>';
if (sDataUrl) {
m_oRegionSelect.setAttribute('data-url', sDataUrl);
} else {
m_oRegionSelect.removeAttribute('data-url');
}
} else {
FreeTextSearchHandler.selectRegion(sLinkText, sDataUrl, true);
}
}
function initSteppers() {
// initial set up of steppers
var oaSteppers = document.querySelectorAll('.stepper'),
oStepper = null,
oSelect = null;
for (var i = 0; i < oaSteppers.length; i++) {
oStepper = oaSteppers[i],
oSelect = oStepper.parentNode.getElementsByTagName('select')[0];
// stepper up
if (oStepper.classList.contains('up')) {
if (oSelect.selectedIndex === oSelect.length - 1) {
oStepper.classList.add('inactive');
}
// stepper down
} else if (oStepper.classList.contains('down')) {
if (oSelect.selectedIndex === 0) {
oStepper.classList.add('inactive');
}
}
}
updatePartyLabel(true);
addStepperEventListeners();
}
function addStepperEventListeners() {
var oaStepperUp = document.querySelectorAll('.stepper.up'),
oaStepperDown = document.querySelectorAll('.stepper.down');
// add click functions for all stepper ups
for (var i = 0; i < oaStepperUp.length; i++) {
oaStepperUp[i].addEventListener('click', function(oEvent) {
handleStepperClick('increment', this, this.parentNode.getElementsByTagName('select')[0], this.parentNode.getElementsByTagName('label')[0]);
});
}
// add click functions for all stepper downs
for (var i = 0; i < oaStepperDown.length; i++) {
oaStepperDown[i].addEventListener('click', function(oEvent) {
handleStepperClick('decrement', this, this.parentNode.getElementsByTagName('select')[0], this.parentNode.getElementsByTagName('label')[0]);
});
}
}
function handleStepperClick(sType, oStepper, oSelect, oLabel) {
if (sType === 'increment') {
// increase selected index by 1
oSelect.selectedIndex = oSelect.selectedIndex + 1;
// make down stepper active again once value increased
oStepper.parentNode.getElementsByClassName('down')[0].classList.remove('inactive');
// check if max value reached to make stepper inactive
if (oSelect.selectedIndex === oSelect.length - 1) {
oStepper.classList.add('inactive');
}
} else { //decrement
// decrease selected index by 1
oSelect.selectedIndex = oSelect.selectedIndex - 1;
// make stepper up active again once value decreased
oStepper.parentNode.getElementsByClassName('up')[0].classList.remove('inactive');
// check if min value reached to make stepper inactive
if (oSelect.selectedIndex === 0) {
oStepper.classList.add('inactive');
}
}
oLabel.innerHTML = oSelect.value;
updatePartyLabel();
}
function updatePartyLabel(bInit) {
var iAdults = parseInt(m_oPartyAdults.value),
iChildren = parseInt(m_oPartyChildren.value),
iBabies = parseInt(m_oPartyBabies.value),
iPets = parseInt(m_oPartyPets.value),
iMaximumAdults = parseInt(m_oPartyAdults.children[m_oPartyAdults.children.length - 1].value, 10),
sPetOrPets = (iPets > 1) ? 'pets' : 'pet',
iTotalGuests = iAdults + iChildren + iBabies,
sGuestOrGuests = (iTotalGuests > 1) ? 'guests' : 'guest'
document.getElementById("petText").style.display = iPets > 0 ? "block" : "none";
if (typeof(bInit) !== 'undefined' && bInit) {
// update the select labels
document.querySelector('#gsw-adults-span .stepperLabel').innerText = iAdults;
document.querySelector('#gsw-children-span .stepperLabel').innerText = iChildren;
document.querySelector('#gsw-babies-span .stepperLabel').innerText = iBabies;
document.querySelector('#gsw-pets-span .stepperLabel').innerText = iPets;
}
var sPartyLabelText
if (!!m_iPlusOnMaximumNumber && iTotalGuests >= m_iPlusOnMaximumNumber) {
sPartyLabelText = m_iPlusOnMaximumNumber + '+ guests'
if (iAdults >= m_iPlusOnMaximumNumber) {
document.querySelector('#gsw-adults-span .stepperLabel').innerText = iAdults + '+'
} else {
document.querySelector('#gsw-adults-span .stepperLabel').innerText = iAdults
}
} else {
sPartyLabelText = iTotalGuests + ' ' + sGuestOrGuests
}
// if(iPets > 0) {
// divNotes = document.getElementById("selectNotes");
// divNotes.innerHTML = "<p> Only properties that allow pets will be shown </p>";
// divNotes.classList.remove("hidden");
// } else {
// if(divNotes) {
// divNotes.classList.add("hidden");
// }
// }
m_oPartySelect.value = iPets < 1 ? sPartyLabelText : sPartyLabelText + ', ' + iPets + ' ' + sPetOrPets
}
function changeRHS(bFromRegionRootSelect) {
if (!m_bRHSInit) {
return;
} // RHS must be initialised first
// show/hide relevant quick filter checkboxes
changeQuickFilters(bFromRegionRootSelect);
// toggle all regions
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth || m_bRHSAsDropdownClass !== '') { // mobile or RHSAsDropdown
toggleAllRegions(false);
} else {
toggleAllRegions(true);
}
if (!m_bUseSearchRetention) {
resetRegionSelect();
resetFreeTextInput(bFromRegionRootSelect);
} else if (bFromRegionRootSelect) {
resetFreeTextInput(bFromRegionRootSelect);
}
updateDatePickerMaxYear();
}
function toggleAllRegions(bToggle) {
// functions to run everytime brand is changed
var oaRegionContainers = document.getElementsByClassName('gsw-region-container'),
oLevel1Elements = document.getElementsByClassName('gsw-level-1'),
oNavParents = document.getElementsByClassName('gsw-global-nav-parent'),
i = 0;
for (i = 0; i < oaRegionContainers.length; i++) {
oaRegionContainers[i].style.display = 'none';
}
for (i = 0; i < oLevel1Elements.length; i++) {
if (bToggle) {
oLevel1Elements[i].removeAttribute('style');
} else {
oLevel1Elements[i].style.display = 'none';
}
oLevel1Elements[i].classList.remove('active'); // remove all active classes
}
for (i = 0; i < oNavParents.length; i++) {
oNavParents[i].classList.remove('active'); // remove all active classes
}
// show correct region list
m_oSelectedRegion = document.getElementById('region-id-' + m_oRegionRootSelect.value);
m_oSelectedRegion.style.display = 'block';
}
function changeQuickFilters(bFromRegionRootSelect) {
if (bFromRegionRootSelect) {
deselectAllQuickFilters();
}
var i = 0,
oaAllQuickFilters = document.getElementsByClassName('filter-checkbox'),
oaQuickFiltersToShowNL = document.querySelectorAll('[data-region-root-id*="' + m_oRegionRootSelect.value + '"]'),
oaQuickFiltersToShow = [];
// data-region-root-id="4335,22222,33333,44444,55555,66666,77777,88888" // could be mulitple
// data-region-root-id="4335" // could be single
// convert oaQuickFiltersToShowNL to an array (oaQuickFiltersToShow)
for (var i = 0; i < oaQuickFiltersToShowNL.length; i++) {
oaQuickFiltersToShow.push(oaQuickFiltersToShowNL[i]);
}
// check if oaQuickFiltersToShow contains the same quickFilters as the current set
// if the same, do not attempt to fade in/out
if (areNewQuickFiltersDifferentFromCurrentSet(oaQuickFiltersToShow)) {
if (oaQuickFiltersToShow.length > 0) {
if (m_bQuickFiltersVisible) {
// fade out
m_oCheckboxContainer.addEventListener('transitionend', fadeInQuickFilters);
m_oCheckboxContainer.removeAttribute('style');
} else {
// initial
hideAndShowQuickFilters();
m_bQuickFiltersVisible = true;
m_oCheckboxContainer.style.opacity = 1; // fade in
}
} else {
m_oaQuickFiltersToShow = null;
m_bQuickFiltersVisible = false;
m_oCheckboxContainer.removeAttribute('style');
}
}
}
function areNewQuickFiltersDifferentFromCurrentSet(oaQuickFiltersToShow) {
// compare oaQuickFiltersToShow to m_oaQuickFiltersToShow
if (!m_oaQuickFiltersToShow || !oaQuickFiltersToShow) {
return true;
}
if (m_oaQuickFiltersToShow.length !== oaQuickFiltersToShow.length) {
return true;
}
// sort arrays to the orders match
m_oaQuickFiltersToShow.sort();
oaQuickFiltersToShow.sort();
for (var i = 0; i < m_oaQuickFiltersToShow.length; ++i) {
if (oaQuickFiltersToShow[i] !== m_oaQuickFiltersToShow[i]) {
return true;
}
}
return false;
}
function hideAndShowQuickFilters() {
var i = 0,
oaAllQuickFilters = document.getElementsByClassName('filter-checkbox');
oaQuickFiltersToShow = document.querySelectorAll('[data-region-root-id*="' + m_oRegionRootSelect.value + '"]');
// hide all quick filters
for (var i = 0; i < oaAllQuickFilters.length; i++) {
oaAllQuickFilters[i].style.display = 'none';
}
// show relevant quick filters
for (var i = 0; i < oaQuickFiltersToShow.length; i++) {
oaQuickFiltersToShow[i].parentNode.removeAttribute('style');
}
//store module level variable for the current quick filters (converting NodeList to an array)
m_oaQuickFiltersToShow = [];
for (var i = 0; i < oaQuickFiltersToShow.length; i++) {
m_oaQuickFiltersToShow.push(oaQuickFiltersToShow[i]);
}
}
function fadeInQuickFilters(oEvent) {
// fade in
m_oCheckboxContainer.removeEventListener('transitionend', fadeInQuickFilters);
hideAndShowQuickFilters();
m_bQuickFiltersVisible = true;
m_oCheckboxContainer.style.opacity = 1; // fade in
}
function getSearchUrl() {
var bIsRHSSearch = true;
if (m_oFreeTextInput.getAttribute('data-rhs-search') !== 'true') {
// free text input value has not come from an RHS select region
bIsRHSSearch = false;
var sDataURL = m_oFreeTextInput.getAttribute('data-url');
if (!sDataURL || sDataURL === '') { // allow a search if the data url has been set from search retention
if (!FreeTextSearchHandler.applyMatchedInputString()) {
FreeTextSearchHandler.failedFreeTextSearch();
openRegionsContainer();
m_oFreeTextInput.focus();
return false;
};
}
}
toggleLockUI(true);
toggleSearchBtnSearchingState(true);
var sSearchDate = m_oDateSelector.getAttribute('data-date').replace(/\//g, '-'),
sAdultNum = m_oPartyAdults.value,
sChildNum = m_oPartyChildren.value,
sBabyNum = m_oPartyBabies.value,
sPetNum = m_oPartyPets.value,
sDuration = m_oDurationSelect.value,
sFlexibility = m_oFlexibilitySelect.value,
sConfigRoute = m_sWebsiteRoute,
sDestination = '',
sDestinationUrlVal = m_oOptions.enableFreeTextSearch ? m_oFreeTextInput.getAttribute('data-url') : m_oRegionSelect.getAttribute('data-url'),
bAllRegionSearch = false;
if (sDestinationUrlVal) {
sDestination = sDestinationUrlVal;
} else {
if (m_oOptions.enableFreeTextSearch) {
sDestination = createURLFromLabel(m_oFreeTextInput.getAttribute('data-value').trim());
} else {
sDestination = createURLFromLabel(m_oRegionSelect.getAttribute('data-value').trim());
}
}
if (sDestination === 'Select-a-region') {
sDestination = 'all-regions';
}
if ((bIsRHSSearch && (sDestination.indexOf('all-regions') > -1) || (!bIsRHSSearch && m_oFreeTextInput.getAttribute('data-rhs-search') === 'true'))) {
bAllRegionSearch = true;
}
var sRegionAndDest;
if (m_oRegionRootSelect.getAttribute('data-url') === sDestination) {
// Prevent occurances where region and destination are the same values, if that is the case then do not use both
sRegionAndDest = sDestination;
} else {
var sDataURL = m_oRegionRootSelect.getAttribute('data-url');
if (sDataURL === '') {
/*
data url of regionRootNode has been set to an empty string (to prevent use of label in url) in search-widget-regions.js,
therefore do not use
*/
sRegionAndDest = sDestination;
} else {
var sRegionName = m_oRegionRootSelect.getAttribute('data-url'),
aCountriesToRemoveAllRegions = ['italy', 'scotland', 'ireland', 'wales', 'channel-islands', 'isle-of-man', 'france'];
if (aCountriesToRemoveAllRegions.indexOf(sRegionName) > -1 && sDestination === 'all-regions') {
sDestination = "";
}
sRegionAndDest = sRegionName + '/' + sDestination;
}
}
// Assemble URL - might be unique for each website
var sSearchUrl,
bUseDefaultURL = true;
if (bIsRHSSearch) {
// Add / to end of config route if no already present
if (sConfigRoute !== "" && sConfigRoute.charAt(sConfigRoute.length - 1) !== "/") {
sConfigRoute += "/"
}
sSearchUrl = '/' + sConfigRoute + sRegionAndDest;
} else { // is freetext search
if (m_oFreeTextInput.value.toLowerCase().trim() === 'united kingdom') { // convert uk search to all regions
sSearchUrl = '/' + sConfigRoute + m_oRegionRootSelect.getAttribute('data-url') + '/all-regions';
} else {
var sFreeTextDataURL = m_oFreeTextInput.getAttribute('data-url').replace(/[*+^'${},<>@';:#~!£$()|[\]\\]/g, ''); // santise
if (m_oFreeTextInput.getAttribute('data-directLink') === 'true') { // is a direct link to a site or accommodation
bUseDefaultURL = false;
sSearchUrl = '/' + sConfigRoute + sFreeTextDataURL.replace(/^\//, ""); // replace only the first character if it is a '/';
if (m_isCatCPartner) {
sSearchUrl = '/' + sConfigRoute + sFreeTextDataURL + '?adult=' + sAdultNum + '&child=' + sChildNum + '&infant=' + sBabyNum + '&pets=' + sPetNum + '&nights=' + sDuration + '&range=' + sFlexibility
} else {
sSearchUrl += '?adult=' + sAdultNum + '&child=' + sChildNum + '&infant=' + sBabyNum + '&pets=' + sPetNum + '&nights=' + sDuration + '&range=' + sFlexibility;
}
if (!m_bNonDatedSearch && sSearchDate !== 'null') { // append start date
sSearchUrl += '&start=' + sSearchDate;
}
} else { // is either an RHS returned result or a geo result
if (sFreeTextDataURL && sFreeTextDataURL !== '') { // has a data url, use that for navigation
if (m_isCatCPartner) {
sSearchUrl = '/' + sConfigRoute + sFreeTextDataURL
} else {
sSearchUrl = '/' + sConfigRoute + sFreeTextDataURL.replace(/^\//, ""); // remove first '/'
}
if (m_oFreeTextInput.getAttribute('data-geoSearch')) {
bUseDefaultURL = false;
if (m_isCatCPartner) {
sSearchUrl = '/' + sConfigRoute + '/' + m_oRegionRootSelect.getAttribute('data-url') + sFreeTextDataURL;
} else {
// append the site to the start of the url for geo search
sSearchUrl = '/' + m_oRegionRootSelect.getAttribute('data-url') + sSearchUrl.replace(/^\//, ""); // remove first '/'
sSearchUrl += '&adult=' + sAdultNum + '&child=' + sChildNum + '&infant=' + sBabyNum + '&pets=' + sPetNum + '&nights=' + sDuration + '&range=' + sFlexibility;
}
if (!m_bNonDatedSearch) { // append start date
sSearchUrl += '&start=' + sSearchDate;
}
}
} else { // has no data url, therefore create the url from the label (fallback default)
sSearchUrl = '/' + sConfigRoute + m_oRegionRootSelect.getAttribute('data-url') + '/' + createURLFromLabel(m_oFreeTextInput.getAttribute('data-value').trim());
}
}
}
}
if (bUseDefaultURL) {
var bIsUsingRadiiList = m_aoRadiiList !== null && m_aoRadiiList.length > 0;
if (bIsUsingRadiiList && m_oFreeTextInput.value !== "") {
for (var i = 0; i < m_aoRadiiList.length; i++) {
var sName = m_aoRadiiList[i].name;
if (m_oFreeTextInput.value.indexOf(sName) > -1 || m_oFreeTextInput.value === sName) {
var oMatch = m_aoRadiiList[i];
sSearchUrl = "all-regions?lat=" + oMatch.lat + "&lng=" + oMatch.lng + "&location=" + oMatch.name.replace("!", "").trim() + "&miles=" + oMatch.miles;
}
}
}
sSearchUrl += getQueryStartChar(bIsUsingRadiiList ? sSearchUrl : sDestination) + 'adult=' + sAdultNum + '&child=' + sChildNum + '&infant=' + sBabyNum + '&pets=' + sPetNum + '&nights=' + sDuration + '&range=' + sFlexibility;
if (!m_bNonDatedSearch) { // append start date
sSearchUrl += '&start=' + sSearchDate;
}
}
sSearchUrl = appendQuickFilters(sSearchUrl);
if (bAllRegionSearch && bIsRHSSearch) { // all region and RHS searches only
sSearchUrl = appendRHSFeatures(sSearchUrl);
}
sSearchUrl = appendURLFilters(sSearchUrl);
sSearchUrl = appendSortOrder(sSearchUrl);
// CDC functionality only
if (window.location.host.split(".")[1] === "cottages") {
if (!!document.getElementById("gsw-free-text-search").getAttribute("data-geosearch")) {
sSearchUrl = sSearchUrl.replace(/^\/[\w]+/, encodeURI(sSearchUrl.match(/[?&]location=([^&#]*)/i)[1]));
}
}
// Store search (if search retention is on)
// Region root retention still to do
if (m_bUseSearchRetention) {
storeSearch({
'destination': m_oOptions.enableFreeTextSearch ? FreeTextSearchHandler.getDestinationSearchData() : getDestinationSearchData(),
'adult': sAdultNum,
'child': sChildNum,
'infant': sBabyNum,
'pets': sPetNum,
'nights': sDuration,
'range': sFlexibility,
'start': !m_bNonDatedSearch ? sSearchDate : 'null',
'url': sSearchUrl
});
}
// Conduct search
m_useAjax ? m_useAjax(sSearchUrl) : window.location = sSearchUrl;
}
function handleDestinationSearchRetention() {
if (m_bUseSearchRetention) {
if (m_oOptions.enableFreeTextSearch) {
FreeTextSearchHandler.setDestinationFromStoredSearch();
} else {
setDestinationFromStoredSearch();
}
}
}
function storeSearch(oSearchData) {
if (!m_bUseSearchRetention) {
return false;
}
oSearchData.timestamp = new Date().getTime();
localStorage.setItem('retained-search', JSON.stringify(oSearchData));
}
function getStoredSearch() {
var sSearchData = localStorage.getItem('retained-search');
if (sSearchData) {
var oSearchData = JSON.parse(sSearchData);
if (!getHasRetainedSearchExpired(oSearchData)) {
return oSearchData;
}
}
return null;
}
function getHasRetainedSearchExpired(oSearchData) {
// Check the age of the retained search data
// Get time difference in days
var fPrevTimestamp = oSearchData.timestamp,
fNowTimestamp = new Date().getTime(),
iTimeDiffSecs = parseInt((fNowTimestamp - fPrevTimestamp) / 1000),
iTimeDiffDays = Math.floor(iTimeDiffSecs / (3600 * 24));
// Check timestamp
if (iTimeDiffDays >= NUM_DAYS_BEFORE_RETENTION_IS_CLEARED) {
// Clear search informaion from local storage if it was stored X number of days ago
localStorage.removeItem('retained-search');
return true;
} else {
return false;
}
}
function getStoredSearchValue(sProp) {
var oSearchData = getStoredSearch();
// Attempt to get value from url
if (getParameterByName(sProp) && sProp !== 'destination' && sProp !== 'url') {
return getParameterByName(sProp);
// Attempt to get value from local storage
} else if (oSearchData && oSearchData[sProp]) {
return oSearchData[sProp];
// Value not found
} else {
return null;
}
}
function getDestinationSearchData() {
return {
'data-value': m_oRegionSelect.getAttribute('data-value'),
'value': m_oRegionSelect.getAttribute('data-value'),
'data-url': m_oRegionSelect.getAttribute('data-url'),
'isFreeText': m_oRegionSelect.getAttribute('data-using-defaultRegionID') === 'true' ? true : false,
'useDefaultRegionID': m_oRegionSelect.getAttribute('data-using-defaultRegionID') === 'true' ? true : false
};
}
function setDestinationFromStoredSearch() {
// Set selected value in destination drop down
var oDestination = getStoredSearchValue('destination');
if (!oDestination) {
return false;
}
if (oDestination.isFreeText) {
return false;
}
// Check data-url is stored
var vDataURL = oDestination['data-url'];
var vDataValue = oDestination['data-value'];
var vDataValueUrlFormatted = vDataValue.replace(/& /g, '').replace(/ /g, '-').toLowerCase();
if (vDataURL && vDataURL !== '') {
// Check stored url is present in window location
if (window.location.href.indexOf(vDataURL) !== -1) {
// Update destination dropdown selection
if (vDataValue) {
if (m_oRegionSelect.querySelector('span')) {
m_oRegionSelect.querySelector('span').innerHTML = vDataValue;
} else {
m_oRegionSelect.innerHTML = vDataValue;
}
}
if (vDataValue) {
m_oRegionSelect.setAttribute('data-value', vDataValue);
}
if (oDestination['data-url']) {
m_oRegionSelect.setAttribute('data-url', oDestination['data-url']);
}
if (oDestination['useDefaultRegionID']) {
m_oRegionSelect.setAttribute('data-using-defaultRegionID', 'true');
}
}
} else if (vDataValue && vDataValue !== '') {
// attempt to retain for searches without data-url
// checked stored value is in URL
if (window.location.href.indexOf(vDataValueUrlFormatted) > -1) {
// using set timeout while being tested in Target, may need to look at another way to resolve timing issue once live
if (m_oRegionSelect.querySelector('span')) {
m_oRegionSelect.querySelector('span').innerHTML = vDataValue;
} else {
m_oRegionSelect.innerHTML = vDataValue;
}
m_oRegionSelect.setAttribute('data-value', vDataValue);
m_oRegionSelect.setAttribute('data-url', vDataValueUrlFormatted);
}
}
}
function appendQuickFilters(sSearchUrl) {
var oaCheckedCheckboxes = document.querySelectorAll('.filter-checkbox input:checked'),
aSelectedBoxes = [];
if (oaCheckedCheckboxes && oaCheckedCheckboxes.length > 0) {
var sCode;
for (var i = 0; i < oaCheckedCheckboxes.length; i++) {
sCode = oaCheckedCheckboxes[i].value;
aSelectedBoxes.push(sCode);
}
sSearchUrl = sSearchUrl + '&fshow=1&features=' + aSelectedBoxes;
}
return sSearchUrl;
}
function appendRHSFeatures(sSearchUrl) {
var iFeatureId = null;
// Search for the selected region data in the RHS data, look for a featureId property on the regionRoot, if exists, add to url
for (var i = 0; i < m_oaRHSData.length; i++) {
if (parseInt(m_oaRHSData[i].regionRoot.id, 10) === parseInt(m_oRegionRootSelect.value, 10)) {
if (m_oaRHSData[i].regionRoot.hasOwnProperty('featureId')) {
iFeatureId = m_oaRHSData[i].regionRoot.featureId;
}
break;
}
}
if (iFeatureId) {
if (sSearchUrl.indexOf('features=') > -1) { // already has features
sSearchUrl = String(sSearchUrl + ',' + iFeatureId);
} else { // does not already have features
sSearchUrl = String(sSearchUrl + '&fshow=1&features=' + iFeatureId);
}
}
return sSearchUrl;
}
function appendURLFilters(sSearchUrl) {
var bCanAddFilters = true;
// Add the brand check for Hoseasons only, this is due to different brands having different codes for the same features
if (window.location.href.indexOf('www.hoseasons.co.uk')) {
if (m_oRegionRootSelect.value !== m_sinitialCachedBrand) {
bCanAddFilters = false;
}
}
if (bCanAddFilters) {
sSearchUrl = appendURLFeatures(sSearchUrl, 'bedroom'); // get bedroom from the URL
sSearchUrl = appendURLFeatures(sSearchUrl, 'sleeps'); // get sleeps from the URL
sSearchUrl = appendURLFeatures(sSearchUrl, 'pricerange'); // get pricerange from the URL
sSearchUrl = appendURLFeatures(sSearchUrl, 'features'); // get features from the URL
sSearchUrl = appendURLFeatures(sSearchUrl, 'acctype'); // get acctype from the URL
sSearchUrl = appendURLFeatures(sSearchUrl, 'rating'); // get rating from the URL
}
return sSearchUrl;
}
function appendURLFeatures(sSearchUrl, sFeatureType) {
var sURLFeatures = '',
sVars = window.location.search.substring(1).split("&"),
sPair = '';
for (var i = 0; i < sVars.length; i++) {
sPair = sVars[i].split("=");
if (sPair[0] === sFeatureType) {
if (sURLFeatures !== '') {
sURLFeatures = ',' + sURLFeatures + sPair[1];
} else {
sURLFeatures = sURLFeatures + sPair[1];
}
}
}
if (sURLFeatures !== '') {
if (sSearchUrl.indexOf(sFeatureType + '=') > -1) { // already has feature
sSearchUrl = String(sSearchUrl + ',' + sURLFeatures);
} else { // does not already have features
if (sSearchUrl.indexOf('fshow=') > -1) { // already has fshow
sSearchUrl = String(sSearchUrl + '&' + sFeatureType + '=' + sURLFeatures);
} else {
sSearchUrl = String(sSearchUrl + '&fshow=1&' + sFeatureType + '=' + sURLFeatures);
}
}
}
return sSearchUrl;
}
function appendSortOrder(sSearchUrl) {
// append sort order if present in the API
if (m_oOptions.hasOwnProperty('sortOrder')) {
sSearchUrl = String(sSearchUrl + '&sortorder=' + m_oOptions.sortOrder);
}
return sSearchUrl;
}
function getQueryStartChar(sDestination) {
// if the destination url contains the query start char (?) return (&)
if (sDestination.indexOf('?') === -1) {
return '?'
}
return '&';
}
function getParameterByName(variable) {
// used mainly for search retention
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
// **************************************************************************************
// RHS Data Handling
function createRegionListOptions() {
// Dynamically create region root select options from RHS data
var sMarkup = '',
sRegionRootURL = null,
oFirstListItem = null;
for (var i = 0; i < m_oaRHSData.length; i++) {
// Handle optional regionRoot url
sRegionRootURL = getRegionRootURL(m_oaRHSData[i]);
sMarkup += '<option value="' + m_oaRHSData[i].regionRoot.id + '" data-url="' + sRegionRootURL + '"';
if (window.location.hostname.indexOf("cottages.com") > -1) {
oFirstListItem = !!m_oaRHSData[i].regions[0].list ? m_oaRHSData[i].regions[0].list[0] : m_oaRHSData[i].regions[0].parent
} else {
oFirstListItem = m_oaRHSData[i].regions[0].list[0];
}
// if the first item in each region has an all regions list option, add the url for that into the option
if (oFirstListItem && oFirstListItem.label.toLowerCase().trim() === 'all regions') { // has an all regions property
if (oFirstListItem.hasOwnProperty('url')) { // add data-all-regions-url into the option markup
senseCheckDataProperty(oFirstListItem, 'oFirstListItem', 'url', 'string');
sMarkup += ' data-all-regions-url="' + oFirstListItem.url + '"';
}
}
sMarkup += '>' + m_oaRHSData[i].regionRoot.label + '</option>';
}
// add options markup, this may cause flicker if setting a different option below
m_oRegionRootSelect.innerHTML = sMarkup;
if (m_oOptions.hasOwnProperty('defaultRegionRootId')) {
senseCheckDataProperty(m_oOptions, 'm_oOptions', 'defaultRegionRootId', 'number');
m_oRegionRootSelect.value = m_oOptions.defaultRegionRootId;
setRegionSelectDataUrlFromId(String(m_oRegionRootSelect.value));
} else {
// set default value to the first option id
m_oRegionRootSelect.value = m_oaRHSData[0].regionRoot.id;
// Handle optional regionRoot url
sRegionRootURL = getRegionRootURL(m_oaRHSData[0]);
m_oRegionRootSelect.setAttribute('data-url', sRegionRootURL);
}
}
function buildRHSMarkup() {
// create container
m_oRegionsContainer = document.createElement('div');
m_oRegionsContainer.id = 'regionsContainer';
m_oRegionsContainer.style.display = 'none';
var sMarkup = '';
m_oRegions = document.createElement('ul');
m_oRegions.id = 'regions';
if (m_bRHSAsDropdownClass !== '') {
m_oRegions.classList.add(m_bRHSAsDropdownClass);
}
for (var i = 0; i < m_oaRHSData.length; i++) {
sMarkup += buildRegionContainer(m_oaRHSData[i]);
}
m_oRegions.innerHTML = sMarkup;
m_oRegionsContainer.appendChild(m_oRegions);
// add cancel button
var oCancelBtn = document.createElement('div');
oCancelBtn.className = 'mobile-region-cancel no-dt';
oCancelBtn.innerHTML = '<a href="" id="rhsCancelBtn" class="close-button">Done</a>';
m_oRegionsContainer.appendChild(oCancelBtn);
document.getElementsByClassName('global-search-widget-inner')[0].appendChild(m_oRegionsContainer);
}
function buildRegionContainer(oRHSSection) {
var sMarkup = '';
// sense check data
senseCheckDataProperty(oRHSSection, 'oRHSSection', 'regionRoot', 'object');
senseCheckDataProperty(oRHSSection.regionRoot, 'oRHSSection.regionRoot', 'label', 'string');
if (oRHSSection.regionRoot.hasOwnProperty('url')) { // optional url (when omitted, url is created from the label using normal rules)
senseCheckDataProperty(oRHSSection.regionRoot, 'oRHSSection.regionRoot', 'url', 'string');
}
senseCheckDataProperty(oRHSSection.regionRoot, 'oRHSSection.regionRoot', 'id', 'number');
senseCheckDataProperty(oRHSSection, 'oRHSSection', 'regions', 'array');
// end sense check data
// Build gsw-region-container li
sMarkup += '<li id="region-id-' + oRHSSection.regionRoot.id + '" class="gsw-region-container" style="display: none"><ul>';
// Loop build regions
sMarkup += buildRegions(oRHSSection);
// close region markup
sMarkup += '</ul></li>';
return sMarkup;
}
function buildRegions(oRHSSection) {
// all current hrefs are for SEO only, the hrefs are not used for assembling search url's when the search button is clicked
var sMarkup = '',
sRegionRootURL = null;
// Loop build regions
for (var i = 0; i < oRHSSection.regions.length; i++) {
var oRegion = oRHSSection.regions[i];
// Handle optional regionRoot url
sRegionRootURL = getRegionRootURL(oRHSSection);
// build li
if (oRegion.parent.hasOwnProperty('hidden') && oRegion.parent.hidden) {
//continue;
sMarkup += '<li data-index="' + i + '" style="display:none">';
} else {
sMarkup += '<li data-index="' + i + '">';
}
// build parent
// example: <a class="gsw-global-nav-parent">South West of England</a>
senseCheckDataProperty(oRegion.parent, 'oRHSSection.parent', 'label', 'string');
// sMarkup += '<a class="gsw-global-nav-parent">' + oRegion.parent.label + '</a>';
if (oRegion.parent.hasOwnProperty("noChildren") && oRegion.parent.noChildren) {
sMarkup += "<a class='no-children' data-region-id='" + oRegion.parent.regionId + "' href='" + oRegion.parent.url + "' data-url='" + oRegion.parent.url + "'>" + oRegion.parent.label + "</a></li>"
} else {
sMarkup += '<a class="gsw-global-nav-parent">' + oRegion.parent.label + '</a> <ul class="gsw-level-1">';
// loop build locations
if (senseCheckDataProperty(oRegion, String('oRHSSection.regions[' + i + ']'), 'list', 'array')) {
for (var j = 0; j < oRegion.list.length; j++) {
// variable data format for location, can be either a string or an object
var vLocation = oRegion.list[j];
sMarkup += '<li><a ';
senseCheckDataProperty(vLocation, 'vLocation', 'label', 'string');
if (vLocation.hasOwnProperty('regionId')) {
sMarkup += 'data-region-id="' + vLocation.regionId + '" ';
}
// Handle url
var sRegionURL;
if (oRegion.parent.hasOwnProperty('url')) {
sRegionURL = oRegion.parent.url;
} else {
sRegionURL = createURLFromLabel(oRegion.parent.label);
}
if (vLocation.hasOwnProperty('url') && senseCheckDataProperty(vLocation, 'vLocation', 'url', 'string')) {
// amend for hard-coded RHS2 link
var sHREF = (vLocation.url.indexOf('?rhs2=') !== -1) ? m_sWebsiteRoute + sRegionRootURL + vLocation.url : m_sWebsiteRoute + sRegionRootURL + '/' + vLocation.url;
sMarkup += 'href="' + sHREF + '" data-url="' + vLocation.url + '">' + vLocation.label + '</a>';
if (vLocation.hasOwnProperty('propCount')) {
sMarkup += '<span class="propCount">' + vLocation.propCount + '</span>'
}
} else {
// assemble href
sMarkup += 'href="' + m_sWebsiteRoute + sRegionRootURL + '/' + createURLFromLabel(vLocation.label) + '" ';
sMarkup += '>' + vLocation.label + '</a>';
}
sMarkup += '</li>';
}
}
// Close ul and li
sMarkup += '</ul></li>';
}
}
return sMarkup;
}
function initRHS() {
m_bRHSInit = true;
document.getElementById('rhsCancelBtn').addEventListener('click', function(oEvent) {
FreeTextSearchHandler.regionsContainerClosed();
handleClick(oEvent, m_oRegionsContainer);
});
m_oRegionsContainer.addEventListener('mouseup', function(oEvent) {
stopAndPreventDefault(oEvent);
}, true);
// select child regions
var oaRegionChildren = document.querySelectorAll('#regions a:not(.gsw-global-nav-parent)');
// apply function to each region
for (var i = 0; i < oaRegionChildren.length; i++) {
oaRegionChildren[i].addEventListener('click', function(oEvent) {
stopAndPreventDefault(oEvent);
// run region functionality when clicked
selectRegion(this);
m_oRegionsContainer.style.display = 'none';
// mobile
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
toggleFixBody(false);
}
});
}
// select parent regions
var oaRegionParents = document.querySelectorAll('#regions .gsw-global-nav-parent');
// apply function to each parent region
for (var i = 0; i < oaRegionParents.length; i++) {
oaRegionParents[i].addEventListener('click', function(oEvent) {
stopAndPreventDefault(oEvent);
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth || m_bRHSAsDropdownClass !== '') { // mobile
var iHeightOfPreviousOpenLevel1 = getHeightOfPreviousOpenLevel1(this);
// Toggle sub regions
$('.gsw-level-1').removeClass('active'); // remove all active classes
$('.gsw-global-nav-parent').not(this).removeClass('active'); // remove all active classes
$(this).next('.gsw-level-1').addClass('active'); // add active class to current
$(this).parents('.gsw-region-container').find('.gsw-level-1:not(.active)').slideUp(); // close previously open
$(this).next('.gsw-level-1').slideToggle(); // toggle current
// Set active class on current nav parent
if (!this.classList.contains('active')) {
this.classList.add('active');
} else {
this.classList.remove('active');
}
var oChild = this,
iTopPosOffset = 0,
iChildTopPos = 0;
if (m_oOptions.enableFreeTextSearch) {
iTopPosOffset = (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) ? 60 : 53;
} else {
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) {
iTopPosOffset = 53;
}
}
iChildTopPos = Math.max(0, oChild.offsetTop - m_oRegions.offsetTop - iHeightOfPreviousOpenLevel1 + iTopPosOffset);
scrollIntoPosition(m_oRegions, iChildTopPos, true);
}
});
}
// create results div if free-text search is enabled
if (m_oOptions.enableFreeTextSearch) {
FreeTextSearchHandler.createSearchOutput();
}
changeRHS();
}
function getHeightOfPreviousOpenLevel1(oThat) {
var oThisParentLI = oThat.parentNode,
oPreviousParentLI = null,
oPreviousExpandedLevel1UL = null,
iThisParentLIIndex = parseInt(oThisParentLI.getAttribute('data-index'), 10); // get the index of this li
if (iThisParentLIIndex === 0) {
return 0
};
// is not the first item
// check if any previous li's are expanded
oPreviousExpandedLevel1UL = m_oSelectedRegion.querySelector('.gsw-level-1.active');
if (!oPreviousExpandedLevel1UL) {
return 0
};
oPreviousParentLI = oPreviousExpandedLevel1UL.parentNode;
if (oPreviousParentLI === oThisParentLI) {
return 0
}; // previous LI must not be the current LI
if (iThisParentLIIndex <= parseInt(oPreviousParentLI.getAttribute('data-index'), 10)) {
return 0
}; // oThisParentLI must be after the previous in the markup
// return the height of the previous gsw-level-1 ul
return oPreviousExpandedLevel1UL.offsetHeight;
}
function selectDefaultRegion() {
if (m_oOptions && m_oOptions.hasOwnProperty('defaultSelectedRegionId')) {
if (m_oOptions.defaultSelectedRegionId !== null) {
senseCheckDataProperty(m_oOptions, 'm_oOptions', 'defaultSelectedRegionId', 'number');
// get reference to the span with the region id in RHS data
selectRegion(document.querySelector('#global-search-widget #regions [data-region-id="' + m_oOptions.defaultSelectedRegionId + '"]'));
if (m_oOptions.enableFreeTextSearch) {
m_oFreeTextInput.setAttribute('data-using-defaultRegionID', "true");
} else {
m_oRegionSelect.setAttribute('data-using-defaultRegionID', "true");
}
}
} else {
if (!m_bUseSearchRetention) {
resetRegionSelect();
resetFreeTextInput();
}
}
m_sinitialCachedBrand = m_oRegionRootSelect.value;
}
// END RHS Data Handling
// **************************************************************************************
function addResizeHandler() {
// handles resizing of the page
// set initial value of m_sResizeType
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) { // mobile
m_sResizeType = 'mobile';
}
window.addEventListener('resize', function(oEvent) {
if (!m_oOptions || !m_bRHSInit) {
return false
} // app must be initialised before a resize event can process
var bCanResize = false;
// Handle resize mode flip flopping so the work (DOM Rendering) is not triggered constantly
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) { // desktop
if (m_sResizeType === 'mobile') {
bCanResize = true;
}
m_sResizeType = 'desktop';
} else { // mobile
if (m_sResizeType === 'desktop') {
bCanResize = true;
}
m_sResizeType = 'mobile';
}
if (bCanResize) {
handleRegionRootControlVisibility();
DatepickerHandler.reset();
handleDesktopDocumentMouseListeners();
handleRegionDisplay();
closeAllUIPanels();
}
})
}
var FreeTextSearchHandler = function() {
var m_sInput = '',
m_iWebsiteId = null,
m_bRHSHidden = false,
m_oParentMethods = null,
m_bHaltRequestHandler = false,
m_bFreeTextInputValid = false,
m_oRegionsPanelOpen = false,
m_oFreeTextSearchOutput = null,
m_oFreeTextSearchOutputInner = null,
m_oRequestHandlerTimout = null,
m_sDefaultPlaceholder = 'Enter destination or property name',
m_sInstructionalPlaceholder = 'Start typing here or select below',
m_oFreeTextCloseBtn = document.getElementById('gsw-freetext-close-btn'),
m_oFreeTextClearBtn = document.getElementById('gsw-freetext-clear-btn'),
m_bShouldShowSupplierName = true;
// PUBLIC
function fnInit(oParentMethods) {
m_oParentMethods = oParentMethods;
fnCreateSearchOutput();
if (m_oOptions.freeTextSearch.hasOwnProperty('websiteId')) {
senseCheckDataProperty(m_oOptions.freeTextSearch, 'm_oOptions.freeTextSearch', 'websiteId', 'number');
m_iWebsiteId = m_oOptions.freeTextSearch.websiteId;
}
m_oRegionSelect.style.display = 'none';
m_GSW.classList.add('free-text-search-enabled');
document.getElementById('free-text-search-container').style.display = 'block';
addEventListeners();
}
function fnCreateSearchOutput() {
if (m_oRegions && !m_oFreeTextSearchOutput) { // m_oRegions has been created and the output has not yet been created
m_oFreeTextSearchOutput = document.createElement('div');
m_oFreeTextSearchOutput.id = 'gsw-free-text-search-output';
m_oFreeTextSearchOutputInner = document.createElement('div');
m_oFreeTextSearchOutputInner.id = 'gsw-free-text-search-output-inner';
m_oFreeTextSearchOutput.appendChild(m_oFreeTextSearchOutputInner);
m_oRegions.insertBefore(m_oFreeTextSearchOutput, m_oRegions.firstChild);
}
}
function fnSelectRegion(sLinkText, sDataUrl, bFromRHS) {
m_oFreeTextInput.value = sLinkText;
m_oFreeTextInput.setAttribute('data-value', sLinkText);
if (bFromRHS) {
m_oFreeTextInput.setAttribute('data-rhs-search', 'true');
}
if (sDataUrl) {
m_oFreeTextInput.setAttribute('data-url', sDataUrl);
} else {
m_oFreeTextInput.removeAttribute('data-url');
}
fnRegionsContainerClosed();
}
function fnRegionsContainerOpened() {
m_oRegionsPanelOpen = true;
}
function fnRegionsContainerClosed() {
m_oRegionsPanelOpen = false;
fnApplyMatchedInputString();
m_oFreeTextCloseBtn.style.display = 'none';
m_oFreeTextIcon.style.display = 'none';
toggleClearButton(false);
m_oFreeTextInput.setAttribute('placeholder', m_sDefaultPlaceholder);
m_oFreeTextInput.blur();
}
function fnApplyMatchedInputString() {
if (!m_oOptions.enableFreeTextSearch) {
return false;
} // freetext not enabled
if (m_bFreeTextInputValid) {
return true;
} // already valid, no need to check again
var sInputValue = m_oFreeTextInput.value.toLowerCase().trim();
if (sInputValue !== '') { // has been set
// check freetext-rhs-locations
if (checkFreeTextMatch(document.getElementById('freetext-rhs-locations'), sInputValue)) {
return true;
}
// check freetext-geo-locations
if (checkFreeTextMatch(document.getElementById('freetext-geo-locations'), sInputValue)) {
return true;
}
// check freetext-rhs-accom-1
if (checkFreeTextMatch(document.getElementById('freetext-rhs-accom-1'), sInputValue)) {
return true;
}
// check freetext-rhs-accom-2
if (checkFreeTextMatch(document.getElementById('freetext-rhs-accom-2'), sInputValue)) {
return true;
}
}
return false;
}
function checkFreeTextMatch(oOutputListSection, sInputValue) {
if (typeof(oOutputListSection) === 'undefined' || !oOutputListSection) {
return false;
}
var oaOutputListResults = oOutputListSection.querySelectorAll('a');
for (var i = 0; i < oaOutputListResults.length; i++) {
var sAddressShort = oaOutputListResults[i].getAttribute('data-addressShort'), // only set for geo results (already trimmed)
sAddressShortSanitised = null,
sAddress = decodeURI(oaOutputListResults[i].getAttribute('data-address')).toLowerCase().trim();
sResult = (typeof(sAddressShort) !== 'undefined' && sAddressShort && sAddressShort !== '') ? sAddressShort.toLowerCase() : oaOutputListResults[i].innerHTML.toLowerCase().trim(),
sResultSanitised = null;
if (typeof(sAddressShort) !== 'undefined' && sAddressShort && sAddressShort !== '') {
sAddressShortSanitised = oaOutputListResults[i].getAttribute('data-addressShort').replace(/[.*+^'${},.<>@';:#~!£$()|[\]\\]/g, ''), // only set for geo results (already trimmed)
sResultSanitised = (typeof(sAddressShortSanitised) !== 'undefined' && sAddressShortSanitised && sAddressShortSanitised !== '') ? sAddressShortSanitised.toLowerCase() : sResult;
}
if (sResult.indexOf(sInputValue) > -1 || sResult.indexOf(sInputValue + ' ') > -1 || sInputValue === sAddress) { // found a match
selectFreeTextRegion(oaOutputListResults[i]);
return true;
break;
} else if (sResultSanitised && sResultSanitised.indexOf(sInputValue) > -1 || sResultSanitised.indexOf(sInputValue + ' ') > -1) {
selectFreeTextRegion(oaOutputListResults[i]);
return true;
break;
}
}
return false;
}
function fnGetDestinationSearchData() {
return {
'value': m_oFreeTextInput.value,
'data-value': m_oFreeTextInput.getAttribute('data-value'),
'data-url': m_oFreeTextInput.getAttribute('data-url'),
'data-rhs-search': m_oFreeTextInput.getAttribute('data-rhs-search'),
'data-directLink': m_oFreeTextInput.getAttribute('data-directLink'),
'data-geoSearch': m_oFreeTextInput.getAttribute('data-geoSearch'),
'useDefaultRegionID': m_oFreeTextInput.getAttribute('data-using-defaultRegionID') === 'true' ? true : false,
'isFreeText': true
};
}
function fnSetDestinationFromStoredSearch() {
var oDestination = getStoredSearchValue('destination');
if (!oDestination) {
return false;
}
if (!oDestination.isFreeText) {
return false;
}
// Check data-url is stored
var vDataURL = oDestination['data-url'];
var vDataValue = oDestination['data-value'];
var vDataValueUrlFormatted = vDataValue.replace(/& /g, '').replace(/ /g, '-').toLowerCase();
if (vDataURL && vDataURL !== '') {
// Check stored url is present in window location
if (window.location.href.indexOf(vDataURL) !== -1) {
m_bFreeTextInputValid = true;
// Update free text input value and attributes
m_oFreeTextInput.value = oDestination['value'];
setOrRemoveInputAttributeFromStoredData('data-value', oDestination);
setOrRemoveInputAttributeFromStoredData('data-url', oDestination);
if (oDestination['useDefaultRegionID']) {
m_oFreeTextInput.setAttribute('data-using-defaultRegionID', true);
m_oFreeTextInput.setAttribute('data-rhs-search', true);
} else {
setOrRemoveInputAttributeFromStoredData('data-rhs-search', oDestination);
}
setOrRemoveInputAttributeFromStoredData('data-directLink', oDestination);
setOrRemoveInputAttributeFromStoredData('data-geoSearch', oDestination);
}
} else if (vDataValue && vDataValue !== '') {
// attempt to retain for searches without data-url
// checked stored value is in URL
if (window.location.href.indexOf(vDataValueUrlFormatted) > -1) {
if (m_oRegionSelect.querySelector('span')) {
m_oRegionSelect.querySelector('span').innerHTML = vDataValue;
} else {
m_oRegionSelect.innerHTML = vDataValue;
}
m_oRegionSelect.setAttribute('data-value', vDataValue);
m_oRegionSelect.setAttribute('data-url', vDataValueUrlFormatted);
}
}
}
function setOrRemoveInputAttributeFromStoredData(sName, oData) {
if (oData[sName]) {
m_oFreeTextInput.setAttribute(sName, oData[sName]);
} else {
m_oFreeTextInput.removeAttribute(sName);
}
}
// PRIVATE
function addEventListeners() {
m_oFreeTextInput.addEventListener('keyup', freeTextKeyUp);
m_oFreeTextInput.addEventListener('click', function(oEvent) {
if (!m_oRegionsPanelOpen) {
if (document.documentElement.clientWidth > m_iMobileLandscapeMaxWidth) {
m_oFreeTextInput.focus();
} else {
// stop keyboard showing on mobile when first opening
m_oFreeTextInput.blur();
}
m_oFreeTextCloseBtn.style.display = 'block';
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
m_oFreeTextIcon.style.display = 'block';
}
if (m_oFreeTextInput.getAttribute('data-rhs-search') !== 'true') { // free text input value has not come from an RHS select region
// perform a freetext search
searchForString(m_oFreeTextInput.value);
} else {
handleDisplayOfClearButton(m_oFreeTextInput.value.trim().length);
if (m_oRegionsContainer.style.display === 'none') {
m_oParentMethods.openRegionsContainer();
}
}
m_oFreeTextInput.setAttribute('placeholder', m_sInstructionalPlaceholder);
}
});
m_oFreeTextCloseBtn.addEventListener('click', function(oEvent) {
closeRegionsContainer();
});
m_oFreeTextClearBtn.addEventListener('click', function(oEvent) {
oEvent.stopPropagation();
oEvent.stopImmediatePropagation();
m_bFreeTextInputValid = false;
m_bHaltRequestHandler = false; // enable ajax requests
toggleClearButton(false);
clearOutFreeTextInputSearchAttributes();
m_oFreeTextInput.value = '';
m_oFreeTextInput.focus();
clearSearchOutput();
m_oFreeTextInput.setAttribute('data-rhs-search', 'true');
toggleRHS(true);
if (m_oRegionRootSelect.disabled) {
m_oRegionRootSelect.disabled = false;
document.querySelector("#global-search-widget .disable-overlay").style.display = "none";
}
});
// prevent default mouseup
m_oFreeTextInput.addEventListener('mouseup', function(oEvent) {
oEvent.stopPropagation();
oEvent.stopImmediatePropagation();
oEvent.preventDefault();
});
m_oFreeTextClearBtn.addEventListener('mouseup', function(oEvent) {
oEvent.stopPropagation();
oEvent.stopImmediatePropagation();
oEvent.preventDefault();
}, true);
}
function clearOutFreeTextInputSearchAttributes(bForceClear) {
if (m_oFreeTextInput.getAttribute('data-rhs-search') !== 'true' || bForceClear) { // free text input value has not come from an RHS select region
m_oFreeTextInput.setAttribute('data-url', '');
m_oFreeTextInput.removeAttribute('data-rhs-search');
}
m_oFreeTextInput.removeAttribute('data-directLink');
m_oFreeTextInput.removeAttribute('data-geoSearch');
m_oFreeTextInput.setAttribute('data-value', 'all-regions'); // set back to all regions
}
function toggleRHS(bToggle) {
if (m_bRHSHidden !== !bToggle) { // prevent constant setting to the same value
m_bRHSHidden = !bToggle;
var oaRegionContainers = document.querySelectorAll('.gsw-region-container');
for (var i = 0; i < oaRegionContainers.length; i++) {
if (bToggle) {
oaRegionContainers[i].classList.remove('gsw-hide');
} else {
oaRegionContainers[i].classList.add('gsw-hide');
}
}
}
}
function freeTextKeyUp(oEvent) {
var iKeyCode = (oEvent.keyCode ? oEvent.keyCode : oEvent.which);
if (iKeyCode == 13) { // return key pressed do nothing except close the regions container
closeRegionsContainer();
toggleFixBody(false);
return false;
}
if (typeof hj === "function") {
if (hjFreeTextRecording === false) {
hj('tagRecording', ['GSW-FreeTextSearch']);
hjFreeTextRecording = true;
}
}
searchForString(m_oFreeTextInput.value);
}
function searchForString(sString) {
m_bFreeTextInputValid = false;
m_bHaltRequestHandler = false; // enable ajax requests
m_sInput = sString.trim();
var iMinInputLength = 3,
iInputLength = m_sInput.length;
clearOutFreeTextInputSearchAttributes(true);
handleDisplayOfClearButton(iInputLength);
if (m_oRegionsContainer.style.display === 'none') {
m_oParentMethods.openRegionsContainer();
}
if (iInputLength < iMinInputLength) {
if (iInputLength === 0) { // used to set back to all region search handling
m_oFreeTextInput.setAttribute('data-rhs-search', 'true');
}
m_oFreeTextInput.setAttribute('data-url', '');
clearSearchOutput();
toggleRHS(true);
return false;
} else {
toggleRHS(false);
}
killRequestHandlerTimeout();
m_oRequestHandlerTimout = setTimeout(fireRequestHandler, 500);
}
function killRequestHandlerTimeout() {
if (m_oRequestHandlerTimout) {
clearTimeout(m_oRequestHandlerTimout);
m_oRequestHandlerTimout = null;
}
}
function handleDisplayOfClearButton(iInputLength) {
if (iInputLength > 0) {
toggleClearButton(true);
} else if (iInputLength === 0) {
toggleClearButton(false);
}
}
function setSearchOutput(sHTML) {
m_oFreeTextSearchOutputInner.innerHTML = sHTML;
addSearchValueClickListeners();
m_oFreeTextSearchOutput.style.display = 'block';
}
function clearSearchOutput() {
m_oFreeTextSearchOutput.removeAttribute('style');
m_oFreeTextSearchOutputInner.innerHTML = '';
}
function toggleClearButton(bToggle) {
if (bToggle) {
if (m_oFreeTextClearBtn.style.display !== 'block') {
m_oFreeTextClearBtn.style.display = 'block';
m_oFreeTextInput.classList.add('clear-btn-enabled');
}
} else {
m_oFreeTextClearBtn.removeAttribute('style');
m_oFreeTextInput.classList.remove('clear-btn-enabled');
}
}
function getProductDetailsPageName(iWebsiteId) {
var sPDPageName = 'product-details-page-name'; // default
switch (iWebsiteId) {
case 15944: // Hos lodges
sPDPageName = 'lodges';
break;
case 15943: // Hos parks
sPDPageName = 'holiday-parks';
break;
case 15951: // Hos cottages
case 18396: // Cottages
sPDPageName = 'cottages';
break;
case 35534: // Mulberry
m_bShouldShowSupplierName = false;
sPDPageName = 'cottages';
break;
case 15979: // Hos boats
sPDPageName = 'boat-holidays';
break;
case 15947: // Hos city breaks
sPDPageName = 'city-breaks';
break;
case 15949: // Hos eu parks
sPDPageName = 'holiday-parks-in-europe';
break;
case 31309: // Bluechip
m_bShouldShowSupplierName = false;
sPDPageName = '';
break;
case 23070: // partners
sPDPageName = ''; // no product detail pagename
break;
}
return sPDPageName;
}
function fireRequestHandler() {
var _charMap = {
'ä': 'a',
'á': 'a',
'à': 'a',
'â': 'a',
'ç': 'c',
'é': 'e',
'è': 'e',
'ê': 'e',
'ë': 'e',
'î': 'i',
'ï': 'i',
'ì': 'i',
'í': 'i',
'ô': 'o',
'ó': 'o',
'ò': 'o',
'ö': 'o',
'œ': 'oe',
'ù': 'u',
'û': 'u',
'ü': 'u',
'ÿ': 'y',
'y': 'y',
'ý': 'y',
'?': 'y'
};
String.prototype.latinise = function() {
if (this.toString().indexOf("squirrel'") > -1) {
return this.toString().replace("squirrel'", "squirrel’");
} else {
return this.replace(/[^A-Za-z0-9\[\] ]/g, function(a) {
return _charMap[a] || a;
});
}
};
if (m_bHaltRequestHandler) {
return false;
}
// If a websiteId has been passed in m_oOptions.freeTextSearch, then use that as the overiding websiteId, otherwise default to using the value of the selected child element of m_oRegionRootSelect
var iWebsiteId = m_iWebsiteId || parseInt(m_oRegionRootSelect.children[m_oRegionRootSelect.selectedIndex].value, 10),
sWebsiteName = getProductDetailsPageName(iWebsiteId),
sSupplier = (m_oOptions.supplierResults == true) ? '&node2=SUPPLIER' : '';
var sURL = '/HoseasonsRequestHandler.ashx?method=SEARCH--NODE-SEARCH',
sNodes = '&node1=' + m_oOptions.rhsSearch + sSupplier + '&node3=PROPERTY',
sDuplicates = '&duplicates=False',
sTerm = '&term=' + encodeURIComponent(m_sInput.latinise().replace("'", '’').replace("’", '’')),
sWebsiteId = '&websiteid=' + iWebsiteId,
sMaxResults = '&maxresults=11',
sCountryLevel = '&countrylevel=0',
sProductDetailsPageName = '&productDetailsPageName=%2F' + sWebsiteName,
sMapResult = '&mapresult=False',
sShowSupplierName = m_bShouldShowSupplierName ? '' : '&showSupplierName=false',
sFullURL = sURL + sNodes + sDuplicates + sTerm + sWebsiteId + sMaxResults + sCountryLevel + sProductDetailsPageName + sShowSupplierName + sMapResult;
$.ajax({
'url': sFullURL,
'type': 'GET',
'dataType': 'json',
'success': function(data) {
// Exclude strings from free text results
if (!m_oOptions.freeTextExclude) {
data = checkForExcludedStrings(data);
}
if (m_bHaltRequestHandler) {
return false;
}
var sHTML = '',
bHasIndex0 = false,
bHasIndex1 = false,
bHasIndex2 = false,
bHasIndex3 = false;
/* Remove Uk */
(function() {
/* find index of google */
var nodeSearch = 'google',
regionSearch = 'United Kingdom';
for (var nodeIndex = 0, len = data.length; nodeIndex < len; nodeIndex++) {
if (data[nodeIndex].Node === nodeSearch) {
break;
}
}
if (nodeIndex === len) return;
/* find index of uk */
for (var regionIndex = 0, len = data[nodeIndex].Records.length; regionIndex < len; regionIndex++) {
if (data[nodeIndex].Records[regionIndex].formatted_address === regionSearch) {
break;
}
}
if (regionIndex === len) return;
data[nodeIndex].Records.splice(regionIndex, 1);
})();
/* Remove Duplicates */
var duplicateIDs = {};
data.reduce(function(acc, v) {
return acc.concat(v.Records)
}, []).map(function(v) {
return v.RecordID
}).filter(function(v, i, arr) {
return v
}).forEach(function(v, i) {
if (typeof duplicateIDs[v] != 'undefined') {
duplicateIDs[v] += 1;
} else {
duplicateIDs[v] = 0;
}
})
data.forEach(function(v, i, arr) {
v.Records = v.Records.filter(function(v) {
var duplicateRecordID = duplicateIDs[v.RecordID]
var isDuplicate = duplicateRecordID > 0;
if (isDuplicate) {
duplicateIDs[v.RecordID] -= 1;
}
return !isDuplicate;
})
})
$.each(data, function(index, value) {
if (value['Records']) {
if (value['Node'] === 'node1' && value['Records'].length > 0) {
sHTML += '<div id="freetext-rhs-locations">';
$.each(value['Records'], function(iRecordIndex, sRecordValue) {
if (!bHasIndex0) { // first run
bHasIndex0 = true;
sHTML += '<div class="gsw-free-text-search-output-heading">Locations</div>';
}
var iGazetteerIndex = sRecordValue['Link'].indexOf('list-search-results'),
sLink = (iGazetteerIndex > -1) ? '/' + sWebsiteName + '/' + sRecordValue['Link'] : '/' + sRecordValue['Link'];
sHTML += createSearchOutputHTML(sRecordValue, sLink, null);
});
sHTML += '</div>';
} else if (value['Node'] === 'node2' && value['Records'].length > 0) {
sHTML += '<div id="freetext-rhs-accom-1">';
$.each(value['Records'], function(iRecordIndex, sRecordValue) {
if (!bHasIndex1) {
bHasIndex1 = true;
if (bHasIndex0) {
sHTML += '<div class="gsw-free-text-search-output-separator"></div>';
}
sHTML += '<div class="gsw-free-text-search-output-heading">Accommodation</div>';
}
sHTML += createSearchOutputHTML(sRecordValue, null, null);
});
sHTML += '</div>';
} else if (value['Node'] === 'node3' && value['Records'].length > 0) {
var propRefMatch = "",
propArray = [];
sHTML += '<div id="freetext-rhs-accom-2">';
$.each(value['Records'], function(iRecordIndex, sRecordValue) {
if (!bHasIndex2 && !bHasIndex1) {
bHasIndex2 = true;
if (bHasIndex0) {
sHTML += '<div class="gsw-free-text-search-output-separator"></div>';
}
sHTML += '<div class="gsw-free-text-search-output-heading">Accommodation</div>';
}
//Perfect Match of Prop Ref
if ((m_sInput === sRecordValue.Key) || (m_sInput === sRecordValue.RecordID)) {
propRefMatch = sRecordValue
} else {
propArray.push(sRecordValue)
}
});
if (propRefMatch !== "") {
sHTML += createSearchOutputHTML(propRefMatch, null, null);
}
if (propArray.length) {
for (var i = 0; i < propArray.length; i++) {
sHTML += createSearchOutputHTML(propArray[i], null, null)
}
}
sHTML += '</div>';
}
if (value['Node'] === 'google' && m_oOptions.disableGoogleAPI !== true) {
if (value['Records'] && value['Records'].length > 0) {
sHTML += '<div id="freetext-geo-locations">';
$.each(value['Records'], function(iRecordIndex, sRecordValue) {
if (sRecordValue.geometry.location_type !== "ROOFTOP") {
if (!bHasIndex3) {
bHasIndex3 = true;
sHTML += '<div class="gsw-free-text-search-output-heading">Locations</div>';
}
sHTML += createSearchOutputHTML(sRecordValue, null, true);
}
});
if (bHasIndex2) {
sHTML += '<div class="gsw-free-text-search-output-separator"></div>';
}
sHTML += '</div>';
}
} else if (m_oOptions.disableGoogleAPI == true && !bHasIndex0 && !bHasIndex2 && !bHasIndex1) {
fnFailedFreeTextSearch();
}
}
});
if (sHTML !== '') {
setSearchOutput(sHTML);
} else {
fnFailedFreeTextSearch();
}
},
'error': function(oError) {
if (m_bHaltRequestHandler) {
return false;
}
//console.log('There was an error:');
//console.log(oError);
fnFailedFreeTextSearch(true);
}
});
}
function fnFailedFreeTextSearch(bError) {
m_bHaltRequestHandler = true;
clearSearchOutput();
if (bError) {
setSearchOutput('<div class="gsw-free-text-search-output-heading">Sorry, something went wrong, please try again.</div>');
} else {
var message = "Sorry, no accommodations found in '" + m_oFreeTextInput.value + "'<br>Please try searching for another location or select a popular destination below."
// Blue Chip only
if (window.location.hostname.indexOf('www.bluechipholidays.co.uk') > -1) {
var output = "<ul>" + "<li><a class='gsw-no-result-link' data-url='england/cornwall'>Cornwall</a></li>" + "<li><a class='gsw-no-result-link' data-url='england/devon'>Devon</a></li>" +
"<li><a class='gsw-no-result-link' data-url='england/dorset'>Dorset</a></li>" + "<li><a class='gsw-no-result-link' data-url='england/isle-of-wight'>Isle of Wight</a></li>" + "</ul>"
setSearchOutput("<div class='gsw-free-text-search-output-heading'>" + message + output + "</div>")
$(".gsw-no-result-link").on("click", function() {
selectRegion($(this)[0]);
closeRegionsContainer();
clearSearchOutput();
m_bFreeTextInputValid = false;
m_bHaltRequestHandler = false; // enable ajax requests
toggleClearButton(false);
clearOutFreeTextInputSearchAttributes();
m_oFreeTextInput.setAttribute('data-rhs-search', 'true');
toggleRHS(true);
})
} else {
setSearchOutput("<div class='gsw-free-text-search-output-heading'>" + message + "</div>")
}
}
m_oFreeTextInput.setAttribute('data-value', 'All regions');
}
function createSearchOutputHTML(sRecordValue, sLink, bGeoSearch) {
var sHTML = '<li>';
if (bGeoSearch) {
var sAddressFirstPart = sRecordValue['formatted_address'].split(',')[0].trim();
sHTML += '<a class="gsw-freetext-search-value" data-geoSearch="true" data-addressShort = "' + sAddressFirstPart + '"data-address="' + encodeURI(sRecordValue['formatted_address']) + '" href="?lat=' + sRecordValue['geometry'][
'location'
]['lat'] + '&lng=' + sRecordValue['geometry']['location']['lng'] + '&location=' + sAddressFirstPart + '&miles=' + m_oOptions.searchRadius + '">';
sHTML += sRecordValue['formatted_address'];
} else {
if (sLink) {
sHTML += '<a class="gsw-freetext-search-value" data-address="' + encodeURI(sRecordValue['DisplayText'].trim()) + '" href="' + sLink + '">';
} else { // assume direct link
sLink = sRecordValue['Link'].replace(/^\/\/|^\//, ""); // replace only the first character if it is a '/' or '//'
// prepend product details name if not present
var productDetailsPageName = getProductDetailsPageName(m_iWebsiteId);
var productDetailsRegExp = new RegExp('^' + productDetailsPageName);
if (!productDetailsRegExp.test(sLink)) {
sLink = productDetailsPageName + '/' + sLink;
}
//S Mulberry Fix (server returning 'product-details-page-name')
switch (m_iWebsiteId) {
case 35534:
sLink = sLink.replace('product-details-page-name', 'cottages');
break;
case 23070:
sLink = sLink.replace('cottages', 'cottages');
break;
}
// //E Mulberry Fix
sHTML += '<a class="gsw-freetext-search-value" data-directLink="true" data-address="' + encodeURI(sRecordValue['DisplayText'].trim()) + '" href="/' + sLink + '">';
}
sHTML += sRecordValue['DisplayText'];
}
sHTML += '</a></li>';
//console.log(sRecordValue);
return sHTML;
}
function addSearchValueClickListeners() {
var oaSearchValues = document.querySelectorAll('.gsw-freetext-search-value');
for (var i = 0; i < oaSearchValues.length; i++) {
oaSearchValues[i].addEventListener('click', function(oEvent) {
stopAndPreventDefault(oEvent);
// run region functionality when clicked
selectFreeTextRegion(this);
closeRegionsContainer();
clearSearchOutput();
toggleRHS(true);
// CDC only
if (window.location.hostname.split(".")[1] === "cottages") {
if (!!oEvent.target.dataset.geosearch) {
document.querySelector("#global-search-widget .disable-overlay").style.display = "block";
m_oRegionRootSelect.disabled = true;
} else {
m_oRegionRootSelect.disabled = false;
document.querySelector("#global-search-widget .disable-overlay").style.display = "none";
var sUrl = oEvent.target.href.replace(window.location.origin, "");
if (sUrl.charAt(0) === "/") {
sUrl = sUrl.substring(1);
}
for (var i = 0; i < m_oRegionRootSelect.childElementCount; i++) {
if (m_oRegionRootSelect.children[i].dataset.url === sUrl.split("/")[0]) {
m_oRegionRootSelect.value = m_oRegionRootSelect.children[i].value;
}
}
}
}
// mobile
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth) {
toggleFixBody(false);
}
});
}
}
function closeRegionsContainer() {
m_oParentMethods.toggleElement(m_oRegionsContainer, false);
toggleClearButton(false);
}
function selectFreeTextRegion(oElement) {
m_bFreeTextInputValid = true;
m_oFreeTextInput.removeAttribute('data-rhs-search');
m_oFreeTextInput.removeAttribute('data-using-defaultRegionID');
if (oElement.getAttribute('data-directLink') === 'true') {
m_oFreeTextInput.value = oElement.innerHTML.split(',', 2);
// m_oFreeTextInput.value = oElement.innerHTML.split(/,(.+)/)[0,1].trim();
m_oFreeTextInput.setAttribute('data-directLink', 'true');
} else {
m_oFreeTextInput.value = oElement.dataset.address.replace(/%20/g, ' ').trim();
}
if (oElement.getAttribute('data-geoSearch') === 'true') {
m_oFreeTextInput.setAttribute('data-geoSearch', 'true');
}
m_oFreeTextInput.setAttribute('data-url', oElement.getAttribute('href'));
toggleClearButton(false);
}
return {
init: fnInit,
createSearchOutput: fnCreateSearchOutput,
selectRegion: fnSelectRegion,
regionsContainerOpened: fnRegionsContainerOpened,
regionsContainerClosed: fnRegionsContainerClosed,
applyMatchedInputString: fnApplyMatchedInputString,
failedFreeTextSearch: fnFailedFreeTextSearch,
getDestinationSearchData: fnGetDestinationSearchData,
setDestinationFromStoredSearch: fnSetDestinationFromStoredSearch
}
}();
// **************************************************************************************
// Utility Methods
function toggleSearchBtnSearchingState(bToggle) {
if (bToggle) {
m_oSearchButton.className = 'searching'; // Apply the searching class to the button
m_oSearchButton.querySelector('.search-text').innerText = m_sFindingLabel;
} else {
m_oSearchButton.classList.remove('searching');
m_oSearchButton.querySelector('.search-text').innerText = m_sSearchLabel;
}
}
function toggleLockUI(bToggle) {
if (bToggle) {
m_GSW.classList.add('lock-ui');
} else {
m_GSW.classList.remove('lock-ui');
}
}
function closeAllUIPanels() {
toggleElement(m_oDateContainer, false);
toggleElement(m_oRegionsContainer, false);
toggleElement(m_oPartyStepperContainer, false);
toggleFixBody(false);
}
function handleRegionDisplay() {
if (document.documentElement.clientWidth <= m_iMobileLandscapeMaxWidth || m_bRHSAsDropdownClass !== '') { // mobile or RHSAsDropdown
toggleAllRegions(false);
} else {
toggleAllRegions(true);
}
}
function getRegionRootURL(oRHSSection) {
// Handle optional regionRoot url
if (oRHSSection.regionRoot.hasOwnProperty('url')) {
return oRHSSection.regionRoot.url;
} else {
return createURLFromLabel(oRHSSection.regionRoot.label);
}
}
function createURLFromLabel(sLabel) {
return sLabel.replace(/\s/g, '-').replace('&-', '').toLowerCase();
}
function setRegionSelectDataUrlFromId(sValue) {
// set data-url property based on the value of the selected option (IE doesn't support select.selectedOptions)
for (var i = 0; i < m_oRegionRootSelect.children.length; i++) {
if (m_oRegionRootSelect.children[i].getAttribute('value') === sValue) {
m_oRegionRootSelect.setAttribute('data-url', m_oRegionRootSelect.children[i].getAttribute('data-url'));
// Set data-all-regions url
var sSelectDataAllRegionsURL = m_oRegionRootSelect.children[i].getAttribute('data-all-regions-url'),
sDataAllRegionsURL;
if (sSelectDataAllRegionsURL && typeof(sSelectDataAllRegionsURL) !== 'undefined' && sSelectDataAllRegionsURL !== '') {
// Make sure that when resetting back to default that we also set the data-url property for All regions (ie if a different url is used in place of 'all-regions')
sDataAllRegionsURL = m_oRegionRootSelect.children[i].getAttribute('data-url');
} else {
sDataAllRegionsURL = 'all-regions';
}
m_oRegionRootSelect.setAttribute('data-all-regions', sDataAllRegionsURL);
// End Set data-all-regions url
break;
}
}
}
function senseCheckDataProperty(oData, sDataName, sProperty, sType) {
if (!oData.hasOwnProperty(sProperty)) {
throw new Error(sDataName + ' must contain the property \'' + sProperty + '\'');
} else {
if (sType === 'array') {
if (!Array.isArray(oData[sProperty])) {
throw new Error(sDataName + '.' + sProperty + ' must be of type ' + sType);
}
} else {
if (typeof(oData[sProperty]) !== sType) {
throw new Error(sDataName + '.' + sProperty + ' must be of type ' + sType);
}
}
}
return true;
}
function scrollIntoPosition(oElement, iScrollPosition, bAnimate) {
if (bAnimate) {
// JQuery animate method is very janky. The animation of the scroll can be optimised to use GPU in time
$(oElement).animate({
scrollTop: iScrollPosition
}, 500);
} else {
oElement.scrollTop = iScrollPosition;
}
}
function scrollGSWIntoView(oEL) {
if (m_oOptions.scrollToAnchorEnabled) {
if (oEL === m_oRegionsContainer || oEL === m_oDateContainer || oEL === m_oPartyStepperContainer) {
// get bottom position of oEL, if its hanging off the bottom of the window, scroll GSW to the top
var oRect = (oEL === m_oRegionsContainer) ? m_oRegions.getBoundingClientRect() : oEL.getBoundingClientRect(),
iYOffset = 20,
bUseScrollIntoView = false;
if (oRect.bottom > window.innerHeight) {
if (!fnDetectIEorEdge()) { // The browser is IE or edge, which does not support scrollIntoView, use jQuery animate to scroll the browser
/*
The browser supports scrollIntoView, check if the API has defined a cssSelector property in the scrollToAnchor object,
if so scroll the browser to m_oOptions.scrollToAnchorElement otherwise use jQuery animate to scroll the browser with a pre-defined offset
*/
if (m_oOptions.scrollToAnchorElement) {
bUseScrollIntoView = true;
} else {
if (typeof(m_oOptions.scrollToAnchorElementUnavailable) === 'undefined' || !m_oOptions.scrollToAnchorElementUnavailable) {
setScrollToAnchorElement(); // in case the markup was not available at doc ready, attempt to get the element again
if (m_oOptions.scrollToAnchorElement) { // only check once after init for scrollToAnchorElement
bUseScrollIntoView = true;
} else {
// if not found then set m_oOptions.scrollToAnchorElementUnavailable flag to prevent the check for m_oOptions.scrollToAnchorElement from re-occuring
m_oOptions.scrollToAnchorElementUnavailable = true;
}
}
}
}
if (bUseScrollIntoView) {
m_oOptions.scrollToAnchorElement.scrollIntoView({
behavior: 'smooth',
block: "start"
});
} else {
var oScrollingElement = (document.scrollingElement) ? document.scrollingElement : document.documentElement,
iScrollPos = Math.round(m_GSW.getBoundingClientRect().top - iYOffset + document.documentElement.scrollTop);
scrollIntoPosition(oScrollingElement, iScrollPos, true);
}
}
}
}
}
function stopAndPreventDefault(oEvent) {
oEvent.stopPropagation();
oEvent.stopImmediatePropagation();
oEvent.preventDefault();
}
function toggleElement(oEL, bVisible) {
if (oEL) {
if (typeof(bVisible) !== 'undefined') {
// optional bVisible is specifed, set to bVisible
if (bVisible) {
oEL.style.display = 'block';
} else {
oEL.style.display = 'none';
}
if (oEL === m_oRegionsContainer && !bVisible && m_oOptions.enableFreeTextSearch) {
m_GSW.classList.remove('gsw-modal');
FreeTextSearchHandler.regionsContainerClosed();
}
} else {
// normal toggle behaviour
if (oEL.style.display === 'none') {
oEL.style.display = 'block';
} else {
oEL.style.display = 'none';
}
}
setTimeout(function(oEvent) {
scrollGSWIntoView(oEL);
}, 50);
}
}
function getIsIOS() {
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
}
function fnDetectIEorEdge() {
var sUa = window.navigator.userAgent,
iMSIE = sUa.indexOf('MSIE '), // IE 10
iTrident = sUa.indexOf('Trident/'); // IE 11
iEdge = sUa.indexOf('Edge'); // Edge
if (iMSIE > 0 || iTrident > 0 || iEdge > 0) {
return true;
} // IE 10 or below, IE 11 or Edge
// other browser
return false;
}
function checkForExcludedStrings(data) {
$.each(data, function(index, value) {
value.Records = value.Records.filter(function(value, key) {
if (value.Link) {
var regex = new RegExp('(' + m_oOptions.freeTextExcludeList + ')', 'gi');
return !value.Link.match(regex);
} else {
return true
}
})
});
return data;
}
// END Utility Methods
// **************************************************************************************
// **************************************************************************************
// Public API
return {
init: fnInit,
setRHSData: fnSetRHSData,
setRadiiList: fnSetRadiiList,
setDefaultRegionId: fnSetDefaultRegionId
};
}();
</script>
<script type="text/javascript" async="true" src="/search-widget-regions.js"></script>
<script>
// Script for search widget
document.addEventListener("DOMContentLoaded", function(oEvent) {
GlobalSearchWidget.init({
defaultRegionRootId: 27244, //landal
defaultSelectedRegionId: 1001,
useBorder: true,
rhsAsDropdown: true,
date: {
maxYear: {
'27244': 2022
}
},
});
});
</script>
<style>
/* custom searchwidget styles */
#global-search-widget {
clear: both
}
#global-search-widget.use-border {
border: 10px solid rgba(183, 183, 183, .25);
background-color: rgba(193, 193, 193, 0.25);
border-radius: 3px
}
#global-search-widget #gsw-search-btn {
background-color: #6ebb20;
border-color: #6ebb20;
cursor: pointer
}
#global-search-widget #gsw-search-btn:hover,
#global-search-widget #gsw-search-btn:focus {
background-color: #438927;
border-color: #438927
}
#global-search-widget .gsw-chevron-down:before {
border-color: #6ebb20
}
#global-search-widget #regions a {
color: #6ebb20
}
#global-search-widget .ui-datepicker-next:after,
#global-search-widget .ui-datepicker-prev:after {
border-color: #6ebb20
}
#global-search-widget #dateCancelBtn,
#global-search-widget #partyCancelBtn,
#global-search-widget #rhsCancelBtn {
background: #6ebb20
}
#global-search-widget .ui-datepicker-current-day a.ui-state-default {
background: #6ebb20
}
#global-search-widget a.ui-state-default:hover {
background: #6ebb20
}
#global-search-widget .stepper,
#global-search-widget .stepper:after {
border-color: #6ebb20
}
#global-search-widget .stepper.up:before {
border-right: 2px solid #6ebb20
}
#global-search-widget .mobile-region-cancel {
max-width: 100%
}
/* show regions at all times for region dropdown */
#global-search-widget .gsw-global-nav-parent {
display: none !important
}
#global-search-widget #regions .gsw-level-1 {
display: block !important
}
@media only screen and (max-width: 900px) {
#global-search-widget {
max-width: 360px;
margin: auto
}
}
</style>
</div>
</div>
</div>
</div><!-- end #hero-featured -->
</div>
<!-- S: BTA Winner Logo - mobile -->
<div class="grey-bg">
<img class="bta-mobile-roundel" src="/assets/Landal-bta-2019-winner-logo-black.png?v=38acb550801d9092f4dee54f7c72498b" alt="British Travel Awards - Best UK Family Holiday Company Winner" title="British Travel Awards 2019 Winner Logo">
</div>
<!-- E: BTA Winner Logo - mobile -->
<!-- Header USPs -->
<div class="hero-usp-container">
<div class="hero-usps col-sm-12 text-center">
<div class="hero-usp">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" viewBox="0 0 24 24" width="32" height="32">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" id="leaf"
d="M16.01,10.72c-0.01,0.37-0.3,0.66-0.67,0.67c-1.11-0.03-2.22,0.16-3.26,0.54c-1.04,0.44-1.98,1.06-2.8,1.83 l-0.7,0.69c-0.33,0.33-0.58,0.57-0.77,0.74c-0.13,0.12-0.29,0.2-0.47,0.2c-0.37-0.01-0.66-0.3-0.67-0.67c0-0.18,0.08-0.34,0.2-0.47 c0.75-0.82,1.57-1.57,2.46-2.24c0.82-0.61,1.73-1.08,2.7-1.4c1.06-0.38,2.18-0.58,3.31-0.6c0.37,0.01,0.66,0.3,0.67,0.67l0,0V10.72z M21.34,8.66c0-0.33-0.03-0.67-0.08-1c-0.06-0.43-0.15-0.86-0.25-1.29c-0.09-0.42-0.26-0.81-0.49-1.17 c-0.15-0.27-0.42-0.45-0.73-0.48c0-0.13-0.15-0.13-0.45,0c-0.3,0.13-0.43,0.19-0.38,0.17s-0.05,0.05-0.28,0.21l-0.31,0.29 l-0.36,0.36c-0.34,0.29-0.74,0.49-1.18,0.59c-0.56,0.14-1.13,0.22-1.7,0.25c-0.62,0-1.24,0.02-1.86,0.06s-1.24,0.07-1.87,0.09 c-0.5,0.04-0.99,0.13-1.47,0.27c-0.75,0.25-1.46,0.58-2.13,1c-0.66,0.4-1.26,0.89-1.79,1.44c-0.53,0.56-0.95,1.21-1.24,1.92 c-0.3,0.73-0.45,1.5-0.45,2.29c0,0.36,0.03,0.72,0.09,1.08c0.05,0.16,0.1,0.31,0.17,0.46c0.06,0.13,0.11,0.26,0.15,0.4 c-0.04,0.2-0.15,0.38-0.32,0.5c-0.22,0.21-0.46,0.4-0.71,0.58c-0.27,0.19-0.5,0.42-0.71,0.68c-0.19,0.21-0.31,0.48-0.32,0.77 c-0.01,0.05-0.01,0.09,0,0.14c0,0.03,0,0.07,0,0.1l0.06,0.1l0.06,0.11c0.12,0.23,0.28,0.44,0.47,0.62c0.19,0.14,0.43,0.2,0.66,0.18 c0.27-0.01,0.53-0.15,0.69-0.37c0.21-0.22,0.4-0.46,0.55-0.73c0.14-0.25,0.3-0.5,0.47-0.73c0.09-0.14,0.22-0.25,0.38-0.29 c0.35,0.07,0.69,0.2,1,0.39c0.51,0.26,0.81,0.41,0.92,0.44c0.97,0.33,1.98,0.49,3,0.49c1.59-0.01,3.15-0.39,4.56-1.12 c1.41-0.68,2.68-1.62,3.72-2.79c0.98-1.14,1.64-2.52,1.92-4C21.26,10.01,21.33,9.34,21.34,8.66L21.34,8.66L21.34,8.66z"
style="fill: rgb(110, 187, 32);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
<span class="usp-text">ABTA Protected</span>
</div>
<div class="hero-usp">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" viewBox="0 0 24 24" width="32" height="32">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" id="leaf"
d="M16.01,10.72c-0.01,0.37-0.3,0.66-0.67,0.67c-1.11-0.03-2.22,0.16-3.26,0.54c-1.04,0.44-1.98,1.06-2.8,1.83 l-0.7,0.69c-0.33,0.33-0.58,0.57-0.77,0.74c-0.13,0.12-0.29,0.2-0.47,0.2c-0.37-0.01-0.66-0.3-0.67-0.67c0-0.18,0.08-0.34,0.2-0.47 c0.75-0.82,1.57-1.57,2.46-2.24c0.82-0.61,1.73-1.08,2.7-1.4c1.06-0.38,2.18-0.58,3.31-0.6c0.37,0.01,0.66,0.3,0.67,0.67l0,0V10.72z M21.34,8.66c0-0.33-0.03-0.67-0.08-1c-0.06-0.43-0.15-0.86-0.25-1.29c-0.09-0.42-0.26-0.81-0.49-1.17 c-0.15-0.27-0.42-0.45-0.73-0.48c0-0.13-0.15-0.13-0.45,0c-0.3,0.13-0.43,0.19-0.38,0.17s-0.05,0.05-0.28,0.21l-0.31,0.29 l-0.36,0.36c-0.34,0.29-0.74,0.49-1.18,0.59c-0.56,0.14-1.13,0.22-1.7,0.25c-0.62,0-1.24,0.02-1.86,0.06s-1.24,0.07-1.87,0.09 c-0.5,0.04-0.99,0.13-1.47,0.27c-0.75,0.25-1.46,0.58-2.13,1c-0.66,0.4-1.26,0.89-1.79,1.44c-0.53,0.56-0.95,1.21-1.24,1.92 c-0.3,0.73-0.45,1.5-0.45,2.29c0,0.36,0.03,0.72,0.09,1.08c0.05,0.16,0.1,0.31,0.17,0.46c0.06,0.13,0.11,0.26,0.15,0.4 c-0.04,0.2-0.15,0.38-0.32,0.5c-0.22,0.21-0.46,0.4-0.71,0.58c-0.27,0.19-0.5,0.42-0.71,0.68c-0.19,0.21-0.31,0.48-0.32,0.77 c-0.01,0.05-0.01,0.09,0,0.14c0,0.03,0,0.07,0,0.1l0.06,0.1l0.06,0.11c0.12,0.23,0.28,0.44,0.47,0.62c0.19,0.14,0.43,0.2,0.66,0.18 c0.27-0.01,0.53-0.15,0.69-0.37c0.21-0.22,0.4-0.46,0.55-0.73c0.14-0.25,0.3-0.5,0.47-0.73c0.09-0.14,0.22-0.25,0.38-0.29 c0.35,0.07,0.69,0.2,1,0.39c0.51,0.26,0.81,0.41,0.92,0.44c0.97,0.33,1.98,0.49,3,0.49c1.59-0.01,3.15-0.39,4.56-1.12 c1.41-0.68,2.68-1.62,3.72-2.79c0.98-1.14,1.64-2.52,1.92-4C21.26,10.01,21.33,9.34,21.34,8.66L21.34,8.66L21.34,8.66z"
style="fill: rgb(110, 187, 32);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
<span class="usp-text">2.8 million satisfied customers every year</span>
</div>
<div class="hero-usp">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" viewBox="0 0 24 24" width="32" height="32">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" id="leaf"
d="M16.01,10.72c-0.01,0.37-0.3,0.66-0.67,0.67c-1.11-0.03-2.22,0.16-3.26,0.54c-1.04,0.44-1.98,1.06-2.8,1.83 l-0.7,0.69c-0.33,0.33-0.58,0.57-0.77,0.74c-0.13,0.12-0.29,0.2-0.47,0.2c-0.37-0.01-0.66-0.3-0.67-0.67c0-0.18,0.08-0.34,0.2-0.47 c0.75-0.82,1.57-1.57,2.46-2.24c0.82-0.61,1.73-1.08,2.7-1.4c1.06-0.38,2.18-0.58,3.31-0.6c0.37,0.01,0.66,0.3,0.67,0.67l0,0V10.72z M21.34,8.66c0-0.33-0.03-0.67-0.08-1c-0.06-0.43-0.15-0.86-0.25-1.29c-0.09-0.42-0.26-0.81-0.49-1.17 c-0.15-0.27-0.42-0.45-0.73-0.48c0-0.13-0.15-0.13-0.45,0c-0.3,0.13-0.43,0.19-0.38,0.17s-0.05,0.05-0.28,0.21l-0.31,0.29 l-0.36,0.36c-0.34,0.29-0.74,0.49-1.18,0.59c-0.56,0.14-1.13,0.22-1.7,0.25c-0.62,0-1.24,0.02-1.86,0.06s-1.24,0.07-1.87,0.09 c-0.5,0.04-0.99,0.13-1.47,0.27c-0.75,0.25-1.46,0.58-2.13,1c-0.66,0.4-1.26,0.89-1.79,1.44c-0.53,0.56-0.95,1.21-1.24,1.92 c-0.3,0.73-0.45,1.5-0.45,2.29c0,0.36,0.03,0.72,0.09,1.08c0.05,0.16,0.1,0.31,0.17,0.46c0.06,0.13,0.11,0.26,0.15,0.4 c-0.04,0.2-0.15,0.38-0.32,0.5c-0.22,0.21-0.46,0.4-0.71,0.58c-0.27,0.19-0.5,0.42-0.71,0.68c-0.19,0.21-0.31,0.48-0.32,0.77 c-0.01,0.05-0.01,0.09,0,0.14c0,0.03,0,0.07,0,0.1l0.06,0.1l0.06,0.11c0.12,0.23,0.28,0.44,0.47,0.62c0.19,0.14,0.43,0.2,0.66,0.18 c0.27-0.01,0.53-0.15,0.69-0.37c0.21-0.22,0.4-0.46,0.55-0.73c0.14-0.25,0.3-0.5,0.47-0.73c0.09-0.14,0.22-0.25,0.38-0.29 c0.35,0.07,0.69,0.2,1,0.39c0.51,0.26,0.81,0.41,0.92,0.44c0.97,0.33,1.98,0.49,3,0.49c1.59-0.01,3.15-0.39,4.56-1.12 c1.41-0.68,2.68-1.62,3.72-2.79c0.98-1.14,1.64-2.52,1.92-4C21.26,10.01,21.33,9.34,21.34,8.66L21.34,8.66L21.34,8.66z"
style="fill: rgb(110, 187, 32);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
<span class="usp-text">Trusted for over 60 years</span>
</div>
</div>
</div>
<div class="container">
<div class="book-with-confidence-wrapper col-sm-12">
<div class="main book-with-confidence">
<div class="bwc-section">
<div class="confidence-icon">
<img src="/assets/logo-only.png?v=6750dd69949643d6f80e84328fedebb9">
</div>
<h2 class="confidence-title">Book with Confidence</h2>
<p>More information on secluded locations, refunds and payment options for your peace of mind</p>
<a class="confidence-link" href="/book-with-confidence">Find out more</a>
</div>
<div class="bwc-section">
<div class="confidence-icon">
<img src="/assets/safer-stands-landal.png?v=26b80f4c4e2cb549fe0c263b6911efbb">
</div>
<h2 class="confidence-title">Safer Stays</h2>
<p>Extra cleaning considerations<br>for your reassurance</p>
<a class="confidence-link" href="/safer-stays">More about Safer Stays</a>
</div>
</div>
</div>
</div>
<section id="promo-pods">
<div class="container">
<div class="row">
<!-- AUTO UPDATE DATE SCRIPT -->
<script>
document.addEventListener("DOMContentLoaded", function() {
// 5 = Friday
var links = document.querySelectorAll('.auto-update-link');
for (var i = 0; i < links.length; i++) {
var link = links[i],
href = link.getAttribute('href'),
startDate = getParameterByName('start', href),
duration = getParameterByName('nights', href);
newDate = MasterJS.getNextBookingDate();
link.setAttribute('href', href.replace(startDate, newDate.startDate).replace(duration, newDate.duration));
}
});
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
</script>
<div class="col-sm-6 pod">
<!-- add class auto-update-link to <a> for dated last minute href -->
<a id="landalSummerPodLink" href="/uk/landal-barton-pines-beyo/courtyard-lodge-2-lp17490?start=08-04-2022&adult=2&nights=3&range=3">
<img src="https://www.landal.co.uk/assets/new_easter_asset-min.jpg">
<div class="pod-text">
<span class="lead-in">Book an Easter break today </span>
<span class="second-line"><sup>and receive up to 25% off your trip*</sup></span>
</div>
</a>
<div class="col-xs-12 text-center terms-link">
<a data-toggle="modal" data-target="#landalPodOneTC" style="cursor:pointer;">*Terms and conditions</a>
</div>
</div>
<div class="col-sm-6 pod" style="margin-top: 0px !important;">
<a href="/uk/all-regions?adult=2&child=2&infant=0&pets=0&nights=3&range=3&start=22-07-2022&sortorder=4"> <!-- add class auto-update-link for dynamic last minute link -->
<img src="/assets/landal_right_pod.jpg" alt="2021 Low Deposit">
<div class="pod-text">
<span class="lead-in" style="">Secure your Summer Getaway</span>
<span class="second-line" style="">
<sup style="">from just £25*</sup>
</span>
</div>
</a>
<div class="col-xs-12 text-center terms-link">
<a data-toggle="modal" data-target="#landalPodTwoTC" style="cursor: pointer;">*Terms and
conditions</a>
</div>
</div>
</div>
</div>
</section>
<section id="featured" class="grey-bg text-center">
<h2 class="swoosh">FEATURED IN</h2>
<div class="featured-logos">
<div class="logo">
<!-- the Telegraph -->
<svg id="Telegraph" version="1.2" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 119 21.1" width="253.368" height="41.145">
<path
d="M16.1 18.4c2.1-.2 4.2-.9 4.2-3.1V8.2l-1-1-1.1 1v5.3l.9.8-2 1.8H17l-2-1.7.5-.5V3.1c0-.8-.7-1.2-1.1-1.3v-.2c.2-.1.5-.2.9-.2.7 0 1.3.4 1.5.9h.1c.4-.6 1.1-.9 1.7-.9.2 0 .4 0 .6.1v.2c-.3.1-.9.5-.9 1.6v4.5L21 5.3h.2c.2.2 1.3 1.2 1.6 1.4.1.1.2.1.4.1s.4-.1.6-.2v.3c-.2.2-.5.5-.5 1V14c0 2.7-3 4.4-7 4.7v-.3zm-1-16.7c.4.3.8.6.8 1.3v11.1l-.4.4 1.7 1.4.5-.4-1.3-1.1.2-.2V3.1c-.1-.9-.9-1.3-1.5-1.4m4.7 16c.8-.5 1.6-1.1 1.6-2.3V7.8l-1.2-1.3-.6.5 1 1.1v7.2c.1 1-.3 1.8-.8 2.4zm5-9.9c1.2-.6 2.9-1.6 4.1-2.5h.2c.8.8 1.9 2.1 2.9 3v.2l-4.4 2.8v1.8c.4.3 1.7.9 2.5 1.2l1.8-1.7.2.2-3.5 3.4h-.2c-1.2-.5-2.7-1.2-3.7-1.7.1-.4.2-1.3.2-2.4V7.8zm4.1 7.7c-1.2-.5-2.2-1-3.2-1.5.1-.3.1-.8.1-1.9V7.6l-.7.4v4.1c0 1.1 0 1.9-.1 2.2.9.5 2.2 1.1 3.4 1.6l.5-.4zM27.6 11l2-1.3c-.7-.8-1.4-1.6-2-2.2V11zm.6-4.4l-.5.4c.6.7 1.4 1.6 2.2 2.5l.6-.4c-.9-.9-1.7-1.8-2.3-2.5m82.3 11.8c2.1-.2 4.2-.9 4.2-3.1V8.2l-1-1-1.1 1v5.3l.9.8-2 1.8h-.2l-2-1.7.5-.5V3.1c0-.8-.7-1.2-1.1-1.3v-.2c.2-.1.5-.2.9-.2.7 0 1.3.4 1.5.9h.1c.4-.6 1.1-.9 1.7-.9.2 0 .4 0 .6.1v.2c-.3.1-.9.5-.9 1.6v4.5l2.6-2.5h.2c.2.2 1.3 1.2 1.6 1.4.1.1.2.1.4.1s.4-.1.6-.2V7c-.2.2-.5.5-.5 1v6c0 2.7-3 4.4-7 4.7v-.3zm-1-16.7c.3.2.8.6.8 1.3v11l-.4.4 1.7 1.4.5-.4-1.3-1.1.2-.2v-11c-.1-.9-.9-1.3-1.5-1.4m4.6 15.9c.8-.5 1.6-1.1 1.6-2.3V7.8l-1.2-1.3-.5.5 1 1.1v7.2c.1 1-.3 1.8-.9 2.3zM50.7 7.8c1.2-.6 2.9-1.6 4.1-2.5h.2c.8.8 1.9 2.1 2.8 2.9v.2l-4.3 2.8V13c.5.3 1.7.9 2.5 1.2l1.8-1.7.2.2-3.5 3.4h-.2c-1.2-.5-2.7-1.2-3.7-1.7.1-.4.2-1.3.2-2.4V7.8zm4 7.7c-1.2-.5-2.2-1-3.2-1.5.1-.3.1-.8.1-1.9V7.6l-.6.3V12c0 1.1 0 1.9-.1 2.2.9.5 2.2 1.1 3.4 1.6l.4-.3zm-1.2-4.6l2-1.3c-.7-.8-1.4-1.6-2-2.2v3.5zm.6-4.3l-.6.4c.6.7 1.4 1.6 2.2 2.5l.6-.4c-.8-.9-1.6-1.8-2.2-2.5m7.7-3.8v10.5c0 .4.4.9.8 1l.6-.6.2.2-2.2 2.3H61c-.8-.2-2-1-2-2.3V4.1l-.6-.6-.7.7-.2-.2L60 1.4h.2l1.6 1.4zm-.3 12.6c-.8-.2-1.6-.7-1.6-1.8V3.7l-.9-.9-.5.5.8.7v9.9c0 1.1.9 1.8 1.7 2l.5-.5zm2.9-7.6c1.2-.6 2.9-1.6 4.1-2.5h.2c.8.8 1.9 2.1 2.8 2.9v.2l-4.3 2.8V13c.4.3 1.7.9 2.5 1.2l1.8-1.7.2.2-3.5 3.4H68c-1.2-.5-2.7-1.2-3.7-1.7.1-.4.2-1.3.2-2.4V7.8zm4 7.7c-1.2-.5-2.2-1-3.2-1.5.1-.3.1-.8.1-1.9V7.6l-.6.3V12c0 1.1 0 1.9-.1 2.2.9.5 2.2 1.1 3.4 1.6l.4-.3zm-1.2-4.6l2-1.3c-.7-.8-1.4-1.6-2-2.2v3.5zm.6-4.3l-.5.4c.6.7 1.4 1.6 2.2 2.5l.5-.4c-.8-.9-1.6-1.8-2.2-2.5m17.8 1.6v5.1c0 .4.4.9.8.9l.6-.6.2.2-2.2 2.3h-.1c-.8-.2-2-.9-2-2.3V8l-.6-.6-.7.6-.2-.2 2.5-2.5h.2l1.6 1.6v.9l2-2.4h.2c.4.4 1 1 1.6 1.4l-1.7 2c-.5-.4-1.1-1-1.5-1.3l-.7.7zm-.2 7.2c-.8-.2-1.6-.7-1.6-1.8v-6l-.8-.9-.5.5.7.7v5.9c0 1.1.9 1.8 1.7 2l.5-.4zm1.1-8.1c.3.3.8.8 1.2 1.1l.4-.5c-.4-.3-1-.9-1.3-1.1l-.3.5zm5.6 8.9l-2.4-1.6v-3.2c.6-.4 1.9-1.3 2.5-1.7-1-.5-1.8-1.1-2.3-1.8v-.2c1.4-.8 2.5-1.6 3.3-2.4h.2s3 1.4 3.1 1.5c.2.1.3.1.4.1.2 0 .4-.1.6-.2V7c-.2.2-.5.5-.5.9v5.3c0 .6.5.9.9 1l.6-.6.2.2-2.2 2.3h-.1c-.9-.2-1.9-1.1-2-2.1l-2.1 2.1h-.2zm.5-.8l-2-1.3v-3l-.6.4v2.9l2.2 1.4.4-.4zm1.7-5.2V8.6l-2.9-1.5c-.2.2-1 .6-1.2.8.7.8 2.5 1.9 4.1 2.3m2.6 5.2c-.8-.3-1.6-.8-1.6-1.9V8l-3-1.5c-.1.1-.4.3-.5.4l2.9 1.5v5.4c0 1 1 1.8 1.7 2.1l.5-.5zm-2.6-1.7v-3.2c-.6-.2-1.3-.4-1.9-.7v4l1.1.7.8-.8zm-21.7.8V7.8l3.6-2.5h.2c.7.3 3 1.3 3.2 1.4.1 0 .2.1.4.1s.4-.1.7-.2V7c-.2.2-.5.6-.5.9v5.7c0 1.3.3 2.1.8 2.6v.2c-.8.8-2.6 2.7-3.4 3.6h-.1c-.8-.4-2.1-.8-3.1-.8-.8 0-1.7.2-2.3.7l-.2-.1c.6-1.4 1.9-2.9 3.6-2.9 1 0 2.4.4 3.6 1.1-.8-.9-1.5-2.6-1.5-3.9l-2.1 2h-.2l-2.7-1.6zm1.7 3.9c-.8 0-1.5.4-1.9.9v.1c.5-.3 1-.4 1.9-.4 1 0 2.4.3 3.1.7l.4-.5c-.9-.4-2.2-.8-3.5-.8m.8-2.5l.5-.4-2.1-1.5V7.6l-.6.4v6.4l2.2 1.5zm3.2-8.3l-3-1.2V7l2.3 1v6c0 1.3.6 2.7 1.5 3.8l.5-.5c-.8-1-1.3-2.1-1.3-3.4V7.6zm-.9 6.1V8.2l-2-.9v6.3l1.3.8.7-.7zM103 7.8l2.6-2.5h.2c.2.2 1.4 1.3 1.6 1.4.1.1.2.1.3.1.2 0 .4-.1.6-.2V7c-.2.2-.5.6-.5 1v6.4c-1.1.3-2 .9-3 2h-.1L103 16v1.4l.9.8-2.1 1.8h-.1l-2-1.7.5-.6v-2.4c-.2 0-.6-.1-.8-.2v-.3c.2-.1.9-.7.9-1.2V8.1l-.6-.6-.7.7-.2-.2 2.5-2.5h.2l1.6 1.6v.7zm-2.5 10.1l-.4.4 1.6 1.4.5-.4-1.3-1.1.2-.2V7.6l-.9-.9-.4.4.7.7v10.1zM105 14V8.2l-1-1-1.1 1v5.3c.5.2 1.9.4 2.1.5m-.3 2.1c.1-.2.3-.4.4-.5l-2.2-.4v.6l1.8.3zm-.5-9l1.1 1.1V14l.6-.3V7.8l-1.2-1.2-.5.5zM1.8 10.3c0-2.6 1.9-4.3 3.7-5.1l.1.2c-.6.7-1 1.4-1 3 0 1.8.5 3 1.2 3.8.2-.3.4-.7.4-1.1V8.5l3.2-2.3.1.2c-.2.3-.4.7-.4 1.3v1.7c0 1.2-1.9 2.5-3.1 2.9.8.8 1.9 1.1 3.1 1.1.4 0 .8 0 1.2-.1V6c-1.1-.1-2.1-.3-3-.6-1-.3-2-.6-2.8-.6-1.3 0-2.9.4-2.9 2.3v.6l-.3.1C1.1 7.2 1 6.6 1 6.1c0-2.3 1.7-4.3 4.4-4.3 1.1 0 2.2.3 3.2.6s2 .6 3 .6c.5 0 .8-.3.8-.8s-.2-.7-.6-.8v-.2c1.2.2 2.4.9 2.4 2.4C14.3 5.1 13 6 10.8 6h-.2v7.4c1.4-.3 2.4-.9 3.1-2.1l.2.1c-.8 2.5-2.7 4.9-6 4.9s-6.1-2-6.1-6m9-5.2c-2.4 0-4.6-1.2-6.3-1.2-1.2 0-2.5.5-2.9 1.8h.1c.5-.9 1.7-1.2 2.8-1.2 1.8 0 3.9 1.2 6.3 1.2 1.9 0 3.1-.7 3.2-2.2h-.1c-.2 1.2-1.2 1.6-3.1 1.6M3.9 6.6c-.9.9-1.7 2.1-1.7 3.7C2.2 14.1 4.7 16 8 16c2 0 3.4-1.1 4.2-1.9l-.1-.1c-.9.8-2.2 1.4-4.2 1.4-2.6 0-5.1-1.6-5.1-5.1 0-1.4.5-2.8 1.1-3.7zm3.2 4.3V8.1l-.6.5v2.6c0 .3-.1.5-.1.7h.1c.3-.3.6-.6.6-1m30.3-.6c0-2.6 1.9-4.3 3.7-5.1l.1.2c-.7.8-1.1 1.5-1.1 3 0 1.8.5 3 1.2 3.8.2-.3.4-.7.4-1.1V8.5L45 6.1l.1.2c-.3.4-.4.8-.4 1.4v1.7c0 1.2-1.9 2.5-3.1 2.9.8.8 1.9 1.1 3.1 1.1.4 0 .8 0 1.2-.1V6c-1.1-.1-2.1-.3-3-.6-1-.3-2-.6-2.8-.6-1.3 0-2.9.4-2.9 2.3v.6l-.2.1c-.2-.6-.3-1.2-.3-1.7 0-2.3 1.7-4.3 4.4-4.3 1.1 0 2.2.3 3.2.6s2 .6 3 .6c.5 0 .8-.3.8-.8s-.2-.7-.6-.8v-.2c1.2.2 2.4.9 2.4 2.4 0 1.8-1.3 2.6-3.5 2.6h-.2v7.4c1.4-.3 2.4-.9 3.1-2.1l.2.1c-.8 2.5-2.7 4.9-6 4.9-3.3-.2-6.1-2.2-6.1-6.2m9-5.2c-2.4 0-4.6-1.2-6.3-1.2-1.1 0-2.4.5-2.9 1.8h.1c.5-.9 1.7-1.2 2.8-1.2 1.8 0 3.9 1.2 6.3 1.2 1.9 0 3.1-.7 3.2-2.2h-.1c-.3 1.2-1.2 1.6-3.1 1.6m-6.9 1.5c-.9.9-1.7 2.1-1.7 3.7 0 3.8 2.5 5.7 5.8 5.7 2 0 3.4-1.1 4.2-1.9l-.1-.1c-.9.8-2.2 1.4-4.2 1.4-2.6 0-5.1-1.6-5.1-5.1 0-1.4.5-2.8 1.1-3.7zm3.2 4.3V8.1l-.6.4v2.6c0 .3-.1.5-.1.7h.1c.3-.2.6-.5.6-.9"
vector-effect="non-scaling-stroke" fill="#1d1d1b"></path>
</svg>
</div>
<div class="logo">
<!-- Nat Geo -->
<svg id="natGeo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="873.986" height="300.003" viewBox="0 0 1209 415">
<image y="16" width="1209" height="399"
xlink:href="data:img/png;base64,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">
</image>
<image id="Layer_1_copy" data-name="Layer 1 copy" x="-6" y="-2" width="535" height="192"
xlink:href="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYMAAACLCAYAAACDQPXLAAAERElEQVR4nO3cPZLbZACA4Xc3hoS/IjfgAPR0HIESLgIzXICGe9BzA1pCQU0JDNQMAwPkZ23GIINQvNlsYtne9fPMaJLNjz75s1avLK98Vi2qO8Nyt/qtetw/Nn9+Xp0NC7uxGtZyMVouc6dn/z3AS1kM//l8OOD8Xn1QvT98vT74/1kthWAWmyAsR8s4DuuvP6++vmWPGzgymxishmX99XfVl8PB6M3q0+o1T9zBfFs9ONHHDuzJOAbrs9BXq2+qr4YY3K8+rN71hBzMryf6uIE9WoxCsL4M9GQIwhvD+wZvDZeLOJyVuQfmthhdItpEYePxsCw9CwC322L06DY/rbIJw6MhBs5MD8v8A7NbjM78N5eJzke/f+SVAcDtt3llMP7R0fGZ6ENnpgdn/oHZjS8TrSa/Nlw6cjA6LeP7Sfb13E/vYZlj3F2Mcch7bbZt72Xbs+v5OxtdMRjfhDoeb3yvzPT9x11tw5h98+XGeGqcxZZ/cNUKuF023+jno99vLEcnBKsd7qRnk/HGY64mB5UXHfdsyzjj/Xm5ZazL1jGdo0NYTuZi22PauNjh/K2XVybLYnRT6mq0nzwalifDcrGj8adzv6t9ZNuYPeP7YVv0XnSc6X553X3zqvVv2/+nLkbjrK6KAbffavJxGPt4ZbCafLzGHGNu+wm5644zPshsm599umx7rzzje0HTx/7wGquZY/wuuZS9S9OPiGnGfXP68TK7HOd599trvTLg9BzisuC+xtzVQeqY3KS5u4nbcFvm98r1b3vpAMCJmeuVwfr+hC+qH6rX7VT9PHz43ztHsC0AT5krBn9UH1ffm/J/3RMD4FjNdZnobPjEU/7zqrkAjtWc7xl4c/r/vD8DHC0HKADEAAAxADh5iQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAiQEAzRiDZfXjTOu+qX459QkAjtdipi27V31S/eS5/9uqeu8ItgNgq7licLf6yJQD3AzeMwBADAAQA4CTlxgAkBgAkBgAkBgAkBgAkBgAkBgAkBgA0HPG4P4etoPL3TM3wNyu+qC6i+qz6u3qiWdj79bPz4MTe8zAvlV/ATUuxdid23RCAAAAAElFTkSuQmCC">
</image>
</svg>
</div>
<div class="logo">
<!-- the Guardian -->
<svg id="theGuardian" version="1.2" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 297 99" height="44.39" width="135">
<path
d="M67.9 52.7c1-.5 2.1-1.1 3.1-1.6.4-.2 1.8-.7 2-1.1.1-.2 0-.8 0-1.1v-2.4-17.1-16.7-2.2c0-.1.1-.8 0-.9-.1-.1-.9 0-1 0h-2.2c-.8 0-.7.1-1.2.7-1.9 2.5-3.8 5-5.7 7.6-.9 1.2-1.8 2.3-2.6 3.5-.6.8-.6.9-1.7.9l.3-6.6c.1-1.6.1-3.2.2-4.8 0-.6.1-1.2.1-1.8 0-.2-.1-.8 0-.9.2-.3 2-.1 2.5-.1h37.4c.2 0 1.1-.1 1.3 0 .2.1.1.7.1 1 .1 1.3.1 2.7.2 4 .1 2.9.2 5.7.4 8.6v.6c-.5 0-.9.1-1.3-.2-.4-.3-.7-.9-1-1.3-1.2-1.6-2.4-3.3-3.7-4.9l-3.6-4.8c-.2-.3-.5-1-.9-1.2-.3-.2-.9-.1-1.3-.1h-1.6c-.2 0-1-.1-1.2 0-.1.1 0 .1-.1.3-.2.8 0 1.8 0 2.6v34.8c0 .7-.2 1.7 0 2.4s1.8 1.2 2.5 1.5c.7.4 1.9.7 2.5 1.3.2.2.4 1.2.2 1.5-.1.1-.6 0-.7 0h-22c-.2 0-.9.1-1 0-.1-.4 0-1.2 0-1.5zm37.1-1.8V36.3 12.4 8.5c0-.6.2-1.5 0-2.1-.2-.7-1.4-.8-2.1-1.1-.4-.1-1.7-.4-1.9-.8v-.8h.3c.4-.2 1.2-.2 1.7-.3.9-.2 1.8-.3 2.6-.5 2-.4 4.1-.8 6.1-1.1 1.2-.2 2.4-.5 3.6-.7.3 0 1.5-.2 1.6 0 .1.1 0 .5 0 .6V22.4c3.8-3.8 10.4-5.9 15.7-4.6 4.6 1.1 6.1 5.4 6.1 9.8.1 5.6 0 11.1 0 16.7v4.5c0 .5-.2 1.7 0 2.2.1.2.5.3.7.5.7.4 1.5.8 2.2 1.2.1.1.4.2.4.3.1.1.1 1 0 1.1-.1.2-.1.1-.4.1-1.1.2-2.3 0-3.3 0H123.9c-.1 0-.6.1-.7 0-.1-.1-.1-1.2 0-1.3.3-.4 1.5-.8 1.9-1.1.3-.2 1.2-.5 1.4-.8.2-.3 0-1.4 0-1.7v-4.1c0-5.8.1-11.7 0-17.5 0-1.7-.3-3.7-2-4.6-.9-.5-2.1-.6-3.1-.6-.8 0-1.6.2-2.3.4-.6.2-1.7.6-2.1 1.1-.3.4-.1 1-.1 1.5V49.1c0 .5-.2 1.5 0 1.9.1.2.5.4.8.5.7.4 1.6.8 2.3 1.2.1.1.3.1.3.2.1.1.1 1 0 1.1-.1.1-.2.1-.4.1-1.1.1-2.3 0-3.4 0H102.1c-.1 0-.6.1-.7 0-.1-.1 0-1.1.1-1.3.3-.4 1.4-.8 1.8-1 .7-.3 1.2-.6 1.7-.9zm47.5-13.8c.2 4.4 1.6 9.3 5.6 11.7 2.1 1.2 4.7 1.6 7.1 1.4 2.9-.3 5.3-1.7 7.8-3 0 .4.1 1.1 0 1.5-.2.4-.7.9-1 1.2-.4.4-.9.9-1.4 1.3-1.7 1.4-3.6 2.4-5.6 3.1-3.8 1.3-8.2 1.2-12.1.2-3.1-.8-5.9-2.3-8-4.7-2.1-2.4-3.3-5.5-3.8-8.7-1.1-6.9.2-14.8 5.9-19.4 5-4 13-4.8 18.9-2.4 7.2 2.9 8.4 11.1 8.4 17.9h-19.1c-.9-.1-1.8-.1-2.7-.1zm-.2-1.7c2-.1 4-.2 6.1-.4 1.2-.1 2.5-.1 3.7-.2.2 0 .7 0 .9-.1.3-.2.1-2.2.1-2.6-.1-3.6-.2-8-2.3-11.1-1.5-2.2-3.8-1.8-5.2.2-2.9 3.9-3.3 9.7-3.3 14.2zM.9 71.9c0-5.6 1.1-11.4 4.2-16.1 3-4.6 7.8-7.6 13-9.1 6.3-1.8 13.3-1.6 19.8-.4 1.4.3 2.8.6 4.1 1 .2.1 1.1.3 1.2.5v.3c.3 1.2.1 2.7.1 3.9.1 3.1.1 6.3.2 9.4-.4 0-1.1.1-1.4 0-.2-.1-.4-.6-.5-.8-.8-1.2-1.6-2.4-2.3-3.7-1.7-2.7-3.5-5.4-5.2-8.1-.9-1.5-3.4-1.5-5-1.5-1.8 0-3.6.3-5.1 1.2-3.4 2.1-5 6.2-5.9 9.9-1.4 5.9-1.3 12.1-1 18.1.3 4.6.7 9.5 2.5 13.7 1.1 2.6 3 4.9 5.9 5.5.9.2 1.8.2 2.8.1.6-.1 2.7-.2 3-.8.1-.2 0-.7 0-.9v-1.7-10.6-4.1c0-.7.2-1-.4-1.4-.7-.4-1.5-.8-2.2-1.3-.5-.3-1.5-.6-1.8-1-.2-.2-.3-1.3-.1-1.5.1-.2.1-.1.4-.1.9-.2 2.1 0 3 0h15.5c1 0 2.1-.1 3.1 0h.4c.1.1.1 1.5 0 1.7-.2.3-1.2.7-1.6.9-.7.4-1.5.8-2.2 1.3-.8.4-.7.4-.7 1.3v16.3c0 .2.1.7 0 .9-.2.5-2.3.8-2.9 1-1.7.5-3.5.9-5.3 1.2-3.5.6-7 .8-10.5.7-5.6-.2-11.5-1.4-16.1-4.8-4-2.9-6.6-7.3-7.8-12.1C1.2 78 .9 74.9.9 71.9zM47 62.8c0-.2-.1-1 0-1.1.1-.1.2 0 .3-.1.6-.3 1.4-.3 2.1-.4 2.3-.4 4.6-.8 7-1.2 1.8-.3 3.6-.7 5.3-.9.5-.1 1.1-.1 1.6.1.5.1.3 0 .4.4.2 1.2 0 2.6 0 3.8v20.9c0 2.5-.7 7.1 1.7 8.6 1.2.8 2.9.8 4.3.5 1.1-.2 3.2-1 3.6-2.2.1-.3 0-.7 0-1v-2.1-13.9-6.4-2.1c0-.2.1-.8 0-1-.3-.3-1.3-.6-1.6-.7-.6-.2-1.1-.5-1.7-.7-.2-.1-.9-.2-1-.4-.1-.1-.1-1 0-1.1.1-.1.1 0 .2-.1.5-.3 1.4-.2 1.9-.3 4.1-.7 8.3-1.6 12.5-2.2.5-.1 1-.1 1.5 0s.3-.1.4.4c.2 1 0 2.4 0 3.5v28.8c0 .3-.1.8 0 1.2.1.3 0 .2.5.4 1 .4 2.1.9 3.1 1.3.3.1.4.1.5.3.1.2.1.9 0 .9-.2.2-1.2.1-1.4.2-2.2.3-4.4.5-6.7.8-2 .2-4 .5-5.9.7-.4.1-.8.1-1.2 0-.2 0-.8 0-.9-.1-.1-.2 0-1 0-1.2v-1.7c0-.3.2-1.1 0-1.4-.2-.3-.6.1-.9.3-.8.7-1.7 1.4-2.6 1.9-3.3 2-7.4 2.9-11.2 2.1-2.8-.6-5.2-2.2-6.4-4.9-.9-1.9-1.1-4-1.1-6V74.8 68v-2.3c0-.2.1-.8 0-1-.2-.3-1.4-.6-1.7-.8-1-.4-1.8-.7-2.6-1.1zm94.3-3.8c.2 0 1.1 0 1.2.2.1.1 0 .8 0 .9v8.8c0 .3-.1.8 0 1.1v.2c.4.4.5-.9.6-1 .9-3.7 2.6-8 6.4-9.5.7-.3 1.4-.4 2.1-.5.6 0 2.3-.2 2.6.3.1.2 0 .7 0 .9V70.6c-2.4-.5-5.1-.4-7.4.1-1.1.2-2.1.5-3.1 1-.5.2-.6.1-.7.5-.1.4 0 1.1 0 1.5V93c0 .2-.1.5 0 .7.2.3.9.5 1.2.6.5.3 1.1.6 1.6.9.2.1.5.2.6.4.1.1.1 1.3 0 1.4-.1.1-.7 0-.9 0h-16.6c-.5 0-1.4.2-1.8 0h-.3c-.1-.1 0-1.2 0-1.3.2-.6 1.5-1 2.1-1.3.4-.2 1.2-.5 1.4-.9.1-.2 0-.8 0-1v-2.1-25.7c0-.1.1-.6 0-.7-.1-.1-.6-.2-.8-.2-.6-.2-1.2-.4-1.8-.5-.6-.2-2.1-.3-1.6-1.3.1-.3.5-.2.9-.3 4.4-.8 8.7-1.6 13.1-2.4.4-.2.8-.2 1.2-.3zm37.7.9v-8-2.3c0-.3.1-.9 0-1.2-.1-.2-.5-.3-.8-.4-.8-.3-1.6-.6-2.5-.9-.6-.2-.9-.1-.9-.8 0-.6-.1-.4.4-.5 1.1-.4 2.4-.4 3.5-.6 3.3-.6 6.5-1.2 9.8-1.8.7-.1 1.4-.3 2.1-.2.8.1.9-.1.9.6.1 1.6 0 3.3 0 4.9v43.8c0 .4-.1.4.2.6.6.4 1.6.6 2.2.8.4.1 1.5.3 1.7.6.1.1.1 1.2 0 1.3-.1.1-.7.1-.8.1-1.4.2-2.7.4-4.1.5-3.1.4-6.2.8-9.4 1.2-.5.1-1.7.3-1.9-.1-.2-.4 0-1.7 0-2.1 0-.3.2-1.6 0-1.8-.2-.2-2.4 1.8-2.7 2-1.2.8-2.5 1.4-3.9 1.8-2.2.6-4.7.6-6.9.1-9.6-2.2-11.6-13.6-10.8-21.9.4-4.4 1.8-8.8 4.8-12 2.8-2.9 6.6-4.4 10.5-4.7 3-.3 5.9-.1 8.6 1zm0 31.9V67.2v-4.6c0-.6-.1-.7-.8-1.1-1.4-.8-3.2-1.1-4.7-.5-2.3.9-3.4 3.6-4 5.8-1.2 4-1.3 8.3-1.2 12.5.1 3.6.2 8 2.2 11.2 1.8 2.8 5.9 3.5 8.5 1.3zM212.1 59c.5.1 1.1-.1 1.3.4.1.3 0 1 0 1.3V92c0 .4-.1 1 0 1.4.1.4.5.5.9.7.6.3 1.1.6 1.7.9.2.1.8.3.9.6 0 .1.1 1.3 0 1.4h-.3c-.6.1-1.4 0-2.1 0h-15.2c-.4 0-1.5.2-1.8 0-.2-.1-.3-1.3-.1-1.5.2-.3.9-.5 1.2-.6.6-.3 1.2-.7 1.8-1 .5-.3.4-.2.4-.6.2-1.5 0-3.2 0-4.7v-7.9-14.4c0-.4.1-1.1 0-1.5-.1-.4-.6-.4-1-.6-.7-.3-1.3-.5-2-.8-.2-.1-1-.2-1.2-.5-.1-.1-.1-1.1 0-1.2.1-.1.3 0 .4-.1.8-.3 1.7-.3 2.6-.5 1.3-.2 2.5-.5 3.8-.7 2.5-.4 4.9-.9 7.4-1.3.5.1.9 0 1.3-.1zm1.4-9.3c-.2 6-8.3 8.6-12 3.9-1.7-2.2-1.8-5.2-.3-7.5s4.4-3.3 7.1-2.7c3 .6 5.2 3.2 5.2 6.3zm43.8 43.9V69.5v-4.6c0-.1.1-.6 0-.7-.1-.2-.7-.3-.9-.3l-1.8-.6c-.3-.1-1.1-.2-1.3-.5-.2-.2-.1-.7-.1-1 0-.6.2-.5.8-.6l6.6-1.2 6.6-1.2c.4-.1.7-.2 1.1-.2.2 0 1.2 0 1.4.1.1.1 0 .7 0 .9v1.9c0 .3-.2 1.2 0 1.5.2.4.6 0 .9-.3.9-.7 1.8-1.3 2.8-1.8 3.6-2 7.9-2.9 12-2.3 2.8.4 5.1 1.9 6.1 4.6.7 1.9.8 3.9.8 5.9v22.8c0 .4-.1 1.1 0 1.5.1.4.4.5.9.7.5.3 1.1.6 1.6.9.2.1.9.3 1 .6.1.2.1 1.2 0 1.3-.1.2.1 0-.2.1-.4.2-1.3 0-1.8 0h-14.3c-.6 0-2.9.3-3.2-.1-.1-.1-.1-1.2 0-1.4.1-.2.7-.4.9-.5.6-.3 1.1-.6 1.7-.9.2-.1.8-.3.9-.5.1-.2 0-.6 0-.8v-2.2-7-13.5c0-1.6.1-3.4-.9-4.8-.8-1.2-2.2-1.5-3.6-1.6-1.1 0-2.1.1-3.1.4-.5.2-2 .6-2.3 1.2-.1.2 0 .6 0 .8V92c0 .3-.1 1 0 1.3.1.4.7.5 1 .7.5.3 1.1.6 1.6.9.2.1.6.3.7.4.1.1.1 1.3 0 1.4 0 .1-.1 0-.2 0-.4.2-1.4 0-1.8 0h-16.8c-.5 0-.6.1-.7-.2-.1-.2-.1-1.1 0-1.3.1-.2.7-.4.9-.5 1-.1 1.8-.6 2.7-1.1zm-21.2-18.4c0-2.6.1-5.3-.1-8-.3-2.9-1.1-6.1-4.4-6.7-1-.2-2.8-.5-3.5.3-.7.7-1.2 1.7-1.8 2.5l-5.1 6.9c-.3.4-.6 1.2-1 1.4-.1.1-1.1.1-1.1 0-.1-.1 0-.8 0-1v-8.1c0-.3-.1-.8 0-1.1.2-.5 2.4-.8 2.9-1 2.8-.7 5.7-1.2 8.6-1.4 4.1-.3 8.7-.2 12.5 1.6 3 1.4 4.9 3.9 5.4 7.1.3 1.6.2 3.4.2 5v20c0 .3-.2 1.1 0 1.3.1.1.6.2.7.2.8.2 1.5.4 2.3.6.5.1.6.1.6.6s.1.5-.5.7c-.7.3-1.4.6-2.1.8-3.7 1.1-9.5 1.4-12.2-2-.2-.3-.8-1.6-1.1-1.7-.4-.1-1.6 1.5-2 1.8-1.6 1.4-3.7 2.2-5.8 2.5-3.9.5-8.1-.3-10.5-3.7-2-2.9-2.4-7.4-.9-10.6 2.7-6.1 10.7-6.7 16.5-7.7.7 0 1.5-.2 2.4-.3zm0 16.6V77c-3 .2-6.1.4-7.2 3.7-.8 2.2-.8 4.8-.5 7.1.2 1.6.6 3.6 2.1 4.6 1.6 1.1 4.3.9 5.6-.6zM109.5 75.2c0-2.6.1-5.3-.1-8-.3-2.9-1.1-6.1-4.4-6.7-1-.2-2.8-.5-3.5.3-.7.7-1.2 1.7-1.8 2.5l-5.1 6.9c-.3.4-.6 1.2-1 1.4-.1.1-1.1.1-1.1 0-.1-.1 0-.8 0-1v-8c0-.3-.1-.8 0-1.1.2-.5 2.3-.8 2.9-1 2.8-.7 5.7-1.2 8.5-1.4 4.1-.3 8.7-.2 12.5 1.6 3 1.4 4.9 3.9 5.4 7.1.3 1.6.2 3.4.2 5v20c0 .3-.2 1.1 0 1.3.1.1.6.2.7.2.8.2 1.5.4 2.3.6.5.1.6.1.6.6s.1.5-.5.7c-.7.3-1.4.6-2.1.8-3.7 1.1-9.5 1.4-12.2-2-.2-.3-.8-1.6-1.1-1.7-.4-.1-1.6 1.5-1.9 1.8-1.6 1.4-3.7 2.2-5.8 2.5-3.9.5-8.1-.3-10.5-3.7-2-2.9-2.4-7.4-.9-10.6 2.7-6.1 10.7-6.7 16.4-7.7.8-.1 1.6-.3 2.5-.4zm0 16.6V77c-3 .2-6.1.4-7.2 3.7-.8 2.2-.8 4.8-.5 7.1.2 1.6.6 3.6 2.1 4.6 1.6 1.1 4.3.9 5.6-.6z"
vector-effect="non-scaling-stroke" fill="#121212"></path>
</svg>
</div>
<div class="logo">
<!-- GQ -->
<svg id="gq" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="440" height="220" viewBox="0 0 440 220">
<image width="440" height="220"
xlink:href="data:img/png;base64,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">
</image>
</svg>
</div>
<div class="logo">
<!-- Travel + Leisure -->
<svg id="travelLeisure" version="1.2" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0.5 0.5 1001 316.802" height="37.695" width="119.667">
<path
d="M850.648 78.698h68.508v67.729h12.52V78.698h68.824v-11.36h-68.823V1.5h-12.521v65.838h-68.508v11.36zM607.359 316.302c-39.32 0-65.756-22.803-65.756-56.733v-91.776h34.744v91.776c0 19.569 16.716 26.5 31.012 26.5 19.386 0 31.426-10.149 31.426-26.5v-91.776h34.76v91.776c0 34.461-25.987 56.733-66.186 56.733M452.534 316.302c-29.52 0-55.174-9.22-78.392-28.176l-1.493-1.194 19.835-23.98 1.443 1.16c13.532 10.813 32.454 23.235 59.038 23.235 13.914 0 30.15-4.743 30.15-18.11 0-11.46-11.858-14.594-33.748-16.385-27.314-1.708-68.625-4.312-68.625-42.969 0-34.212 30.98-46.385 59.968-46.385 28.574 0 53.997 10.365 67.082 19.254l1.708 1.16-20.083 24.495-1.443-1.078c-4.644-3.45-21.808-14.676-48.127-14.676-11.874 0-24.56 4.013-24.56 15.307 0 10.132 15.738 11.393 32.388 12.736l2.654.216c25.157 1.708 67.314 4.527 67.314 45.323 0 31.825-23.732 50.067-65.109 50.067M997.123 312.005H871.417V167.808h120.764v30.432h-86.236v23.532h51.825v30.233h-51.825v29.751h91.178v30.25zM314.163 312.01h34.528V167.811h-34.528V312.01zM284.71 312.005H159.004V167.808h120.764v30.432h-86.236v23.532h51.825v30.233h-51.825v29.751h91.178v30.25zM138.895 312.005H21.779V167.808h34.544v113.948h82.572v30.25zM789.622 230.595h-48.425v-33.002h46.286c5.406 0 10.995.663 15.44 5.473 2.868 2.869 4.378 6.65 4.378 10.912 0 9.47-7.596 16.617-17.679 16.617m24.843 23.798c17.579-8.375 27.595-23.002 27.595-40.415 0-11.277-4.311-22.04-12.139-30.332-10.182-10.663-24.411-15.854-43.516-15.854h-79.736v144.213h34.528V260.38h38.724l28.375 51.625h39.668l-33.5-57.612z"
vector-effect="non-scaling-stroke" fill="#231f20"></path>
<path
d="M879.678 145.73H762.76V1.747h34.461v113.798h82.456v30.183zM739.078 145.73H613.554V1.747h120.598v30.398H648.05v23.5h51.742v30.182h-51.742v29.718h91.029v30.183zM533.117 145.73H504.08l-66.8-143.982h38.989l42.968 100.349 42.986-100.35h37.712L533.117 145.73zM86.874 145.73H52.379V32.145H1.5V1.748h136.038v30.398H86.874v113.583zM365.842 88.058l19.038-44.412 19.022 44.412h-38.06zm34.196-86.32h-28.823L304.398 145.72h36.634l12.67-29.619h62.356l12.886 29.62h37.91L400.038 1.738zM237.43 64.44h-48.358V31.503h46.203c5.39 0 10.978.663 15.423 5.456 2.852 2.885 4.378 6.65 4.378 10.912 0 9.453-7.595 16.567-17.645 16.567m24.793 23.798c17.546-8.375 27.546-22.985 27.546-40.365 0-11.26-4.296-22.023-12.107-30.299-10.166-10.647-24.378-15.82-43.45-15.82h-79.619v143.98h34.478V94.208h38.64l28.36 51.527h39.618l-33.466-57.497z"
vector-effect="non-scaling-stroke" fill="#231f20"></path>
</svg>
</div>
</div>
</section>
<section id="new-in" class="hidden-xs">
<div class="container">
<div class="col-sm-12 col-md-5 new-in-copy">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 34.83000183105469 41.380001068115234" width="19.846153846154" height="24.1875">
<g transform="translate(1, 1)">
<defs>
<style>
.cls-1_1541777017262 {
fill: #fff;
}
</style>
</defs>
<g data-name="Layer 2" id="Layer_2_1541777017262">
<g data-name="Layer 1" id="Layer_1-2_1541777017262">
<path
d="M27.41,16.08A11,11,0,1,1,16.46,5.13a10.94,10.94,0,0,1,11,11M24.09,1.78C15.87-2.24,9,1.53,6,3.48S-.5,11.08.06,17.9,6,29.12,6,29.12L16.14,39.34c.35.16.61-.27.61-.27l.73-.58L25,31.12C30.32,26.48,32.05,23,32.68,19S32.3,5.81,24.09,1.78"
class="cls-1_1541777017262" vector-effect="non-scaling-stroke" style="fill: rgb(241, 110, 34);"></path>
</g>
</g>
</g>
</svg>
<span class="new-text">NEW IN 2022</span>
<h3>Landal Barnsoul<br>
<span>Dumfries & Galloway</span>
</h3>
<p>Nestled in the stunning, picturesque countryside of Dumfries & Galloway in South West Scotland, Landal Barnsoul will be the UK’s newest and most innovative holiday resort. The resort is situated in the very heart of nature amongst
ancient woodland, with views overlooking Scottish hills and valleys. It is set to be a holiday like no other with next generation accommodation, design led facilities and engaging activities. Be the first to discover an unforgettable
holiday in 2022.</p>
<!-- <span class="cta-price">Breaks from only £199*</span> -->
<!-- remove temporarily -->
</div>
<div class="col-sm-12 col-md-7 no-padding">
<div class="owl-carousel owl-loaded" id="new-in-carousel">
<div class="owl-stage-outer">
<div class="owl-stage" style="transform: translate3d(0px, 0px, 0px); transition: all 0s ease 0s; width: 665px;">
<div class="owl-item active" style="width: 665px;">
<div class="item">
<img src="/assets/Barnsoul_interior_min_new.jpg?v=ac04d06b286a59b1c2a534c29180b2d1">
</div>
</div>
</div>
</div>
<div class="owl-nav disabled">
<div class="owl-prev">prev</div>
<div class="owl-next">next</div>
</div>
<div class="owl-dots disabled">
<div class="owl-dot active"><span></span></div>
</div>
</div>
</div>
<div class="col-sm-12 col-md-5 new-in-copy">
<a href="https://barnsoul.landal.co.uk/" class="btn primary-cta text-center" style="width:100%;">Find out more</a>
<!-- <div class="terms-link text-center" style="margin-top: 10px;">
<a href="#" data-toggle="modal" data-target="#lakesideLodgesTCs">*Terms and conditions</a>
</div> -->
</div>
</div>
<div id="lakesideLodgesTCs" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Terms & Conditions</h4>
</div>
<div class="modal-body">
<p>Book an Easter break today<br> Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only.<br>
</p>
<p>UK Lodges and Parks<br> The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and
11/04/22.<br> These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for
accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows:<br> • up to £1000 = £25<br> • £1,001 – £1,500 = £75<br> • £1,501 - £2,000 = £100<br> • +£2,001 – Not
applicable<br> When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you
are purchasing ferry tickets with your booking).<br> The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later
than 10 weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If
payment is not received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any
cancellation charges which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable).<br> If you have made your
booking with the benefit of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration
charge.<br> We can decide to extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</section>
<section id="popular-parks">
<div class="container">
<div class="row">
<div class="col-md-12 col-xs-12 text-center">
<h2 class="swoosh">POPULAR PARKS</h2>
<div class="owl-carousel owl-loaded owl-drag" id="carousel-popular-parks">
<div class="owl-stage-outer">
<div class="owl-stage" style="transform: translate3d(0px, 0px, 0px); transition: all 0s ease 0s; width: 9120px;">
<div class="owl-item active" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-gwel-an-mor-gwel">
<div class="gwel-an-mor">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Gwel an Mor</p>
<p class="location">Cornwall, England</p>
<p class="cost-per-week">
from
<span><sup>£</sup>399</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item active" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-sandybrook-sanb">
<div class="sandybrook">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Sandybrook</p>
<p class="location">Peak District, England</p>
<p class="cost-per-week">
from
<span><sup>£</sup>439</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item active" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-darwin-forest-darw">
<div class="darwin-forest">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Darwin Forest</p>
<p class="location">Peak District, England</p>
<p class="cost-per-week">
from
<span><sup>£</sup>575</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-kenwick-woods-kenw">
<div class="landal-kenwick-woods">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Kenwick Woods</p>
<p class="location">Louth Lincolnshire Wolds</p>
<p class="cost-per-week">
from
<span><sup>£</sup>319</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-kielder-waterside-kiel">
<div class="kielder-waterside">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Kielder Waterside</p>
<p class="location">Northumberland, England</p>
<p class="cost-per-week">
from
<span><sup>£</sup>435</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-piperdam-pipe">
<div class="piperdam">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Piperdam</p>
<p class="location">Southern Highlands, Scotland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>445</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-woodland-lakes-wdls">
<div class="woodland-lakes">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Woodland Lakes</p>
<p class="location">Thirsk, Yorkshire</p>
<p class="cost-per-week">
from
<span><sup>£</sup>379</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/uk/landal-barton-pines-beyo">
<div class="barton-pines">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Barton Pines</p>
<p class="location">Paignton, South Devon</p>
<p class="cost-per-week">
from
<span><sup>£</sup>329</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-rockingham-forest-rofo">
<div class="rockingham-forest">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Rockingham Forest</p>
<p class="location">Wansford, Cambridgeshire</p>
<p class="cost-per-week">
from
<span><sup>£</sup>425</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-brunston-bruc">
<div class="landal-brunston">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Brunston</p>
<p class="location">Ayrshire, Southwest Scotland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>495</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-whitbarrow-lavr">
<div class="landal-whitbarrow">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Whitbarrow Village</p>
<p class="location">Nr Penrith, Cumbria</p>
<p class="cost-per-week">
from
<span><sup>£</sup>799</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-barnsoul-soul">
<div class="landal-barnsoul">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Barnsoul</p>
<p class="location">Shawhead, Dumfries</p>
<p class="cost-per-week">
from
<span><sup>£</sup>485</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-north-lakes-lodges-norl">
<div class="landal-north-lakes">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal North Lakes Lodges</p>
<p class="location">Aspatria, Cumbria</p>
<p class="cost-per-week">
from
<span><sup>£</sup>825</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-burn-coastal-retreat-burp">
<div class="landal-burn-coastal">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Burn Coastal Retreat</p>
<p class="location">Nr Bude, Devon</p>
<p class="cost-per-week">
from
<span><sup>£</sup>849</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-clowance-cloe">
<div class="landal-clowance">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Clowance</p>
<p class="location">Nr. St Ives, South Cornwall</p>
<p class="cost-per-week">
from
<span><sup>£</sup>1049</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="https://www.landal.co.uk/uk/landal-dylan-coastal-resort-bavr">
<div class="landal-dylan">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Dylan Coastal Resort</p>
<p class="location">Laugharne, South Wales</p>
<p class="cost-per-week">
from
<span><sup>£</sup>1015</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-rabbit-hill-rabb">
<div class="landal-rabbit-hill">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Rabbit Hill</p>
<p class="location">Nieuw Milligen, Gelderland, Holland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>151</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/hof-van-saksen-saks">
<div class="hof-van-saksen">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Hof Van Saksen</p>
<p class="location">Nooitgedacht, Drenthe, Holland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>365</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-het-vennenbos-hetv">
<div class="landal-het-vennenbos">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Het Vennenbos</p>
<p class="location">Hapert, Noord-Brabant, Holland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>305</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-landgoed-tloo-tloo">
<div class="landal-landgoed-tloo">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Landgoed t'Loo</p>
<p class="location">Gelderland, Holland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>151</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-mont-royal-mont">
<div class="landal-mont-royal">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Mont Royal</p>
<p class="location">Kröv, Mosel, Germany</p>
<p class="cost-per-week">
from
<span><sup>£</sup>121</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-coldenhove-colh">
<div class="landal-coldenhove">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Coldenhove</p>
<p class="location">Eerbeek, Gelderland, Holland</p>
<p class="cost-per-week">
from
<span><sup>£</sup>136</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-wirfttal-wirf">
<div class="landal-wirfttal">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Wirfttal</p>
<p class="location">Stadtkyll, Eifel, Germany</p>
<p class="cost-per-week">
from
<span><sup>£</sup>319</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="owl-item" style="width: 380px;">
<div class="item ">
<div class="col-md-12 col-xs-10 col-md-offset-0">
<a href="/europe/landal-village-leau-dheure-lanl">
<div class="landal-village-leau-dheure">
<div class="img">
<div class="carousel-overlay"></div>
</div>
<div class="info grey-bg">
<p class="title">Landal Village L'Eau d'Heure</p>
<p class="location">Froidchapelle, Wallonia, Belgium</p>
<p class="cost-per-week">
from
<span><sup>£</sup>136</span>
per week
</p>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="owl-nav">
<div class="owl-prev disabled"><i class="material-icons"></i></div>
<div class="owl-next"><i class="material-icons"></i></div>
</div>
<div class="owl-dots">
<div class="owl-dot active"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="reviews" class="text-center grey-bg">
<div class="container">
<h2 class="swoosh">HIGHLY RATED</h2>
<div class="rated-content">
<!-- 96% reevoo -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 558 295">
<title>Landal-reevoo-asset-96</title>
<path
d="M213.08,232.07c7.68,0,12.46-4.56,12.46-12.46,0-7.57-3.23-12.24-14.47-12.24h-10.9v24.7Zm-27.27-37H211.3c8.57,0,12.46.66,15.91,2.22,7.9,3.56,12.91,11.13,12.91,21.59,0,9.46-5,18.25-13.36,21.59v.22a19.4,19.4,0,0,1,2.68,3.9L245.68,274h-16L214,244.54h-13.8V274H185.81V195Z"
style="fill:#f8972c"></path>
<path
d="M286.12,238.67c-.22-7.64-5-11.74-11.19-11.74-7.2,0-12.18,4.43-13.51,11.74Zm-10.86-22.59c16.29,0,25,11.85,25,26.8,0,1.66-.34,5.43-.34,5.43H261c.89,9.86,8.53,14.95,16.95,14.95,9.09,0,16.28-6.2,16.28-6.2l5.43,10.08a35.3,35.3,0,0,1-22.7,8.08c-18.72,0-30.36-13.51-30.36-29.57,0-17.39,11.86-29.57,28.69-29.57Z"
style="fill:#f8972c"></path>
<path
d="M347.48,238.67c-.22-7.64-5-11.74-11.18-11.74-7.2,0-12.19,4.43-13.52,11.74Zm-10.85-22.59c16.28,0,25,11.85,25,26.8,0,1.66-.33,5.43-.33,5.43h-39c.88,9.86,8.53,14.95,17,14.95,9.08,0,16.28-6.2,16.28-6.2L361,267.14a35.32,35.32,0,0,1-22.71,8.08c-18.72,0-30.35-13.51-30.35-29.57,0-17.39,11.85-29.57,28.69-29.57Z"
style="fill:#f8972c"></path>
<path d="M365.64,217.09h15s13.77,44,13.89,44h.22c.11,0,13.88-44,13.88-44h15L403.16,274.2h-16.8l-20.72-57.11Z" style="fill:#f8972c"></path>
<path d="M456.54,263.26c9.08,0,16.72-7.09,16.72-17.61S465.62,228,456.54,228s-16.84,7.2-16.84,17.61,7.64,17.61,16.84,17.61Zm-.12-47.18c17.28,0,31.13,12.29,31.13,29.57s-13.85,29.57-31,29.57S425.41,263,425.41,245.65s13.85-29.57,31-29.57Z"
style="fill:#f8972c"></path>
<path d="M526.32,263.26c9.08,0,16.72-7.09,16.72-17.61S535.4,228,526.32,228s-16.84,7.2-16.84,17.61,7.65,17.61,16.84,17.61Zm-.11-47.18c17.28,0,31.12,12.29,31.12,29.57s-13.84,29.57-31,29.57S495.19,263,495.19,245.65s13.85-29.57,31-29.57Z"
style="fill:#f8972c"></path>
<path d="M33.71,161.62c18.37,0,32.75,15.69,32.75,32.9,0,3.31-.55,19.47-18.75,30.18-6.91,4.06-12.37,12-1.91,19.89,1.83,1.39,1,3.08-.66,3.08s-6.92-1.18-14.6-4.7C13.78,235.28.53,216,.67,194.9a33.17,33.17,0,0,1,33-33.28Z" style="fill:#5297d1">
</path>
<path d="M104.28,208.33c-18.37,0-32.75,15.69-32.75,32.9,0,3.32.55,19.47,18.75,30.18,6.91,4.06,12.36,12,1.91,19.89-1.83,1.39-1,3.08.66,3.08s6.92-1.18,14.59-4.7c16.76-7.69,30-27,29.88-48.07a33.17,33.17,0,0,0-33-33.28Z" style="fill:#f8972c">
</path>
<path
d="M189.23,164.9,198.08,139a56.51,56.51,0,0,0,23.07,5.36c26.1,0,40.08-21.67,44.27-44.27H265c-5.82,6.76-19.33,11.65-31.22,11.65-32.62,0-52.89-25.63-52.89-55.45C180.84,25.8,202.51.86,235.36.86c34.49,0,63.85,28.66,63.85,78.53,0,43.33-24.94,92.5-76.2,92.5C202,171.89,189.23,164.9,189.23,164.9ZM268,69.13c0-20.73-15.37-40.54-32.62-40.54-15.37,0-24.93,12.12-24.93,27.73,0,16.78,10.49,30.76,30.53,30.76C255.87,87.08,268,79.15,268,69.13Z"
style="fill:#f8972c"></path>
<path
d="M323.9,93.37C323.9,50,348.83.86,400.09.86c21,0,33.79,7,33.79,7L425,33.72a58.87,58.87,0,0,0-23.3-5.13c-26.09,0-39.84,21.67-44,44.27h.46c5.83-6.76,19.11-11.65,31-11.65,32.62,0,53.13,25.4,53.13,55.22,0,30.76-21.67,55.46-54.53,55.46C353.26,171.89,323.9,143.23,323.9,93.37Zm88.54,23.06c0-16.77-10.48-30.52-30.29-30.52-14.91,0-27,7.69-27,17.94,0,20.74,15.15,40.54,32.62,40.54C403.12,144.39,412.44,132,412.44,116.43Z"
style="fill:#f8972c"></path>
<path
d="M457.44,95.07c0-11.68,9.92-21.46,22.14-21.46s22.28,9.78,22.28,21.46c0,12-10.05,21.46-22.28,21.46S457.44,107,457.44,95.07Zm77.43-19.83h15.89l-74,96.44H460.84ZM488.68,95.07a9.07,9.07,0,0,0-9.1-9,9,9,0,1,0,9.1,9Zm43.61,35.45c12.22,0,22.14,9.78,22.14,21.46s-9.92,21.33-22.14,21.33S510.15,163.8,510.15,152,519.93,130.52,532.29,130.52Zm0,30.29a9,9,0,0,0,9.1-9,9.08,9.08,0,0,0-9.1-9,9,9,0,0,0-9,9A8.87,8.87,0,0,0,532.29,160.81Z"
style="fill:#f8972c"></path>
</svg>
<div class="rated-copy">
<span>of guests were delighted with their stay.</span>
<a onclick="openSimpleLightbox('https://mark.reevoo.com/partner/LGP-CB-UK');" target="_self">
Read all reviews
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="25" height="25">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" id="angle-right" d="M15.02,12c0-0.09-0.04-0.18-0.1-0.24l-4.83-4.85C9.96,6.78,9.75,6.77,9.62,6.9c0,0-0.01,0.01-0.01,0.01 L9.09,7.43C8.95,7.56,8.95,7.76,9.07,7.9c0,0,0.01,0.01,0.01,0.01l4.1,4.09l-4.1,4.09c-0.13,0.13-0.14,0.33-0.01,0.47 c0,0,0.01,0.01,0.01,0.01l0.52,0.52c0.13,0.13,0.33,0.14,0.47,0.01c0,0,0.01-0.01,0.01-0.01l4.85-4.85 C14.99,12.17,15.02,12.09,15.02,12L15.02,12z" style="fill: rgb(148, 148, 148);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
</a>
</div>
</div>
</div>
</section>
<section id="inspire">
<div class="container">
<div class="inspire-row">
<div class="col-sm-12 no-padding-mob text-center">
<h2 class="swoosh">INSPIRATION</h2>
<div class="col-sm-6 text-center">
<a href="/cycling-in-the-uk">
<div class="tall inspire-block cycle">
<span class="inspire-text">
<h4>WHERE TO CYCLE IN<br>THE UK</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
<a href="/discover/northumberland">
<div class="inspire-block northumberland">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>NORTHUMBERLAND</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
<a href="/discover/lincolnshire">
<div class="inspire-block lincolnshire">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>LINCOLNSHIRE</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
</div>
<div class="col-sm-6 text-center">
<a href="/discover/peak-district">
<div class="inspire-block peak">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>THE PEAK DISTRICT</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
<a href="/discover/scotland">
<div class="inspire-block scotland">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>SCOTLAND</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
<a href="/discover/cornwall">
<div class="inspire-block cornwall">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>CORNWALL</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
<a href="/discover/yorkshire">
<div class="inspire-block yorkshire">
<span class="inspire-text">
<span>DISCOVER</span>
<h4>YORKSHIRE</h4>
</span>
<div class="carousel-overlay"></div>
</div>
</a>
</div>
<div class="col-sm-12 text-center">
<a href="https://blog.landal.co.uk/" target="_blank" class="tour-link">
Visit the blog
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="24" height="24">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" style="fill: rgb(110, 187, 32);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
</a>
</div>
</div>
</div>
</div>
</section>
<section id="tours">
<div class="container">
<div class="row">
<div class="col-xs-12 no-padding">
<div class="col-sm-5 col-xs-12 no-padding">
<div class="tour-image">
<a href="/virtual-tours">
<div class="tour-overlay"></div>
<img src="/assets/360-icon-white-large.png?v=db1750ae3a73c3d04ba94aeec63fd40a" alt="360° tours">
<div class="carousel-overlay"></div>
</a>
</div>
</div>
<div class="col-sm-6 col-sm-offset-1 col-xs-12 tour-copy">
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 34.83000183105469 41.380001068115234" width="19.846153846154" height="24.1875">
<g transform="translate(1, 1)">
<defs>
<style>
.cls-1_1541777017262 {
fill: #fff;
}
</style>
</defs>
<g data-name="Layer 2" id="Layer_2_1541777017262">
<g data-name="Layer 1" id="Layer_1-2_1541777017262">
<path
d="M27.41,16.08A11,11,0,1,1,16.46,5.13a10.94,10.94,0,0,1,11,11M24.09,1.78C15.87-2.24,9,1.53,6,3.48S-.5,11.08.06,17.9,6,29.12,6,29.12L16.14,39.34c.35.16.61-.27.61-.27l.73-.58L25,31.12C30.32,26.48,32.05,23,32.68,19S32.3,5.81,24.09,1.78"
class="cls-1_1541777017262" vector-effect="non-scaling-stroke" style="fill: rgb(241, 110, 34);"></path>
</g>
</g>
</g>
</svg>
<h2>360° TOURS</h2>
<div>
<p>Take to the sky and explore our stunning UK locations. View the accommodation settings, the on park experiences and discover things to do and see within the local areas. Have a look to see what you can find.</p>
<a href="/virtual-tours" class="tour-link">
View all tours
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="visible" preserveAspectRatio="none" viewBox="0 0 24 24" width="24" height="24">
<g>
<path xmlns:default="http://www.w3.org/2000/svg" d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" style="fill: rgb(110, 187, 32);" vector-effect="non-scaling-stroke"></path>
</g>
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</section>
<div id="landalPodOneTC" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Terms & Conditions</h4>
</div>
<div class="modal-body">
<p>Book an Easter break today<br> Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only.<br>
</p>
<p>UK Lodges and Parks<br> The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and
11/04/22.<br> These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for
accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows:<br> • up to £1000 = £25<br> • £1,001 – £1,500 = £75<br> • £1,501 - £2,000 = £100<br> • +£2,001 – Not
applicable<br> When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are
purchasing ferry tickets with your booking).<br> The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10
weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not
received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges
which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable).<br> If you have made your booking with the benefit
of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge.<br> We can decide to
extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. </p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div id="landalPodTwoTC" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content -->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Terms & Conditions</h4>
</div>
<div class="modal-body">
<p>Book an Easter break today<br> Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only.<br>
</p>
<p>UK Lodges and Parks<br> The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and
11/04/22.<br> These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for
accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows:<br> • up to £1000 = £25<br> • £1,001 – £1,500 = £75<br> • £1,501 - £2,000 = £100<br> • +£2,001 – Not
applicable<br> When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are
purchasing ferry tickets with your booking).<br> The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10
weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not
received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges
which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable).<br> If you have made your booking with the benefit
of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge.<br> We can decide to
extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. </p>
</div>
</div>
</div>
</div>
<!-- /.container -->
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager', 'ctl03', [], [], [], 90, '');
//]]>
</script>
</form>
Text Content
Pay Balance Contact MENU * United Kingdom * Europe OVER 80 LOCATIONS IN 8 COUNTRIES EXPLORE ALL DESTINATIONS * Last minute getaways * February Half Term * Pet-friendly holidays * School summer holidays * Breaks for groups * All Europe * The Netherlands * Germany * Belgium * Austria * Czech Republic * Denmark * Hungary * Switzerland HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks HOLIDAY TYPES * Great for families * Parks with swimming pools * Perfect for pets View all parks * Discover Landal GreenParks DISCOVER LANDAL GREENPARKS ABOUT US * About Landal GreenParks * Our Brand * Our Green Pledge * Join the Family * Explore UK regions * Holiday Types OUR LOCATIONS * Peak District * Northumberland * Cornwall * Scotland * Lincolnshire * Yorkshire OUR HOLIDAYS * Adventure holidays * Activity Holidays * Luxury Holidays * Wildlife holidays * Europe * All Europe * The Netherlands * Germany * Belgium * Austria * Czech Republic * Denmark * Hungary * Switzerland * Explore UK regions * Peak District * Northumberland * Cornwall * Scotland * Lincolnshire * Holiday types * Adventure holidays * Activity Holidays * Luxury Holidays * Wildlife holidays * Blog × TERMS & CONDITIONS Book an Easter break today Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only. UK Lodges and Parks The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and 11/04/22. These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows: • up to £1000 = £25 • £1,001 – £1,500 = £75 • £1,501 - £2,000 = £100 • +£2,001 – Not applicable When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are purchasing ferry tickets with your booking). The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10 weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable). If you have made your booking with the benefit of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge. We can decide to extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. Close UNFORGETTABLE HOLIDAYS ARE IN OUR NATURE SECURE YOUR 2022 GETAWAY WITH A £25 LOW DEPOSIT Landal magnifying glass icon clear UK * Adults (18+ years) 2 1 2 3 4 5 6 7 8 9 10 11 12 * Children (2 - 17 years) 0 0 1 2 3 4 5 6 7 8 9 10 * Babies (Under 2 years) 0 0 1 2 3 4 5 * Pets 0 0 1 2 3 Only properties that allow pets will be shown Done Search Prev April 2022 MonTueWedThuFriSatSun 123456789101112131415161718192021222324252627282930 Next May 2022 MonTueWedThuFriSatSun 12345678910111213141516171819202122232425262728293031 Duration: 1 night 2 nights 3 nights 4 nights 5 nights 7 nights 14 nights 21 nights Flexibility: +/- 3 days +/- 7 days Exact Done * * * UK * All Europe * Holland * Germany * Belgium * Austria * Czech Republic * Denmark * Hungary * Switzerland Done ABTA Protected 2.8 million satisfied customers every year Trusted for over 60 years BOOK WITH CONFIDENCE More information on secluded locations, refunds and payment options for your peace of mind Find out more SAFER STAYS Extra cleaning considerations for your reassurance More about Safer Stays Book an Easter break today and receive up to 25% off your trip* *Terms and conditions Secure your Summer Getaway from just £25* *Terms and conditions FEATURED IN NEW IN 2022 LANDAL BARNSOUL DUMFRIES & GALLOWAY Nestled in the stunning, picturesque countryside of Dumfries & Galloway in South West Scotland, Landal Barnsoul will be the UK’s newest and most innovative holiday resort. The resort is situated in the very heart of nature amongst ancient woodland, with views overlooking Scottish hills and valleys. It is set to be a holiday like no other with next generation accommodation, design led facilities and engaging activities. Be the first to discover an unforgettable holiday in 2022. prev next Find out more × TERMS & CONDITIONS Book an Easter break today Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only. UK Lodges and Parks The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and 11/04/22. These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows: • up to £1000 = £25 • £1,001 – £1,500 = £75 • £1,501 - £2,000 = £100 • +£2,001 – Not applicable When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are purchasing ferry tickets with your booking). The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10 weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable). If you have made your booking with the benefit of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge. We can decide to extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. Close POPULAR PARKS Landal Gwel an Mor Cornwall, England from £399 per week Landal Sandybrook Peak District, England from £439 per week Landal Darwin Forest Peak District, England from £575 per week Landal Kenwick Woods Louth Lincolnshire Wolds from £319 per week Landal Kielder Waterside Northumberland, England from £435 per week Landal Piperdam Southern Highlands, Scotland from £445 per week Landal Woodland Lakes Thirsk, Yorkshire from £379 per week Landal Barton Pines Paignton, South Devon from £329 per week Landal Rockingham Forest Wansford, Cambridgeshire from £425 per week Landal Brunston Ayrshire, Southwest Scotland from £495 per week Landal Whitbarrow Village Nr Penrith, Cumbria from £799 per week Landal Barnsoul Shawhead, Dumfries from £485 per week Landal North Lakes Lodges Aspatria, Cumbria from £825 per week Landal Burn Coastal Retreat Nr Bude, Devon from £849 per week Landal Clowance Nr. St Ives, South Cornwall from £1049 per week Landal Dylan Coastal Resort Laugharne, South Wales from £1015 per week Landal Rabbit Hill Nieuw Milligen, Gelderland, Holland from £151 per week Hof Van Saksen Nooitgedacht, Drenthe, Holland from £365 per week Landal Het Vennenbos Hapert, Noord-Brabant, Holland from £305 per week Landal Landgoed t'Loo Gelderland, Holland from £151 per week Landal Mont Royal Kröv, Mosel, Germany from £121 per week Landal Coldenhove Eerbeek, Gelderland, Holland from £136 per week Landal Wirfttal Stadtkyll, Eifel, Germany from £319 per week Landal Village L'Eau d'Heure Froidchapelle, Wallonia, Belgium from £136 per week HIGHLY RATED Landal-reevoo-asset-96 of guests were delighted with their stay. Read all reviews INSPIRATION WHERE TO CYCLE IN THE UK DISCOVER NORTHUMBERLAND DISCOVER LINCOLNSHIRE DISCOVER THE PEAK DISTRICT DISCOVER SCOTLAND DISCOVER CORNWALL DISCOVER YORKSHIRE Visit the blog 360° TOURS Take to the sky and explore our stunning UK locations. View the accommodation settings, the on park experiences and discover things to do and see within the local areas. Have a look to see what you can find. View all tours × TERMS & CONDITIONS Book an Easter break today Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only. UK Lodges and Parks The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and 11/04/22. These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows: • up to £1000 = £25 • £1,001 – £1,500 = £75 • £1,501 - £2,000 = £100 • +£2,001 – Not applicable When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are purchasing ferry tickets with your booking). The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10 weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable). If you have made your booking with the benefit of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge. We can decide to extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. Close × TERMS & CONDITIONS Book an Easter break today Prices based on 3 and 4 night breaks between 01/04/2022 and 18/04/2022. Offer applies to selected Lodge and Park locations and accommodation types. Subject to availability. Accommodation only. UK Lodges and Parks The following terms and conditions apply to new Landal Greenpark Resort bookings, with arrival dates which are more than 10 weeks after you make your booking, and which are booked between 15/02/2021 and 11/04/22. These terms and conditions should be read with the Booking Conditions. Especially note clauses 6 (Payment), 7 (Deposit) and 10 (Full customer cancellations – basic) of the Booking Conditions. Offer only available for accommodation that participates in the low deposit scheme The low deposit under this offer for booking costs are as follows: • up to £1000 = £25 • £1,001 – £1,500 = £75 • £1,501 - £2,000 = £100 • +£2,001 – Not applicable When you make your booking, in addition to the low deposit payable, you will also have to pay the Enhanced Cancellation Terms fee (if you choose to benefit from the Enhanced Cancellation Terms) and/or ferry fees (if you are purchasing ferry tickets with your booking). The difference between the low deposit and the standard deposit shown on website and/or in the Booking Conditions is payable with the balance payment, which we must receive no later than 10 weeks before your booking starts, or at the time of cancellation if you cancel your booking before the balance due date. This balance payment will include all applicable charges as detailed on your booking confirmation. If payment is not received in full on time, we can treat your booking as cancelled by you for a non-refundable reason. If this happens, you will be responsible for the difference between the low deposit and the usual deposit and any cancellation charges which may apply (as set out in the Booking Conditions) For the avoidance of doubt, you will forfeit the Enhanced Cancellation Terms fee (if applicable) and/or ferry fees (if applicable). If you have made your booking with the benefit of the Enhanced Cancellation Terms, and provided you cancel for a qualifying reason before the balance due date, all you will need to pay is the difference between the low deposit and the £60 administration charge. We can decide to extend or withdraw this offer depending on popularity and park availability. This offer may be used in conjunction with any other accommodation offer or discount that is available at the time of booking. COOKIE NOTICE TapClick "Accept and Continue" or continue using our website to agree to the use of cookies and data processing technologies. Cookies are used by us and our trusted partners to provide necessary website functionality, analyse, personalise and enhance your experience on this website as well as to deliver tailored holiday-related ads on other websites. Accept and Continue SIGN UP TO OUR NEWSLETTER CUSTOMERS * Frequently asked questions * Pay balance * Terms and conditions * Contact us * ABTA COMPANY * About Landal * Press * Join the family * Our Green Pledge * Security and privacy notice * Cookie policy * Modern Slavery Statement CONNECT WITH US * Facebook * Instagram * Youtube YO662/L4801 Landal GreenParks is a trading name of Landal GreenParks (UK) Ltd. Registered in England and Wales. Company Registration Number: 12995935. VAT Registration Number GB 374 5782 58. Calls may be recorded for training purposes.