1!function(){"use strict";function e(e,t={}){const{draggingClass:s="",onEdgeUpdate:n}=t;let i=!1,r=0,o=0,a=!1;const c=t=>{i=!0,a=!1,s&&e.classList.add(s),r=t.type.includes("mouse")?t.pageX:t.touches[0].pageX,o=e.scrollLeft},l=t=>{if(!i)return;const s=(t.type.includes("mouse")?t.pageX:t.touches[0].pageX)-r;Math.abs(s)>5&&(a=!0),e.scrollLeft=o-s},d=()=>{i&&(i=!1,s&&e.classList.remove(s),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d))};e.addEventListener("mousedown",e=>{0===e.button&&(c(e),document.addEventListener("mousemove",l),document.addEventListener("mouseup",d))}),e.addEventListener("touchstart",c,{passive:!0}),e.addEventListener("touchmove",l,{passive:!0}),e.addEventListener("touchend",d),e.addEventListener("touchcancel",d),e.addEventListener("click",e=>{a&&e.target.closest("a")&&e.preventDefault()},!0),e.addEventListener("dragstart",e=>e.preventDefault()),"function"==typeof n&&n()}function t(e,t,s={}){const{classAtEnd:n="",classScrolled:i="",prevBtn:r=null,nextBtn:o=null}=s,a=()=>{const s=t.scrollLeft+t.clientWidth>=t.scrollWidth-2,a=t.scrollLeft>2;n&&e.classList.toggle(n,s),i&&e.classList.toggle(i,a),r&&(r.style.visibility=a?"":"hidden"),o&&(o.style.visibility=s?"hidden":"")};t.addEventListener("scroll",a,{passive:!0}),a()}class s{constructor(e){this.container=e,this.slides=[...e.children],this.total=this.slides.length,this.current=0,this.isDragging=!1,this.startX=0,this.currentTranslate=0,this.dragDelta=0,this.#e(),this.#t(),this.#s()}#e(){for(this.track=document.createElement("div"),this.track.style.display="flex",this.track.style.transition="transform 0.3s ease",this.track.style.willChange="transform";this.container.firstChild;)this.track.appendChild(this.container.firstChild);this.container.appendChild(this.track),this.container.style.overflow="hidden",this.slides.forEach(e=>{e.style.minWidth="100%",e.style.flexShrink="0"}),this.#n(0,!1)}#t(){const e=document.createElement("button"),t=document.createElement("button");e.classList.add("slider__button","slider__button--prev"),t.classList.add("slider__button","slider__button--next"),e.innerHTML='<i class="fas fa-angle-left"></i>',t.innerHTML='<i class="fas fa-angle-right"></i>',e.addEventListener("click",()=>this.prev()),t.addEventListener("click",()=>this.next()),this.container.parentNode.appendChild(e),this.container.parentNode.appendChild(t)}#s(){const e=e=>{this.isDragging=!0,this.startX=e.type.includes("mouse")?e.pageX:e.touches[0].pageX,this.dragDelta=0,this.track.style.transition="none"},t=e=>{if(!this.isDragging)return;const t=e.type.includes("mouse")?e.pageX:e.touches[0].pageX;this.dragDelta=t-this.startX,this.track.style.transform=`translateX(${this.currentTranslate+this.dragDelta}px)`},s=()=>{if(!this.isDragging)return;this.isDragging=!1,this.track.style.transition="transform 0.3s ease";const e=.2*this.container.offsetWidth;this.dragDelta<-e?this.next():this.dragDelta>e?this.prev():this.#n(this.current)};this.container.addEventListener("mousedown",e),this.container.addEventListener("mousemove",t),this.container.addEventListener("mouseup",s),this.container.addEventListener("mouseleave",s),this.container.addEventListener("touchstart",e,{passive:!0}),this.container.addEventListener("touchmove",t,{passive:!0}),this.container.addEventListener("touchend",s),this.container.addEventListener("dragstart",e=>e.preventDefault())}#n(e,t=!0){this.current=(e%this.total+this.total)%this.total,this.currentTranslate=-this.current*this.container.offsetWidth,t||(this.track.style.transition="none"),this.track.style.transform=`translateX(${this.currentTranslate}px)`,t||(this.track.offsetHeight,this.track.style.transition="transform 0.3s ease")}prev(){this.#n(this.current-1)}next(){this.#n(this.current+1)}}const n={init(){this.searchBox.init(),this.slider.init(),this.homeRedirector.init(),this.heroChips.init(),this.heroLandings.init(),this.share.init(),this.modal.init(),this.date.init(),this.menuOverlay.init(),this.notify.init(),this.newsletterBox.init(),this.pagination.init()},homeRedirector:{init(){document.querySelectorAll(".js-carousel-scroll").forEach(t=>{const s=t.closest(".best-deals-carousel-wrap")||t.parentElement,n=s?.querySelector(".js-carousel-prev"),i=s?.querySelector(".js-carousel-next"),r=()=>{const e=t.scrollLeft<=2,s=t.scrollLeft+t.clientWidth>=t.scrollWidth-2;t.classList.toggle("can-scroll-left",!e),t.classList.toggle("can-scroll-right",!s),n&&(n.style.visibility=e?"hidden":""),i&&(i.style.visibility=s?"hidden":"")};n&&n.addEventListener("click",()=>t.scrollBy({left:-300,behavior:"smooth"})),i&&i.addEventListener("click",()=>t.scrollBy({left:300,behavior:"smooth"})),t.addEventListener("scroll",r,{passive:!0}),r(),e(t,{draggingClass:"is-dragging"})})}},heroChips:{init(){document.querySelectorAll(".js-hero-chips").forEach(s=>
1{const n=s.querySelector(".js-hero-chips-rail"),i=s.querySelector(".js-hero-chips-prev"),r=s.querySelector(".js-hero-chips-next");if(!n)return;const o=e=>{n.scrollLeft+=e};t(s,n,{classAtEnd:"heroChips--at-end",classScrolled:"heroChips--scrolled",prevBtn:i,nextBtn:r}),i&&i.addEventListener("click",()=>o(-200)),r&&r.addEventListener("click",()=>o(200)),s.addEventListener("wheel",e=>{Math.abs(e.deltaX)>Math.abs(e.deltaY)||(e.preventDefault(),o(e.deltaY))},{passive:!1}),e(n)})}},heroLandings:{init(){document.querySelectorAll(".js-hero-landings").forEach(s=>{const n=s.querySelector(".js-hero-landings-rail");n&&(t(s,n,{classAtEnd:"heroLandings--at-end",classScrolled:"heroLandings--scrolled"}),e(n))})}},menuOverlay:{init(){const e=document.querySelector(".js-menu-overlay");e&&(document.querySelectorAll(".js-menu-toggle").forEach(e=>{e.addEventListener("click",()=>this.open())}),document.querySelectorAll(".js-menu-close").forEach(e=>{e.addEventListener("click",()=>this.close())}),document.addEventListener("keydown",t=>{"Escape"!==t.key||e.hidden||this.close()}))},open(){const e=document.querySelector(".js-menu-overlay");e&&(e.hidden=!1,document.body.classList.add("menu-active"),document.body.style.overflow="hidden")},close(){const e=document.querySelector(".js-menu-overlay");e&&(e.hidden=!0,document.body.classList.remove("menu-active"),document.body.style.overflow="")}},newsletterBox:{init(){document.querySelectorAll(".newsletterBox__form").forEach(e=>{const t=e.querySelector(".newsletterBox__input"),s=e.querySelector(".newsletterBox__submit");if(!t||!s)return;e.classList.add("js-smart");const n=()=>{t.value.includes("@")?s.classList.add("is-visible"):s.classList.remove("is-visible")};n(),t.addEventListener("input",n),t.addEventListener("paste",()=>setTimeout(n,0))})}},notify:{init(){document.querySelectorAll(".js-notify-toggle").forEach(e=>{e.addEventListener("click",()=>{window.open("https://account.fly4free.com/","_blank")})})}},searchBox:{init(){this.events()},events(){document.querySelectorAll(".searchBox__services a, .js-searchBox-tab").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault();const s=e.parentElement;if(!s.classList.contains("active")){document.querySelectorAll(".searchBox__services li.active, .searchBox__window.active").forEach(e=>e.classList.remove("active"));const t=e.dataset.searchboxOpen,n=document.querySelector(`.searchBox__window[data-searchbox="${t}"]`);n&&n.classList.add("active"),s.classList.add("active")}})}),document.querySelectorAll(".searchBox__content:not(.active), .searchBox__services a, .js-searchBox-open").forEach(e=>{e.addEventListener("click",()=>{if(!document.body.classList.contains("searchBox-active")){const e=document.querySelector(".searchBox__window.active"),t=e?.querySelector('input[type="text"]');t&&t.focus()}document.querySelector(".searchBox__content")?.classList.add("active"),document.body.classList.add("searchBox-active")})}),document.body.addEventListener("click",e=>{const t=document.querySelector(".searchBox__content");document.body.classList.contains("searchBox-active")&&t?.classList.contains("active")&&!e.target.closest(".searchBox")&&(document.body.classList.remove("searchBox-active"),t.classList.remove("active"))}),window.addEventListener("blur",()=>{setTimeout(()=>{const e=document.activeElement;if(!e)return;const t=e.classList?.toString()??"",s=e.title??"",n=e.src??"";(t.includes("kayak")||s.includes("Skyscanner")||n.includes("cruises.php"))&&(document.querySelector(".searchBox__content")?.classList.add("active"),document.body.classList.add("searchBox-active"))},250)})}},slider:{init(){document.querySelector("body.single")&&document.querySelector(".slider")&&this.article()},article(){document.querySelectorAll(".slider").forEach(e=>{new s(e)})}},share:{init(){this.click()},click(){document.querySelectorAll(".js-share-click").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault();const s=e.closest("a");if(!s)return;const n=s.href,i=e.dataset.share;window.open(i+n,"share","width=500,height=300")})})}},modal:{init(){this.close(),this.submit()}
1,close(){document.querySelectorAll(".modal__close").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault();const s=e.closest(".modal");s&&(s.hidden=!0)})})},checkEmail:e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),submit(){const e=this;document.querySelectorAll(".button-submit-newsletter").forEach(t=>{t.addEventListener("click",t=>{let s=0;const n=document.querySelector(".form-newsletter .input-email"),i=n?.value??"",r=n?.nextElementSibling?.classList.contains("form__error")?n.nextElementSibling:null,o=document.getElementById("newsletter-confirm"),a=o?.parentElement?.parentElement?.querySelector(".form__error")??null;o?.checked?(s++,a&&(a.textContent="")):(s=0,a&&(a.textContent="You must accept terms of use.")),""===i?(s=0,r&&(r.textContent="Please fill that field.")):e.checkEmail(i)?(s++,r&&(r.textContent="")):(s=0,r&&(r.textContent="Invalid email.")),t.preventDefault(),2===s&&e.send()})})},async send(){const e=document.querySelector(".input-email"),t=e?.value??"";let s="immediately";document.querySelector("input#choice2")?.checked&&(s="hitsonly"),document.querySelector("input#choice3")?.checked&&(s="daily");const n=document.querySelector("textarea#newsletter-tags")?.value??"",i=new URLSearchParams({e:t,mode:s,tags:n});try{await fetch("/subscribe/",{method:"POST",body:i})}catch{}const r=document.querySelector(".form-newsletter")?.closest("form");r&&r.remove();const o=document.querySelector(".modal__box__content h2");o&&o.insertAdjacentHTML("afterend",'<div class="form__ok">Thanks for subscribing our newsletter.<br/>Check your inbox for activation link.<br/>Just in case check Spam and click <i>This is not spam</i></div>')}},date:{init(){this.handle()},handle(){document.querySelectorAll(".js-date-relative").forEach(e=>{e.textContent=this.format(e.title)})},format(e){const t=(e instanceof Date?e:new Date(e)).getTime(),s=Math.round((t-Date.now())/1e3),n=[60,3600,86400,604800,2592e3,31536e3,1/0],i=n.findIndex(e=>e>Math.abs(s)),r=i?n[i-1]:1;return new Intl.RelativeTimeFormat("en",{numeric:"auto"}).format(Math.floor(s/r),["second","minute","hour","day","week","month","year"][i])}},pagination:{init(){const e=document.querySelector(".js-pagination-next"),t=e?.querySelector("a");t&&t.addEventListener("click",t=>{t.preventDefault(),this.loadPage(e,"next")})},getPageFromUrl(e){try{const t=new URL(e,window.location.origin),s=t.pathname.match(/\/page\/(\d+)\/?$/);if(s)return parseInt(s[1],10);const n=t.searchParams.get("paged");if(n)return parseInt(n,10)}catch{}return 2},buildPrevUrl:(e,t)=>e.match(/\/page\/\d+\/?/)?e.replace(/\/page\/(\d+)\/?/,`/page/${t}/`):e.replace(/([?&])paged=\d+/,`$1paged=${t}`),async loadPage(e,t){const s="next"===t,n=s?e.dataset.nextUrl:e.dataset.prevUrl,i=s?this.getPageFromUrl(n):parseInt(e.dataset.prevPaged,10);if(!n||!window.f4fAjaxUrl||i<1)return;const r=new URLSearchParams({action:"f4f_load_more",paged:String(i),context:e.dataset.context||"home",category_slug:e.dataset.categorySlug||"",tag_slug:e.dataset.tagSlug||""});e.classList.add("is-loading");const o=e.querySelector("a");o&&(o.style.pointerEvents="none");try{const t=`${window.f4fAjaxUrl}?${r.toString()}`,a=await fetch(t,{method:"GET",credentials:"same-origin"}),c=await a.json();if(!a.ok||!c.html)throw new Error("Invalid response");const l=document.querySelector(".js-pagination-listing");if(l){const e=document.createElement("div");for(e.innerHTML=c.html;e.firstChild;)s?l.appendChild(e.firstChild):l.insertBefore(e.firstChild,l.firstChild);window.adsbygoogle&&(window.adsbygoogle=window.adsbygoogle||[]).push({})}if(history.pushState(null,"",n),"function"==typeof plausible&&plausible("pageview",{u:n}),"function"==typeof gtag&>ag("event","page_view",{page_path:new URL(n).pathname}),"function"==typeof ga&&ga("send","pageview",new URL(n).pathname),s)c.hasNext&&c.nextUrl?(e.dataset.nextUrl=c.nextUrl,o&&(o.href=c.nextUrl)):e.style.display="none";else{const t=i-1;if(t>=1){const s=this.buildPrevUrl(n,t);e.dataset.prevUrl=s,e.dataset.prevPaged=String(t),o&&(o.href=s)}else e.style.display="none"}}catch{window.location.href=n}finally{e.classList.remove("is-loading"),o&&(o.style.pointerEvents="")}}}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>n.init()):n.init(),window.addEventListener("touchstart",function e(){document.body.classList.add("device-touch"),window.removeEventListener("touchstart",e)},{once:!0})}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.