Friends and family (function($) { try { var $container = $('#main_2_maincol1_0_bodycontentspots_0_spotrow1_0_scriptspot'); var container = document.getElementById('main_2_maincol1_0_bodycontentspots_0_spotrow1_0_scriptspot'); /*! iFrame Resizer (iframeSizer.min.js ) - v3.6.5 - 2019-02-03 * Desc: Force cross domain iframes to size to content. * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. * Copyright: (c) 2019 David J. Bradshaw - dave@bradshaw.net * License: MIT */ !function(a){"use strict";function b(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function c(a,b,c){"addEventListener"in window?a.addEventListener(b,c,!1):"attachEvent"in window&&a.attachEvent("on"+b,c)}function d(a,b,c){"removeEventListener"in window?a.removeEventListener(b,c,!1):"detachEvent"in window&&a.detachEvent("on"+b,c)}function e(){var a,b=["moz","webkit","o","ms"];for(a=0;ab&&(e=b,i(V,"Set "+d+" to max value")),T[d]=""+e}function g(){function b(){function a(){var a=0,b=!1;for(i(V,"Checking connection is from allowed list of origins: "+d);aS[z]["max"+a])throw new Error("Value for min"+a+" can not be greater than max"+a)}b("Height"),b("Width"),a("maxHeight"),a("minHeight"),a("maxWidth"),a("minWidth")}function g(){var a=e&&e.id||V.id+I++;return null!==document.getElementById(a)&&(a+=I++),a}function h(a){return U=a,""===a&&(d.id=a=g(),J=(e||{}).log,U=a,i(a,"Added missing iframe ID: "+a+" ("+d.src+")")),a}function j(){switch(i(z,"IFrame scrolling "+(S[z]&&S[z].scrolling?"enabled":"disabled")+" for "+z),d.style.overflow=!1===(S[z]&&S[z].scrolling)?"hidden":"auto",S[z]&&S[z].scrolling){case"omit":break;case!0:d.scrolling="yes";break;case!1:d.scrolling="no";break;default:d.scrolling=S[z]?S[z].scrolling:"no"}}function l(){"number"!=typeof(S[z]&&S[z].bodyMargin)&&"0"!==(S[z]&&S[z].bodyMargin)||(S[z].bodyMarginV1=S[z].bodyMargin,S[z].bodyMargin=S[z].bodyMargin+"px")}function m(){var a=S[z]&&S[z].firstRun,b=S[z]&&S[z].heightCalculationMethod in R;!a&&b&&t({iframe:d,height:0,width:0,type:"init"})}function n(){Function.prototype.bind&&S[z]&&(S[z].iframe.iFrameResizer={close:p.bind(null,S[z].iframe),removeListeners:o.bind(null,S[z].iframe),resize:w.bind(null,"Window resize","resize",S[z].iframe),moveToAnchor:function(a){w("Move to anchor","moveToAnchor:"+a,S[z].iframe,z)},sendMessage:function(a){a=JSON.stringify(a),w("Send Message","message:"+a,S[z].iframe,z)}})}function q(e){function f(){w("iFrame.onload",e,d,a,!0),m()}function g(a){if(d.parentNode){new a(function(a){a.forEach(function(a){Array.prototype.slice.call(a.removedNodes).forEach(function(a){a===d&&p(d)})})}).observe(d.parentNode,{childList:!0})}}var h=b();h&&g(h),c(d,"load",f),w("init",e,d,a,!0)}function r(a){if("object"!=typeof a)throw new TypeError("Options is not an object")}function s(a){for(var b in V)V.hasOwnProperty(b)&&(S[z][b]=a.hasOwnProperty(b)?a[b]:V[b])}function u(a){return""===a||"file://"===a?"*":a}function v(a){a=a||{},S[z]={firstRun:!0,iframe:d,remoteHost:d.src.split("/").slice(0,3).join("/")},r(a),s(a),S[z]&&(S[z].targetOrigin=!0===S[z].checkOrigin?u(S[z].remoteHost):"*")}function y(){return z in S&&"iFrameResizer"in d}var z=h(d.id);y()?k(z,"Ignored iFrame, already setup."):(v(e),j(),f(),l(),q(x(z)),n())}function z(a,b){null===T&&(T=setTimeout(function(){T=null,a()},b))}function A(a,b,c){W[c]||(W[c]=setTimeout(function(){W[c]=null,a()},b))}function B(){function a(){function a(a){function b(b){return"0px"===(S[a]&&S[a].iframe.style[b])}function c(a){return null!==a.offsetParent}S[a]&&c(S[a].iframe)&&(b("height")||b("width"))&&w("Visibility change","resize",S[a].iframe,a)}for(var b in S)a(b)}function c(b){i("window","Mutation observed: "+b[0].target+" "+b[0].type),z(a,16)}function d(){var a=document.querySelector("body"),b={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0};new e(c).observe(a,b)}var e=b();e&&d()}function C(a){function b(){E("Window "+a,"resize")}i("window","Trigger event: "+a),z(b,16)}function D(){function a(){E("Tab Visable","resize")}"hidden"!==document.visibilityState&&(i("document","Trigger event: Visiblity change"),z(a,16))}function E(a,b){function c(a){return S[a]&&"parent"===S[a].resizeFrom&&S[a].autoResize&&!S[a].firstRun}for(var d in S)c(d)&&w(a,b,document.getElementById(d),d)}function F(){c(window,"message",m),c(window,"resize",function(){C("resize")}),c(document,"visibilitychange",D),c(document,"-webkit-visibilitychange",D),c(window,"focusin",function(){C("focus")}),c(window,"focus",function(){C("focus")})}function G(){function b(a,b){function c(){if(!b.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==b.tagName.toUpperCase())throw new TypeError("Expected tag, found <"+b.tagName+">")}b&&(c(),y(b,a),d.push(b))}function c(a){a&&a.enablePublicMethods&&k("enablePublicMethods option has been removed, public methods are now always available in the iFrame")}var d;return e(),F(),function(e,f){switch(d=[],c(e),typeof f){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(f||"iframe"),b.bind(a,e));break;case"object":b(e,f);break;default:throw new TypeError("Unexpected data type ("+typeof f+")")}return d}}function H(a){a.fn?a.fn.iFrameResize||(a.fn.iFrameResize=function(a){function b(b,c){y(c,a)}return this.filter("iframe").each(b).end()}):j("","Unable to bind to jQuery, it is not fully loaded.")}if("undefined"!=typeof window){var I=0,J=!1,K=!1,L="message",M=L.length,N="[iFrameSizer]",O=N.length,P=null,Q=window.requestAnimationFrame,R={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},S={},T=null,U="Host Page",V={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,widthCalculationMethod:"scroll",closedCallback:function(){},initCallback:function(){},messageCallback:function(){k("MessageCallback function not defined")},resizedCallback:function(){},scrollCallback:function(){return!0}},W={};window.jQuery&&H(window.jQuery),"function"==typeof define&&define.amd?define([],G):"object"==typeof module&&"object"==typeof module.exports&&(module.exports=G()),window.iFrameResize=window.iFrameResize||G()}}(); //# sourceMappingURL=iframeResizer.map iFrameResize({log:true}, '#ext-iframe'); } catch (e) { console.warn(e); } })(jQuery); Terms and Conditions Terms and Conditions The Stena Line Terms of Business together with these special conditions apply to this offer: Free upgrade to a 4 berth inside or outside cabin, or 2 berth wheelchair user cabin on the 09.30 sailing from Belfast to Holyhead on 26 & 27 June 2021 only. Valid for new bookings only on Economy, Flexi or Premium motorist fares. Use offer code: ABCD. Travel must be booked by 11pm Friday 25 June 2021. Excludes vans, freight, motorcyclists and foot passengers. This offer is not available in conjunction with any other offers or promotions including Tesco Clubcard tokens. £10 service fee applies to non-web bookings. Subject to availability. Stena Line reserves the right to withdraw or change this offer at any time.