diff --git a/jquery.bpopup.js b/jquery.bpopup.js
index 1586abe..68056fb 100644
--- a/jquery.bpopup.js
+++ b/jquery.bpopup.js
@@ -1,3 +1,4 @@
+/* bpopup_fix_3.js */
/*===================================================================================================================
* @name: bPopup
* @type: jQuery
@@ -18,6 +19,10 @@
// OPTIONS
var o = $.extend({}, $.fn.bPopup.defaults, options);
+
+ if(o.afterOpen !== false){
+ callback = o.afterOpen;
+ }
// HIDE SCROLLBAR?
if (!o.scrollBar)
@@ -53,7 +58,15 @@
$popup.close = function() {
close();
};
-
+
+ $popup.open = function(){
+ open();
+ }
+
+ $popup.destroy = function(){
+ destroy();
+ }
+
$popup.reposition = function(animateSpeed) {
reposition(animateSpeed);
};
@@ -69,7 +82,10 @@
function init() {
triggerCall(o.onOpen);
popups = ($w.data('bPopup') || 0) + 1, id = prefix + popups + '__',fixedVPos = o.position[1] !== 'auto', fixedHPos = o.position[0] !== 'auto', fixedPosStyle = o.positionStyle === 'fixed', height = $popup.outerHeight(true), width = $popup.outerWidth(true);
- o.loadUrl ? createContent() : open();
+ if(o.autoOpen){
+ o.loadUrl ? createContent() : open();
+ }
+ // o.loadUrl ? createContent() : open();
};
function createContent() {
@@ -106,10 +122,15 @@
function open(){
// MODAL OVERLAY
if (o.modal) {
- $('
')
- .css({backgroundColor: o.modalColor, position: 'fixed', top: 0, right:0, bottom:0, left: 0, opacity: 0, zIndex: o.zIndex + popups})
- .appendTo(o.appendTo)
- .fadeTo(o.speed, o.opacity);
+ if($('div.b-modal.'+id).length){
+ // console.log('b-modal exists');
+ // Do nothing - b-modal (overlay) already exists
+ }else{
+ $('')
+ .css({backgroundColor: o.modalColor, position: 'fixed', top: 0, right:0, bottom:0, left: 0, opacity: 0, zIndex: o.zIndex + popups})
+ .appendTo(o.appendTo)
+ .fadeTo(o.speed, o.opacity);
+ }
}
// POPUP
@@ -126,10 +147,13 @@
$(this).appendTo(o.appendTo);
}
});
- doTransition(true);
+ doTransition(true);
};
function close() {
+
+ triggerCall(o.beforeClose);
+
if (o.modal) {
$('.b-modal.'+$popup.data('id'))
.fadeTo(o.speed, 0, function() {
@@ -144,6 +168,14 @@
return false; // Prevent default
};
+
+ function destroy(){
+ if (o.modal) {
+ $('.b-modal.'+$popup.data('id')).remove();
+ }
+ unbindEvents();
+ $popup.remove();
+ };
function reposition(animateSpeed){
wH = windowHeight();
@@ -314,9 +346,13 @@
};
function calcPosition(){
- vPos = fixedVPos ? o.position[1] : Math.max(0, ((wH- $popup.outerHeight(true)) / 2) - o.amsl)
- , hPos = fixedHPos ? o.position[0] : (wW - $popup.outerWidth(true)) / 2
- , inside = insideWindow();
+ vPos = fixedVPos ? o.position[1] : Math.max(0, ((wH- $popup.outerHeight(true)) / 2) - o.amsl);
+ if(o.positionContainer != null){
+ hPos = fixedHPos ? o.position[0] : (o.positionContainer.outerWidth() - $popup.outerWidth(true)) / 2;
+ }else{
+ hPos = fixedHPos ? o.position[0] : (wW - $popup.outerWidth(true)) / 2;
+ }
+ inside = insideWindow();
};
function insideWindow(){
@@ -342,6 +378,7 @@
amsl: 50
, appending: true
, appendTo: 'body'
+ , autoOpen: false
, autoClose: false
, closeClass: 'b-close'
, content: 'ajax' // ajax, iframe or image
@@ -359,7 +396,9 @@
, modalClose: true
, modalColor: '#000'
, onClose: false
+ , beforeClose: false
, onOpen: false
+ , afterOpen: false
, opacity: 0.7
, position: ['auto', 'auto'] // x, y,
, positionStyle: 'absolute'// absolute or fixed
@@ -368,5 +407,6 @@
, transition: 'fadeIn' //transitions: fadeIn, slideDown, slideIn, slideBack
, transitionClose: false
, zIndex: 9997 // popup gets z-index 9999, modal overlay 9998
+ , positionContainer:null
};
})(jQuery);
diff --git a/jquery.bpopup.min.js b/jquery.bpopup.min.js
index bbc4f72..6418e0c 100644
--- a/jquery.bpopup.min.js
+++ b/jquery.bpopup.min.js
@@ -4,4 +4,4 @@
* @demo: http://dinbror.dk/bpopup
* @version: 0.11.0.min
================================================================================*/
- (function(c){c.fn.bPopup=function(A,E){function L(){a.contentContainer=c(a.contentContainer||b);switch(a.content){case "iframe":var d=c('");d.appendTo(a.contentContainer);t=b.outerHeight(!0);u=b.outerWidth(!0);B();d.attr("src",a.loadUrl);l(a.loadCallback);break;case "image":B();c("
").load(function(){l(a.loadCallback);F(c(this))}).attr("src",a.loadUrl).hide().appendTo(a.contentContainer);break;default:B(),c('').load(a.loadUrl,a.loadData,function(d,b,e){l(a.loadCallback,b);F(c(this))}).hide().appendTo(a.contentContainer)}}function B(){a.modal&&c('').css({backgroundColor:a.modalColor,position:"fixed",top:0,right:0,bottom:0,left:0,opacity:0,zIndex:a.zIndex+v}).appendTo(a.appendTo).fadeTo(a.speed,a.opacity);C();b.data("bPopup",a).data("id",e).css({left:"slideIn"==a.transition||"slideBack"==a.transition?"slideBack"==a.transition?f.scrollLeft()+w:-1*(x+u):m(!(!a.follow[0]&&n||g)),position:a.positionStyle||"absolute",top:"slideDown"==a.transition||"slideUp"==a.transition?"slideUp"==a.transition?f.scrollTop()+y:z+-1*t:p(!(!a.follow[1]&&q||g)),"z-index":a.zIndex+v+1}).each(function(){a.appending&&c(this).appendTo(a.appendTo)});G(!0)}function r(){a.modal&&c(".b-modal."+b.data("id")).fadeTo(a.speed,0,function(){c(this).remove()});a.scrollBar||c("html").css("overflow","auto");c(".b-modal."+e).unbind("click");f.unbind("keydown."+e);k.unbind("."+e).data("bPopup",0=b.height()&&(f.height=b.height());c>=b.width()&&(f.width=b.width());t=b.outerHeight(!0);u=b.outerWidth(!0);C();a.contentContainer.css({height:"auto",width:"auto"});f.left=m(!(!a.follow[0]&&n||g));f.top=p(!(!a.follow[1]&&q||g));b.animate(f,250,function(){d.show();h=D()})}function M(){k.data("bPopup",v);b.delegate(".bClose, ."+a.closeClass,"click."+e,r);a.modalClose&&c(".b-modal."+e).css("cursor","pointer").bind("click",r);N||!a.follow[0]&&!a.follow[1]||k.bind("scroll."+e,function(){if(h.x||h.y){var d={};h.x&&(d.left=a.follow[0]?m(!g):"auto");h.y&&(d.top=a.follow[1]?p(!g):"auto");b.dequeue().animate(d,a.followSpeed,a.followEasing)}}).bind("resize."+e,function(){I()});a.escClose&&f.bind("keydown."+e,function(a){27==a.which&&r()})}function G(d){function c(e){b.css({display:"block",opacity:1}).animate(e,a.speed,a.easing,function(){K(d)})}switch(d?a.transition:a.transitionClose||a.transition){case "slideIn":c({left:d?m(!(!a.follow[0]&&n||g)):f.scrollLeft()-(u||b.outerWidth(!0))-200});break;case "slideBack":c({left:d?m(!(!a.follow[0]&&n||g)):f.scrollLeft()+w+200});break;case "slideDown":c({top:d?p(!(!a.follow[1]&&q||g)):f.scrollTop()-(t||b.outerHeight(!0))-200});break;case "slideUp":c({top:d?p(!(!a.follow[1]&&q||g)):f.scrollTop()+y+200});break;default:b.stop().fadeTo(a.speed,d?1:0,function(){K(d)})}}function K(d){d?(M(),l(E),a.autoClose&&(H=setTimeout(r,a.autoClose))):(b.hide(),l(a.onClose),a.loadUrl&&(a.contentContainer.empty(),b.css({height:"auto",width:"auto"})))}function m(a){return a?x+f.scrollLeft():x}function p(a){return a?z+f.scrollTop():z}function l(a,e){c.isFunction(a)&&a.call(b,e)}function C(){z=q?a.position[1]:Math.max(0,(y-b.outerHeight(!0))/2-a.amsl);x=n?a.position[0]:(w-b.outerWidth(!0))/2;h=D()}function D(){return{x:w>b.outerWidth(!0),y:y>b.outerHeight(!0)}}c.isFunction(A)&&(E=A,A=null);var a=c.extend({},c.fn.bPopup.defaults,A);a.scrollBar||c("html").css("overflow","hidden");var b=this,f=c(document),k=c(window),y=k.height(),w=k.width(),N=/OS 6(_\d)+/i.test(navigator.userAgent),v=0,e,h,q,n,g,z,x,t,u,J,H;b.close=function(){r()};b.reposition=function(a){I(a)};return b.each(function(){c(this).data("bPopup")||(l(a.onOpen),v=(k.data("bPopup")||0)+1,e="__b-popup"+v+"__",q="auto"!==a.position[1],n="auto"!==a.position[0],g="fixed"===a.positionStyle,t=b.outerHeight(!0),u=b.outerWidth(!0),a.loadUrl?L():B())})};c.fn.bPopup.defaults={amsl:50,appending:!0,appendTo:"body",autoClose:!1,closeClass:"b-close",content:"ajax",contentContainer:!1,easing:"swing",escClose:!0,follow:[!0,!0],followEasing:"swing",followSpeed:500,iframeAttr:'scrolling="no" frameborder="0"',loadCallback:!1,loadData:!1,loadUrl:!1,modal:!0,modalClose:!0,modalColor:"#000",onClose:!1,onOpen:!1,opacity:.7,position:["auto","auto"],positionStyle:"absolute",scrollBar:!0,speed:250,transition:"fadeIn",transitionClose:!1,zIndex:9997}})(jQuery);
+!function(o){"use strict";o.fn.bPopup=function(t,n){function e(){w(y.onOpen),M=(L.data("bPopup")||0)+1,T=E+M+"__",x="auto"!==y.position[1],P="auto"!==y.position[0],U="fixed"===y.positionStyle,I=H.outerHeight(!0),S=H.outerWidth(!0),y.autoOpen&&(y.loadUrl?i():a())}function i(){switch(y.contentContainer=o(y.contentContainer||H),y.content){case"iframe":var t=o('");t.appendTo(y.contentContainer),I=H.outerHeight(!0),S=H.outerWidth(!0),a(),t.attr("src",y.loadUrl),w(y.loadCallback);break;case"image":a(),o("
").load(function(){w(y.loadCallback),r(o(this))}).attr("src",y.loadUrl).hide().appendTo(y.contentContainer);break;default:a(),o('').load(y.loadUrl,y.loadData,function(t,n){w(y.loadCallback,n),r(o(this))}).hide().appendTo(y.contentContainer)}}function a(){y.modal&&(o("div.b-modal."+T).length||o('').css({backgroundColor:y.modalColor,position:"fixed",top:0,right:0,bottom:0,left:0,opacity:0,zIndex:y.zIndex+M}).appendTo(y.appendTo).fadeTo(y.speed,y.opacity)),m(),H.data("bPopup",y).data("id",T).css({left:"slideIn"==y.transition||"slideBack"==y.transition?"slideBack"==y.transition?_.scrollLeft()+A:-1*(W+S):h(!(!y.follow[0]&&P||U)),position:y.positionStyle||"absolute",top:"slideDown"==y.transition||"slideUp"==y.transition?"slideUp"==y.transition?_.scrollTop()+j:O+-1*I:b(!(!y.follow[1]&&x||U)),"z-index":y.zIndex+M+1}).each(function(){y.appending&&o(this).appendTo(y.appendTo)}),p(!0)}function l(){return w(y.beforeClose),y.modal&&o(".b-modal."+H.data("id")).fadeTo(y.speed,0,function(){o(this).remove()}),u(),clearTimeout(B),p(),!1}function s(){y.modal&&o(".b-modal."+H.data("id")).remove(),u(),H.remove()}function d(t){j=g(),A=k(),v=C(),(v.x||v.y)&&(clearTimeout(z),z=setTimeout(function(){m(),t=t||y.followSpeed;var n={};v.x&&(n.left=y.follow[0]?h(!0):"auto"),v.y&&(n.top=y.follow[1]?b(!0):"auto"),H.dequeue().each(function(){U?o(this).css({left:W,top:O}):o(this).animate(n,t,y.followEasing)})},50))}function r(o){var t=o.width(),n=o.height(),e={};y.contentContainer.css({height:n,width:t}),n>=H.height()&&(e.height=H.height()),t>=H.width()&&(e.width=H.width()),I=H.outerHeight(!0),S=H.outerWidth(!0),m(),y.contentContainer.css({height:"auto",width:"auto"}),e.left=h(!(!y.follow[0]&&P||U)),e.top=b(!(!y.follow[1]&&x||U)),H.animate(e,250,function(){o.show(),v=C()})}function c(){L.data("bPopup",M),H.delegate(".bClose, ."+y.closeClass,"click."+T,l),y.modalClose&&o(".b-modal."+T).css("cursor","pointer").bind("click",l),q||!y.follow[0]&&!y.follow[1]||L.bind("scroll."+T,function(){if(v.x||v.y){var o={};v.x&&(o.left=y.follow[0]?h(!U):"auto"),v.y&&(o.top=y.follow[1]?b(!U):"auto"),H.dequeue().animate(o,y.followSpeed,y.followEasing)}}).bind("resize."+T,function(){d()}),y.escClose&&_.bind("keydown."+T,function(o){27==o.which&&l()})}function u(){y.scrollBar||o("html").css("overflow","auto"),o(".b-modal."+T).unbind("click"),_.unbind("keydown."+T),L.unbind("."+T).data("bPopup",L.data("bPopup")-1>0?L.data("bPopup")-1:null),H.undelegate(".bClose, ."+y.closeClass,"click."+T,l).data("bPopup",null)}function p(o){function t(t){H.css({display:"block",opacity:1}).animate(t,y.speed,y.easing,function(){f(o)})}switch(o?y.transition:y.transitionClose||y.transition){case"slideIn":t({left:o?h(!(!y.follow[0]&&P||U)):_.scrollLeft()-(S||H.outerWidth(!0))-F});break;case"slideBack":t({left:o?h(!(!y.follow[0]&&P||U)):_.scrollLeft()+A+F});break;case"slideDown":t({top:o?b(!(!y.follow[1]&&x||U)):_.scrollTop()-(I||H.outerHeight(!0))-F});break;case"slideUp":t({top:o?b(!(!y.follow[1]&&x||U)):_.scrollTop()+j+F});break;default:H.stop().fadeTo(y.speed,o?1:0,function(){f(o)})}}function f(o){o?(c(),w(n),y.autoClose&&(B=setTimeout(l,y.autoClose))):(H.hide(),w(y.onClose),y.loadUrl&&(y.contentContainer.empty(),H.css({height:"auto",width:"auto"})))}function h(o){return o?W+_.scrollLeft():W}function b(o){return o?O+_.scrollTop():O}function w(t,n){o.isFunction(t)&&t.call(H,n)}function m(){O=x?y.position[1]:Math.max(0,(j-H.outerHeight(!0))/2-y.amsl),W=null!=y.positionContainer?P?y.position[0]:(y.positionContainer.outerWidth()-H.outerWidth(!0))/2:P?y.position[0]:(A-H.outerWidth(!0))/2,v=C()}function C(){return{x:A>H.outerWidth(!0),y:j>H.outerHeight(!0)}}function g(){return L.height()}function k(){return L.width()}o.isFunction(t)&&(n=t,t=null);var y=o.extend({},o.fn.bPopup.defaults,t);y.afterOpen!==!1&&(n=y.afterOpen),y.scrollBar||o("html").css("overflow","hidden");var T,v,x,P,U,O,W,I,S,z,B,H=this,_=o(document),D=window,L=o(D),j=g(),A=k(),E="__b-popup",q=/OS 6(_\d)+/i.test(navigator.userAgent),F=200,M=0;return H.close=function(){l()},H.open=function(){a()},H.destroy=function(){s()},H.reposition=function(o){d(o)},H.each(function(){o(this).data("bPopup")||e()})},o.fn.bPopup.defaults={amsl:50,appending:!0,appendTo:"body",autoOpen:!1,autoClose:!1,closeClass:"b-close",content:"ajax",contentContainer:!1,easing:"swing",escClose:!0,follow:[!0,!0],followEasing:"swing",followSpeed:500,iframeAttr:'scrolling="no" frameborder="0"',loadCallback:!1,loadData:!1,loadUrl:!1,modal:!0,modalClose:!0,modalColor:"#000",onClose:!1,beforeClose:!1,onOpen:!1,afterOpen:!1,opacity:.7,position:["auto","auto"],positionStyle:"absolute",scrollBar:!0,speed:250,transition:"fadeIn",transitionClose:!1,zIndex:9997,positionContainer:null}}(jQuery);