AUI.add('ah-lightbox', function (A) { var Lang = A.Lang, USE_ARIA = 'useARIA', LIGHTBOX = 'lightbox', IO = 'io', STACK = 'stack', AH_LIGHTBOX = 'ah-lightbox', isBackHistoryInit=null, history=null; var Lightbox = function() {}; A.mix( Lightbox, { NAME: LIGHTBOX, ATTRS: { uri:{ value: null }, iframe:{ value: false, setter: function(val){ return (val && val != "" && (val == true || val.toLowerCase() == "true")); } }, buttonsLinks:{ value: null }, close:{ value: true }, strings: { value: { close: closeDialog } }, centered:{ value:true }, footerText:{ value:null }, constrain2view:{ value : true }, render:{ value : false }, draggable:{ value : true }, modal:{ value : true }, resizable:{ value : true }, stack:{ value : true }, footerContent : { value: "" }, dragConfig: { value : { handles: [ ".aui-ah-lightbox-hd" ] } }, destroyOnClose : { value: true }, header : { value: true }, returnFocusNode : { value: null }, backButtonHistory:{ value:false }, loadingMessage:{ value: "Loading..." } } }); Lightbox.prototype = { uri : null, iframe : null, buttons : null, footerText: null, lightBoxHistoryID:null, //back button functionality initBackButtonHistory: function(){ var instance=this; instance.isBackHistoryInit=true; var lightBoxHistoryID=instance.lightBoxHistoryID; A.Global.on('history:change', function (e) { if (e.src === A.HistoryHash.SRC_HASH) { if(e.removed[lightBoxHistoryID]) { instance.close(); } } }); }, initializer : function () { var instance = this; instance.lightBoxHistoryID=instance.get('id')+'lightBox'; uri = instance.get("uri"); iframe = instance.get("iframe"); buttons = instance.get("buttonsLinks"); width = instance.get("width"); header = instance.get("header"); returnFocusNode = instance.get("returnFocusNode"); backButtonHistory=instance.get("backButtonHistory"); loadingMessage = instance.get("loadingMessage"); if(loadingMessage == null || loadingMessage == '') { loadingMessage = "Loading..."; } //check back button functionality is required? if(backButtonHistory) { instance.initBackButtonHistory(); } if(!width || width == null || width == 'null' || width == '') { instance.set('width', '68.75%'); } if (uri && uri != 'null' && A.Lang.trim(uri) != '') { if (iframe) { instance.plug(A.Plugin.DialogIframe, { uri : uri, bindLoadHandler: function() { var dlgIframe = this; instance._ifmheight = instance.getiFrameHeight(); dlgIframe.node.on('load', A.bind(dlgIframe.fire, dlgIframe, 'load')); dlgIframe.node.on('load', function(){ //Condition checks iframe loads from same domain or not if(uri.indexOf("http://") == -1 || uri.indexOf("https://") == -1 || uri.indexOf("http://"+top.location.host) == 0 || uri.indexOf("https://"+top.location.host) == 0){ instance._setInterval(); } }); } }); } else { instance.plug(A.LoadingMask, { strings: { loading: loadingMessage } }); instance.plug(A.Plugin.IO, { uri : uri, showLoading: false, autoLoad: true, on: { start: function(event, id) { instance.loadingmask.show(); }, end: function(event, id, xhr) { instance.loadingmask.hide(); } }, after :{ start: function(){ instance._dialogheight = instance.getDialogHeight(); instance._setInterval(); }, success: function(){ instance._responsive(); /* removed to fix the height for video in lightbox */ setTimeout(function(){ instance._clearInterval(); }, 4000); }, failure: function(){ instance._clearInterval(); } } }); } } instance.on("close",function(e){ var instance = this; instance._clearInterval(); //pbpi-2057 - preventing background data to scroll mainly on mobile devices A.one('body').setStyle('overflow', ''); var fadeAnim = new A.Anim({ node: A.DialogMask._posNode, to:{ opacity: 0 }, duration: 1, easing: A.Easing.fadeOut }); fadeAnim.run(); /*A.setTimeout(function(){ A.DialogMask._posNode.addClass("aui-overlaymask-hidden"); A.DialogMask._posNode.removeClass("ah-lightbox-overlaymask"); }, 500);*/ /*A.DialogMask._posNode.setStyle("zIndex",'0');*/ var handle = A.later(500, window, function(){ A.DialogMask._posNode.addClass("aui-overlaymask-hidden"); A.DialogMask._posNode.removeClass("ah-lightbox-overlaymask"); }, [], false); //A.setInterval(A.DialogMask._posNode.hide(), 1000); if(returnFocusNode!=null){ A.one(returnFocusNode).focus(); } }); instance.on('resize:end', function(event){ setTimeout(function(){ instance._responsive(); }, 500); }); }, _clearInterval: function() { var instance = this; if (instance._intervalId) { A.clearInterval(instance._intervalId); instance._intervalId = null; } }, _setInterval: function() { var instance = this; if (!instance._intervalId) { instance._intervalId = A.setInterval(instance._responsive, 4000, instance); } }, _setBackButtonHistory:function() { var instance = this; //check back button functionality is required? if(instance.isBackHistoryInit) { instance.history = new A.HistoryHash(); instance.history.addValue(instance.lightBoxHistoryID, "lightBox"); instance.isBackHistoryInit=false; } }, _afterRenderer : function(){ var instance = this; //intialize or add backbutton History instance._setBackButtonHistory(); // forcing lazyAdd:true attrs call the setter instance.get(STACK); instance.get(IO); instance._setHeaderFooter(); /* Added animation when lightbox is getting loaded */ A.DialogMask._posNode.show(); A.DialogMask._posNode.removeClass("aui-overlaymask-hidden"); A.DialogMask._posNode.addClass("ah-lightbox-overlaymask"); A.DialogMask._posNode.setStyle("zIndex",'2000'); //pbpi-2057 - preventing background data to scroll mainly on mobile devices start A.DialogMask._posNode.on(['touchstart','touchmove','touchend','click'], function(event){ // Add click event to overlay mask to avoid background text selection event.preventDefault(); }); A.DialogMask._posNode.one('.aui-overlay-content.aui-overlaymask-content').on(['touchstart','touchmove','touchend','click'], function(event){ // Add click event to overlay mask to avoid background text selection event.preventDefault(); }); A.on(['mousewheel','wheel', 'scroll'], function(event){ if(event.target.ancestor('.aui-overlaymask'))event.preventDefault(); }) A.one('body').setStyle('overflow', 'hidden'); //pbpi-2057 - preventing background data to scroll mainly on mobile devices end var fadeAnim = new A.Anim({ node: A.DialogMask._posNode, to:{ opacity: .5 }, duration: 1, easing: A.Easing.fadeOut }); fadeAnim.run(); instance._responsive(); A.on('windowresize', function() { instance._responsive(); }); /* Set Focus on Lighthox while it open */ A.one(instance.get('boundingBox')).attr('tabIndex','0'); A.one(instance.get('boundingBox')).attr('role','alert'); A.one(instance.get('boundingBox')).focus(); if(Modernizr.touch && A.one('.aui-ah-lightbox')){ A.one('.aui-ah-lightbox').focus(); A.one('.aui-ah-lightbox').simulate("click"); A.one('.aui-ah-lightbox').simulate("mouseover"); }; // Listen for mobile orientation changes if(Modernizr.touch && A.one('.aui-ah-lightbox')){ window.addEventListener("orientationchange", function() { setTimeout(function(){ instance._responsive(); }, 4000); }, false); }; }, getiFrameHeight: function(){ var instance = this; var lghtBox = A.one('#' + instance.get('id')); return (lghtBox && lghtBox.one("iframe"))? lghtBox.one("iframe").get('offsetHeight'):null; }, getDialogHeight: function(){ var instance = this; var lghtBox = A.one('#' + instance.get('id')); return (lghtBox && lghtBox.one(".yui3-widget-bd"))? lghtBox.one(".yui3-widget-bd").get('offsetHeight'):null; }, _setHeaderFooter : function(){ var instance = this; var lightBox = A.one('#' + instance.get('id')); var lightBoxWidth = lightBox.get('offsetWidth'); var lWidth = lightBoxWidth/2; lWidth = lWidth-60; var loadingMsgInstance = A.one('.aui-loadingmask-message'); var loadingMsgContInstance = A.one('.aui-loadingmask-message-content'); if(loadingMsgInstance) { loadingMsgInstance.setStyle('width', 120); } if(loadingMsgInstance) { loadingMsgInstance.setStyle('left', lWidth); loadingMsgInstance.setStyle('top', 45); } if (A.one('.aon-dialog-alert')){ lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd").placeBefore("Beginning of dialog modal content."); // PFO-14227 Dialog box accessibility fixing for announcement for beginning of dialog modal content } else { lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd").placeBefore("Beginning of lightbox content."); //PFO-13898 Lightbox accessibility fixing for announcement for beginning of lightbox content } lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd .aui-panel-icons").placeBefore("
"); // PFO-14213 Lightbox Typography updates for toolbar links lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd .ah-lightbox-hd-links-container").append(""); // PFO-14213 Lightbox Typography updates for toolbar links lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd .ah-lightbox-hd-links-container").append(lightBox.one(".yui3-widget-stdmod .yui3-widget-hd .aui-panel-icons")); lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd").append(lightBox.one(".yui3-widget-stdmod .aui-ah-lightbox-hd .aui-panel-hd-text")); /*Added condition so if required DIV get rendered based on configration no Empty section available in markup*/ if(buttons && buttons['footer']){ lightBox.one(".yui3-widget-stdmod .yui3-widget-ft").append(""); } if(instance.get("footerText") && instance.get("footerText") != ""){ lightBox.one(".yui3-widget-stdmod .yui3-widget-ft").append(""); // PFO-13898 Lightbox typography fixing for copyrights content } instance._footerLinks = lightBox.one(".ah-lightbox-ft-links"); instance._headerLinks = lightBox.one(".ah-lightbox-links small"); // PFO-14213 Lightbox Typography updates for toolbar links instance._headerTitle = lightBox.one(".aui-panel-hd-text"); instance._FooterText = lightBox.one(".ah-lightbox-ft-text small"); // PFO-13898 Lightbox typography fixing for copyrights content instance._headerTitle.addClass('ah-lightbox-title'); A.each(buttons,function(buttons,sectionName){ for (var i=0;i