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 this offer: 20% off Economy, Flexi or Premium motorist fares valid on the 09.30 sailing from Belfast to Holyhead on 26 & 27 June 2021 only. User offer code: ABCD. Travel must be booked by 11pm Friday 25 June 2021. Excludes vans, freight, motorcyclists and foot passengers. Valid for friends and family of Stena Line employees only. This offer is not available in conjunction with any other offers or promotions including Tesco Clubcard tokens. Any discounts or points given are based on the fare before applying any fees and dues. £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.