{“version”:3,“sources”:,“names”:,“mappings”:“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”,“file”:“iframeResizer.contentWindow.min.js”,“sourcesContent”:[“/*n * File: iframeResizer.contentWindow.jsn * Desc: Include this file in any page being loaded into an iframen * to force the iframe to resize to the content size.n * Requires: iframeResizer.js on host page.n * Doc: github.com/davidjbradshaw/iframe-resizern * Author: David J. Bradshaw - dave@bradshaw.netn * Contributor: Jure Mav - jure.mav@gmail.comn * Contributor: Ian Caunce - ian@hallnet.co.ukn */nnn;(function(window, undefined) {nt'use strict';nntvarnttautoResize = true,nttbase = 10,nttbodyBackground = '',nttbodyMargin = 0,nttbodyMarginStr = '',nttbodyObserver = null,nttbodyPadding = '',nttcalculateWidth = false,nttdoubleEventList = {'resize':1,'click':1},ntteventCancelTimer = 128,nttfirstRun = true,nttheight = 1,nttheightCalcModeDefault = 'bodyOffset',nttheightCalcMode = heightCalcModeDefault,nttinitLock = true,nttinitMsg = '',nttinPageLinks = {},nttinterval = 32,nttintervalTimer = null,nttlogging = false,nttmsgID = '[iFrameSizer]', //Must match host page msg IDnttmsgIdLen = msgID.length,nttmyID = '',nttobserver = null,nttresetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},nttresizeFrom = 'child',nttsendPermit = true,ntttarget = window.parent,ntttargetOriginDefault = '*',ntttolerance = 0,ntttriggerLocked = false,ntttriggerLockedTimer = null,nttthrottledTimer = 16,nttwidth = 1,nttwidthCalcModeDefault = 'scroll',nttwidthCalcMode = widthCalcModeDefault,nttwin = window,nttmessageCallback = function(){ warn('MessageCallback function not defined'); },nttreadyCallback = function(){},nttpageInfoCallback = function(){},nttcustomCalcMethods = {ntttheight: function(){nttttwarn('Custom height calculation function not defined');nttttreturn document.documentElement.offsetHeight;nttt},ntttwidth: function(){nttttwarn('Custom width calculation function not defined');nttttreturn document.body.scrollWidth;nttt}ntt},ntteventHandlersByName = {};nnntfunction addEventListener(el,evt,func){ntt/* istanbul ignore else */ // Not testable in phantonJSnttif ('addEventListener' in window){ntttel.addEventListener(evt,func, false);ntt} else if ('attachEvent' in window){ //IEntttel.attachEvent('on'+evt,func);ntt}nt}nntfunction removeEventListener(el,evt,func){ntt/* istanbul ignore else */ // Not testable in phantonJSnttif ('removeEventListener' in window){ntttel.removeEventListener(evt,func, false);ntt} else if ('detachEvent' in window){ //IEntttel.detachEvent('on'+evt,func);ntt}nt}nntfunction capitalizeFirstLetter(string) {nttreturn string.charAt(0).toUpperCase() + string.slice(1);nt}nnt//Based on underscore.jsntfunction throttle(func) {nttvarntttcontext, args, result,nttttimeout = null,ntttprevious = 0,ntttlater = function() {nttttprevious = getNow();ntttttimeout = null;nttttresult = func.apply(context, args);nttttif (!timeout) {ntttttcontext = args = null;ntttt}nttt};nnttreturn function() {ntttvar now = getNow();nntttif (!previous) {nttttprevious = now;nttt}nntttvar remaining = throttledTimer - (now - previous);nntttcontext = this;ntttargs = arguments;nntttif (remaining <= 0 || remaining > throttledTimer) {nttttif (timeout) {ntttttclearTimeout(timeout);nttttttimeout = null;ntttt}nnttttprevious = now;nttttresult = func.apply(context, args);nnttttif (!timeout) {ntttttcontext = args = null;ntttt}nnttt} else if (!timeout) {ntttttimeout = setTimeout(later, remaining);nttt}nntttreturn result;ntt};nt}nntvar getNow = Date.now || function() {ntt/* istanbul ignore next */ // Not testable in PhantonJSnttreturn new Date().getTime();nt};nntfunction formatLogMsg(msg){nttreturn msgID + '[' + myID + ']' + ' ' + msg;nt}nntfunction log(msg){nttif (logging && ('object' === typeof window.console)){ntttconsole.log(formatLogMsg(msg));ntt}nt}nntfunction warn(msg){nttif ('object' === typeof window.console){ntttconsole.warn(formatLogMsg(msg));ntt}nt}nnntfunction init(){nttreadDataFromParent();nttlog('Initialising iFrame ('location.href
')');nttreadDataFromPage();nttsetMargin();nttsetBodyStyle('background',bodyBackground);nttsetBodyStyle('padding',bodyPadding);nttinjectClearFixIntoBodyElement();nttcheckHeightMode();nttcheckWidthMode();nttstopInfiniteResizingOfIFrame();nttsetupPublicMethods();nttstartEventListeners();nttinPageLinks = setupInPageLinks();nttsendSize('init','Init message from host page');nttreadyCallback();nt}nntfunction readDataFromParent(){nnttfunction strBool(str){ntttreturn 'true' === str ? true : false;ntt}nnttvar data = initMsg.substr(msgIdLen).split(':');nnttmyID = data;nttbodyMargin = (undefined !== data) ? Number(data) : bodyMargin; //For V1 compatibilitynttcalculateWidth = (undefined !== data) ? strBool(data) : calculateWidth;nttlogging = (undefined !== data) ? strBool(data) : logging;nttinterval = (undefined !== data) ? Number(data) : interval;nttautoResize = (undefined !== data) ? strBool(data) : autoResize;nttbodyMarginStr = data;nttheightCalcMode = (undefined !== data) ? data : heightCalcMode;nttbodyBackground = data;nttbodyPadding = data;ntttolerance = (undefined !== data) ? Number(data) : tolerance;nttinPageLinks.enable = (undefined !== data) ? strBool(data): false;nttresizeFrom = (undefined !== data) ? data : resizeFrom;nttwidthCalcMode = (undefined !== data) ? data : widthCalcMode;nt}nntfunction readDataFromPage(){nttfunction readData(){ntttvar data = window.iFrameResizer;nntttlog('Reading data from page: ' + JSON.stringify(data));nntttmessageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;ntttreadyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;nttttargetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;ntttheightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;ntttwidthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;ntt}nnttfunction setupCustomCalcMethods(calcMode, calcFunc){ntttif ('function' === typeof calcMode) {nttttlog('Setup custom ' + calcFunc + 'CalcMethod’);nttttcustomCalcMethods = calcMode;nttttcalcMode = 'custom';nttt}nntttreturn calcMode;ntt}nnttif(('iFrameResizer' in window) && (Object
=== window.iFrameResizer.constructor)) {ntttreadData();ntttheightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');ntttwidthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');ntt}nnttlog('TargetOrigin for parent set to: ' + targetOriginDefault);nt}nnntfunction chkCSS(attr,value){nttif (-1 !== value.indexOf('-')){ntttwarn('Negative CSS value ignored for '+attr);ntttvalue='';ntt}nttreturn value;nt}nntfunction setBodyStyle(attr,value){nttif ((undefined !== value) && ('' !== value) && ('null' !== value)){ntttdocument.body.style = value;ntttlog('Body 'attr
' set to "'value
'"');ntt}nt}nntfunction setMargin(){ntt//If called via V1 script, convert bodyMargin from int to strnttif (undefined === bodyMarginStr){ntttbodyMarginStr = bodyMargin+'px';ntt}nnttsetBodyStyle('margin',chkCSS('margin',bodyMarginStr));nt}nntfunction stopInfiniteResizingOfIFrame(){nttdocument.documentElement.style.height = '';nttdocument.body.style.height = '';nttlog('HTML & body height set to "auto"');nt}nnntfunction manageTriggerEvent(options){nnttvar listener = {ntttadd: function(eventName){nttttfunction handleEvent(){ntttttsendSize(options.eventName,options.eventType);ntttt}nntttteventHandlersByName = handleEvent;nnttttaddEventListener(window,eventName,handleEvent);nttt},ntttremove: function(eventName){nttttvar handleEvent = eventHandlersByName;nttttdelete eventHandlersByName;nnttttremoveEventListener(window,eventName,handleEvent);nttt}ntt};nnttif(options.eventNames && Array.prototype.map){ntttoptions.eventName = options.eventNames;ntttoptions.eventNames.map(listener);ntt} else {ntttlistener(options.eventName);ntt}nnttlog(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);nt}nntfunction manageEventListeners(method){nttmanageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });nttmanageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });nttmanageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });nttmanageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });nttmanageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });nttmanageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });nttmanageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });nttmanageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });nttmanageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });nttmanageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });nttmanageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });nttmanageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });nttmanageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });nttmanageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });nttmanageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });nttif('child' === resizeFrom){ntttmanageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });ntt}nt}nntfunction checkCalcMode(calcMode,calcModeDefault,modes,type){nttif (calcModeDefault !== calcMode){ntttif (!(calcMode in modes)){nttttwarn(calcMode + ' is not a valid option for 'type
'CalculationMethod.');nttttcalcMode=calcModeDefault;nttt}ntttlog(type+' calculation method set to "'calcMode
'"');ntt}nnttreturn calcMode;nt}nntfunction checkHeightMode(){nttheightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');nt}nntfunction checkWidthMode(){nttwidthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');nt}nntfunction startEventListeners(){nttif ( true === autoResize ) {ntttmanageEventListeners('add');ntttsetupMutationObserver();ntt}nttelse {ntttlog('Auto Resize disabled');ntt}nt}nntfunction stopMsgsToParent(){nttlog('Disable outgoing messages');nttsendPermit = false;nt}nntfunction removeMsgListener(){nttlog('Remove event listener: Message');nttremoveEventListener(window, 'message', receiver);nt}nntfunction disconnectMutationObserver(){nttif (null !== bodyObserver){nttt/* istanbul ignore next */ // Not testable in PhantonJSntttbodyObserver.disconnect();ntt}nt}nntfunction stopEventListeners(){nttmanageEventListeners('remove');nttdisconnectMutationObserver();nttclearInterval(intervalTimer);nt}nntfunction teardown(){nttstopMsgsToParent();nttremoveMsgListener();nttif (true === autoResize) stopEventListeners();nt}nntfunction injectClearFixIntoBodyElement(){nttvar clearFix = document.createElement('div');nttclearFix.style.clear = 'both';nttclearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.nttdocument.body.appendChild(clearFix);nt}nntfunction setupInPageLinks(){nnttfunction getPagePosition (){ntttreturn {nttttx: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,ntttty: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTopnttt};ntt}nnttfunction getElementPosition(el){ntttvarnttttelPosition = el.getBoundingClientRect(),nttttpagePosition = getPagePosition();nntttreturn {nttttx: parseInt(elPosition.left,10) + parseInt(pagePosition.x,10),ntttty: parseInt(elPosition.top,10) + parseInt(pagePosition.y,10)nttt};ntt}nnttfunction findTarget(location){ntttfunction jumpToTarget(target){nttttvar jumpPosition = getElementPosition(target);nnttttlog('Moving to in page link (#'hash
') at x: 'jumpPosition.x
' y: '+jumpPosition.y);nttttsendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/widthnttt}nntttvarntttthash = location.split(‘#’) || location, //Remove # if presentntttthashData = decodeURIComponent(hash),ntttttarget = document.getElementById(hashData) || document.getElementsByName(hashData);nntttif (undefined !== target){nttttjumpToTarget(target);nttt} else {nttttlog('In page link (#' + hash + ') not found in iFrame, so sending to parent');nttttsendMsg(0,0,'inPageLink','#'+hash);nttt}ntt}nnttfunction checkLocationHash(){ntttif ('' !== location.hash && '#' !== location.hash){nttttfindTarget(location.href);nttt}ntt}nnttfunction bindAnchors(){ntttfunction setupLink(el){nttttfunction linkClicked(e){nttttte.preventDefault();nnttttt/*jshint validthis:true */ntttttfindTarget(this.getAttribute('href'));ntttt}nnttttif ('#' !== el.getAttribute('href')){ntttttaddEventListener(el,'click',linkClicked);ntttt}nttt}nntttArray.prototype.forEach.call( document.querySelectorAll( 'a' ), setupLink );ntt}nnttfunction bindLocationHash(){ntttaddEventListener(window,'hashchange',checkLocationHash);ntt}nnttfunction initCheck(){ //check if page loaded with location hash after init resizentttsetTimeout(checkLocationHash,eventCancelTimer);ntt}nnttfunction enableInPageLinks(){nttt/* istanbul ignore else */ // Not testable in phantonJSntttif(Array.prototype.forEach && document.querySelectorAll){nttttlog('Setting up location.hash handlers');nttttbindAnchors();nttttbindLocationHash();nttttinitCheck();nttt} else {nttttwarn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');nttt}ntt}nnttif(inPageLinks.enable){ntttenableInPageLinks();ntt} else {ntttlog('In page linking not enabled');ntt}nnttreturn {ntttfindTarget:findTargetntt};nt}nntfunction setupPublicMethods(){nttlog('Enable public methods');nnttwin.parentIFrame = {nntttautoResize: function autoResizeF(resize){nttttif (true === resize && false === autoResize) {ntttttautoResize=true;ntttttstartEventListeners();nttttt//sendSize('autoResize','Auto Resize enabled');ntttt} else if (false === resize && true === autoResize) {ntttttautoResize=false;ntttttstopEventListeners();ntttt}nnttttreturn autoResize;nttt},nntttclose: function closeF(){nttttsendMsg(0,0,'close');nttttteardown();nttt},nntttgetId: function getIdF(){nttttreturn myID;nttt},nntttgetPageInfo: function getPageInfoF(callback){nttttif ('function' === typeof callback){ntttttpageInfoCallback = callback;ntttttsendMsg(0,0,'pageInfo');ntttt} else {ntttttpageInfoCallback = function(){};ntttttsendMsg(0,0,'pageInfoStop');ntttt}nttt},nntttmoveToAnchor: function moveToAnchorF(hash){nttttinPageLinks.findTarget(hash);nttt},nntttreset: function resetF(){nttttresetIFrame('parentIFrame.reset');nttt},nntttscrollTo: function scrollToF(x,y){nttttsendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/widthnttt},nntttscrollToOffset: function scrollToF(x,y){nttttsendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/widthnttt},nntttsendMessage: function sendMessageF(msg,targetOrigin){nttttsendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);nttt},nntttsetHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){nttttheightCalcMode = heightCalculationMethod;nttttcheckHeightMode();nttt},nntttsetWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod){nttttwidthCalcMode = widthCalculationMethod;nttttcheckWidthMode();nttt},nntttsetTargetOrigin: function setTargetOriginF(targetOrigin){nttttlog('Set targetOrigin: '+targetOrigin);ntttttargetOriginDefault = targetOrigin;nttt},nntttsize: function sizeF(customHeight, customWidth){nttttvar valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');ntttt//lockTrigger();nttttsendSize('size','parentIFrame.size('valString
')', customHeight, customWidth);nttt}ntt};nt}nntfunction initInterval(){nttif ( 0 !== interval ){ntttlog('setInterval: 'interval
'ms');ntttintervalTimer = setInterval(function(){nttttsendSize('interval','setInterval: '+interval);nttt},Math.abs(interval));ntt}nt}nnt/* istanbul ignore next */ //Not testable in PhantomJSntfunction setupBodyMutationObserver(){nttfunction addImageLoadListners(mutation) {ntttfunction addImageLoadListener(element){nttttif (false === element.complete) {ntttttlog('Attach listeners to ' + element.src);ntttttelement.addEventListener('load', imageLoaded, false);ntttttelement.addEventListener('error', imageError, false);ntttttelements.push(element);ntttt}nttt}nntttif (mutation.type === 'attributes' && mutation.attributeName === 'src'){nttttaddImageLoadListener(mutation.target);nttt} else if (mutation.type === 'childList'){nttttArray.prototype.forEach.call(ntttttmutation.target.querySelectorAll('img'),ntttttaddImageLoadListenerntttt);nttt}ntt}nnttfunction removeFromArray(element){ntttelements.splice(elements.indexOf(element),1);ntt}nnttfunction removeImageLoadListener(element){ntttlog('Remove listeners from ' + element.src);ntttelement.removeEventListener('load', imageLoaded, false);ntttelement.removeEventListener('error', imageError, false);ntttremoveFromArray(element);ntt}nnttfunction imageEventTriggered(event,type,typeDesc){ntttremoveImageLoadListener(event.target);ntttsendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);ntt}nnttfunction imageLoaded(event) {ntttimageEventTriggered(event,'imageLoad','Image loaded');ntt}nnttfunction imageError(event) {ntttimageEventTriggered(event,'imageLoadFailed','Image load failed');ntt}nnttfunction mutationObserved(mutations) {ntttsendSize('mutationObserver','mutationObserver: ' + mutations.target + ' ' + mutations.type);nnttt//Deal with WebKit asyncing image loading when tags are injected into the pagentttmutations.forEach(addImageLoadListners);ntt}nnttfunction createMutationObserver(){ntttvarntttttarget = document.querySelector('body'),nnttttconfig = {ntttttattributes : true,ntttttattributeOldValue : false,ntttttcharacterData : true,ntttttcharacterDataOldValue : false,ntttttchildList : true,ntttttsubtree : truentttt};nntttobserver = new MutationObserver(mutationObserved);nntttlog('Create body MutationObserver');ntttobserver.observe(target, config);nntttreturn observer;ntt}nnttvarntttelements = [],ntttMutationObserver = window.MutationObserver || window.WebKitMutationObserver,ntttobserver = createMutationObserver();nnttreturn {ntttdisconnect: function (){nttttif ('disconnect' in observer){ntttttlog('Disconnect body MutationObserver');ntttttobserver.disconnect();ntttttelements.forEach(removeImageLoadListener);ntttt}nttt}ntt};nt}nntfunction setupMutationObserver(){nttvartforceIntervalTimer = 0 > interval;nntt/* istanbul ignore if */ // Not testable in PhantomJSnttif (window.MutationObserver || window.WebKitMutationObserver){ntttif (forceIntervalTimer) {nttttinitInterval();nttt} else {nttttbodyObserver = setupBodyMutationObserver();nttt}ntt} else {ntttlog('MutationObserver not supported in this browser!');ntttinitInterval();ntt}nt}nnnt// document.documentElement.offsetHeight is not reliable, sont// we have to jump through hoops to get a better value.ntfunction getComputedStyle(prop,el) {ntt/* istanbul ignore next */ //Not testable in PhantomJSnttfunction convertUnitsToPxForIE8(value) {ntttvar PIXEL = /^\d+(px)?$/i;nntttif (PIXEL.test(value)) {nttttreturn parseInt(value,base);nttt}nntttvarnttttstyle = el.style.left,nttttruntimeStyle = el.runtimeStyle.left;nntttel.runtimeStyle.left = el.currentStyle.left;ntttel.style.left = value || 0;ntttvalue = el.style.pixelLeft;ntttel.style.left = style;ntttel.runtimeStyle.left = runtimeStyle;nntttreturn value;ntt}nnttvar retVal = 0;nttel = el || document.body;nntt/* istanbul ignore else */ // Not testable in phantonJSnttif (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {ntttretVal = document.defaultView.getComputedStyle(el, null);ntttretVal = (null !== retVal) ? retVal : 0;ntt} else {//IE8ntttretVal = convertUnitsToPxForIE8(el.currentStyle);ntt}nnttreturn parseInt(retVal,base);nt}nntfunction chkEventThottle(timer){nttif(timer > throttledTimer/2){ntttthrottledTimer = 2*timer;ntttlog('Event throttle increased to ' + throttledTimer + 'ms');ntt}nt}nnt//Idea from github.com/guardian/iframe-messengerntfunction getMaxElement(side,elements) {nttvarntttelementsLength = elements.length,ntttelVal = 0,ntttmaxVal = 0,ntttSide = capitalizeFirstLetter(side),nttttimer = getNow();nnttfor (var i = 0; i < elementsLength; i++) {ntttelVal = elements.getBoundingClientRect() + getComputedStyle(‘margin’+Side,elements);ntttif (elVal > maxVal) {nttttmaxVal = elVal;nttt}ntt}nntttimer = getNow() - timer;nnttlog('Parsed 'elementsLength
' HTML elements');nttlog('Element position calculated in ' + timer + 'ms');nnttchkEventThottle(timer);nnttreturn maxVal;nt}nntfunction getAllMeasurements(dimention){nttreturn [ntttdimention.bodyOffset(),ntttdimention.bodyScroll(),ntttdimention.documentElementOffset(),ntttdimention.documentElementScroll()ntt];nt}nntfunction getTaggedElements(side,tag){nttfunction noTaggedElementsFound(){ntttwarn('No tagged elements ('tag
') found on page');ntttreturn document.querySelectorAll('body *');ntt}nnttvar elements = document.querySelectorAll(‘[’tag
‘]');nnttif (0 === elements.length) noTaggedElementsFound();nnttreturn getMaxElement(side,elements);nt}nntfunction getAllElements(){nttreturn document.querySelectorAll('body *');nt}nntvarnttgetHeight = {ntttbodyOffset: function getBodyOffsetHeight(){nttttreturn document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');nttt},nntttoffset: function(){nttttreturn getHeight.bodyOffset(); //Backwards compatabilitynttt},nntttbodyScroll: function getBodyScrollHeight(){nttttreturn document.body.scrollHeight;nttt},nntttcustom: function getCustomWidth(){nttttreturn customCalcMethods.height();nttt},nntttdocumentElementOffset: function getDEOffsetHeight(){nttttreturn document.documentElement.offsetHeight;nttt},nntttdocumentElementScroll: function getDEScrollHeight(){nttttreturn document.documentElement.scrollHeight;nttt},nntttmax: function getMaxHeight(){nttttreturn Math.max.apply(null,getAllMeasurements(getHeight));nttt},nntttmin: function getMinHeight(){nttttreturn Math.min.apply(null,getAllMeasurements(getHeight));nttt},nntttgrow: function growHeight(){nttttreturn getHeight.max(); //Run max without the forced downsizingnttt},nntttlowestElement: function getBestHeight(){nttttreturn Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));nttt},nnttttaggedElement: function getTaggedElementsHeight(){nttttreturn getTaggedElements('bottom','data-iframe-height');nttt}ntt},nnttgetWidth = {ntttbodyScroll: function getBodyScrollWidth(){nttttreturn document.body.scrollWidth;nttt},nntttbodyOffset: function getBodyOffsetWidth(){nttttreturn document.body.offsetWidth;nttt},nntttcustom: function getCustomWidth(){nttttreturn customCalcMethods.width();nttt},nntttdocumentElementScroll: function getDEScrollWidth(){nttttreturn document.documentElement.scrollWidth;nttt},nntttdocumentElementOffset: function getDEOffsetWidth(){nttttreturn document.documentElement.offsetWidth;nttt},nntttscroll: function getMaxWidth(){nttttreturn Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());nttt},nntttmax: function getMaxWidth(){nttttreturn Math.max.apply(null,getAllMeasurements(getWidth));nttt},nntttmin: function getMinWidth(){nttttreturn Math.min.apply(null,getAllMeasurements(getWidth));nttt},nntttrightMostElement: function rightMostElement(){nttttreturn getMaxElement('right', getAllElements());nttt},nnttttaggedElement: function getTaggedElementsWidth(){nttttreturn getTaggedElements('right', 'data-iframe-width');nttt}ntt};nnntfunction sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth){nnttfunction resizeIFrame(){ntttheight = currentHeight;ntttwidth = currentWidth;nntttsendMsg(height,width,triggerEvent);ntt}nnttfunction isSizeChangeDetected(){ntttfunction checkTolarance(a,b){nttttvar retVal = Math.abs(a-b) <= tolerance;nttttreturn !retVal;nttt}nntttcurrentHeight = (undefined !== customHeight) ? customHeight : getHeight();ntttcurrentWidth = (undefined !== customWidth ) ? customWidth : getWidth();nntttreturntcheckTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));ntt}nnttfunction isForceResizableEvent(){ntttreturn !(triggerEvent in {'init':1,'interval':1,'size':1});ntt}nnttfunction isForceResizableCalcMode(){ntttreturn (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);ntt}nnttfunction logIgnored(){ntttlog('No change in size detected');ntt}nnttfunction checkDownSizing(){ntttif (isForceResizableEvent() && isForceResizableCalcMode()){nttttresetIFrame(triggerEventDesc);nttt} else if (!(triggerEvent in {'interval':1})){nttttlogIgnored();nttt}ntt}nnttvartcurrentHeight,currentWidth;nnttif (isSizeChangeDetected() || 'init' === triggerEvent){ntttlockTrigger();ntttresizeIFrame();ntt} else {ntttcheckDownSizing();ntt}nt}nntvar sizeIFrameThrottled = throttle(sizeIFrame);nntfunction sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){nttfunction recordTrigger(){ntttif (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){nttttlog( 'Trigger event: ' + triggerEventDesc );nttt}ntt}nnttfunction isDoubleFiredEvent(){ntttreturn triggerLocked && (triggerEvent in doubleEventList);ntt}nnttif (!isDoubleFiredEvent()){ntttrecordTrigger();ntttsizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);ntt} else {ntttlog('Trigger event cancelled: '+triggerEvent);ntt}nt}nntfunction lockTrigger(){nttif (!triggerLocked){nttttriggerLocked = true;ntttlog('Trigger event lock on');ntt}nttclearTimeout(triggerLockedTimer);ntttriggerLockedTimer = setTimeout(function(){nttttriggerLocked = false;ntttlog('Trigger event lock off');ntttlog('–');ntt},eventCancelTimer);nt}nntfunction triggerReset(triggerEvent){nttheight = getHeight();nttwidth = getWidth();nnttsendMsg(height,width,triggerEvent);nt}nntfunction resetIFrame(triggerEventDesc){nttvar hcm = heightCalcMode;nttheightCalcMode = heightCalcModeDefault;nnttlog('Reset trigger event: ' + triggerEventDesc);nttlockTrigger();ntttriggerReset('reset');nnttheightCalcMode = hcm;nt}nntfunction sendMsg(height,width,triggerEvent,msg,targetOrigin){nttfunction setTargetOrigin(){ntttif (undefined === targetOrigin){ntttttargetOrigin = targetOriginDefault;nttt} else {nttttlog('Message targetOrigin: '+targetOrigin);nttt}ntt}nnttfunction sendToParent(){ntttvarnttttsize = height + ':' + width,nttttmessage = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');nntttlog('Sending message to host page (' + message + ')');nttttarget.postMessage( msgID + message, targetOrigin);ntt}nnttif(true === sendPermit){ntttsetTargetOrigin();ntttsendToParent();ntt}nt}nntfunction receiver(event) {nttvar processRequestFromParent = {ntttinit: function initFromParent(){nttttfunction fireInit(){ntttttinitMsg = event.data;nttttttarget = event.source;nntttttinit();ntttttfirstRun = false;ntttttsetTimeout(function(){ initLock = false;},eventCancelTimer);ntttt}nnttttif (document.body){ntttttfireInit();ntttt} else {ntttttlog('Waiting for page ready');ntttttaddEventListener(window,'readystatechange',processRequestFromParent.initFromParent);ntttt}nttt},nntttreset: function resetFromParent(){nttttif (!initLock){ntttttlog('Page size reset by host page');nttttttriggerReset('resetPage');ntttt} else {ntttttlog('Page reset ignored by init');ntttt}nttt},nntttresize: function resizeFromParent(){nttttsendSize('resizeParent','Parent window requested size check');nttt},nntttmoveToAnchor: function moveToAnchorF(){nttttinPageLinks.findTarget(getData());nttt},ntttinPageLink: function inPageLinkF() {this.moveToAnchor();}, //Backward compatabilitynntttpageInfo: function pageInfoFromParent(){nttttvar msgBody = getData();nttttlog('PageInfoFromParent called from parent: ' + msgBody );nttttpageInfoCallback(JSON.parse(msgBody));nttttlog(' –');nttt},nntttmessage: function messageFromParent(){nttttvar msgBody = getData();nnttttlog('MessageCallback called from parent: ' + msgBody );nttttmessageCallback(JSON.parse(msgBody));nttttlog(' –');nttt}ntt};nnttfunction isMessageForUs(){ntttreturn msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messagesntt}nnttfunction getMessageType(){ntttreturn event.data.split(’]‘).split(’:‘);ntt}nnttfunction getData(){ntttreturn event.data.substr(event.data.indexOf(':')+1);ntt}nnttfunction isMiddleTier(){ntttreturn ('iFrameResize' in window);ntt}nnttfunction isInitMsg(){nttt//Test if this message is from a child below us. This is an ugly test, however, updatingnttt//the message format would break backwards compatibity.ntttreturn event.data.split(’:‘) in {'true':1,'false':1};ntt}nnttfunction callFromParent(){ntttvar messageType = getMessageType();nntttif (messageType in processRequestFromParent){nttttprocessRequestFromParent();nttt} else if (!isMiddleTier() && !isInitMsg()){nttttwarn('Unexpected message ('event.data
')');nttt}ntt}nnttfunction processMessage(){ntttif (false === firstRun) {nttttcallFromParent();nttt} else if (isInitMsg()) {nttttprocessRequestFromParent.init();nttt} else {nttttlog('Ignored message of type "' + getMessageType() + '". Received before initialization.');nttt}ntt}nnttif (isMessageForUs()){ntttprocessMessage();ntt}nt}nnt//Normally the parent kicks things off when it detects the iFrame has loaded.nt//If this script is async-loaded, then tell parent page to retry init.ntfunction chkLateLoaded(){nttif('loading' !== document.readyState){ntttwindow.parent.postMessage(’Ready','*');ntt}nt}nntaddEventListener(window, 'message', receiver);ntchkLateLoaded();nntnn})(window || {});n”]}