diff --git a/jquery.bpopup.js b/jquery.bpopup.js index 1586abe..ea6de25 100644 --- a/jquery.bpopup.js +++ b/jquery.bpopup.js @@ -45,6 +45,7 @@ , width , debounce , autoCloseTO + , isConfirm = false ; //////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -53,7 +54,7 @@ $popup.close = function() { close(); }; - + $popup.reposition = function(animateSpeed) { reposition(animateSpeed); }; @@ -145,6 +146,11 @@ return false; // Prevent default }; + function confirm() { + close(); + isConfirm = true; + } + function reposition(animateSpeed){ wH = windowHeight(); wW = windowWidth(); @@ -207,7 +213,8 @@ function bindEvents() { $w.data('bPopup', popups); $popup.delegate('.bClose, .' + o.closeClass, 'click.'+id, close); // legacy, still supporting the close class bClose - + $popup.delegate('.' + o.confirmClass, 'click.'+id, confirm); + if (o.modalClose) { $('.b-modal.'+id).css('cursor', 'pointer').bind('click', close); } @@ -247,6 +254,7 @@ d.unbind('keydown.'+id); $w.unbind('.'+id).data('bPopup', ($w.data('bPopup')-1 > 0) ? $w.data('bPopup')-1 : null); $popup.undelegate('.bClose, .' + o.closeClass, 'click.'+id, close).data('bPopup', null); + $popup.undelegate('.' + o.confirmClass, 'click.'+id, confirm).data('bPopup', null); }; function doTransition(open) { @@ -293,7 +301,14 @@ } } else { $popup.hide(); - triggerCall(o.onClose); + if (isConfirm) { + isConfirm = false; + triggerCall(o.onConfirm); + } + else { + triggerCall(o.onClose); + } + if (o.loadUrl) { o.contentContainer.empty(); $popup.css({height: 'auto', width: 'auto'}); @@ -368,5 +383,7 @@ , transition: 'fadeIn' //transitions: fadeIn, slideDown, slideIn, slideBack , transitionClose: false , zIndex: 9997 // popup gets z-index 9999, modal overlay 9998 + , confirmClass: 'b-confirm' + , onConfirm: false }; })(jQuery); diff --git a/jquery.bpopup.min.js b/jquery.bpopup.min.js index bbc4f72..86739f8 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(T.onOpen),M=(j.data("bPopup")||0)+1,y=O+M+"__",v="auto"!==T.position[1],P="auto"!==T.position[0],U="fixed"===T.positionStyle,z=_.outerHeight(!0),B=_.outerWidth(!0),T.loadUrl?i():a()}function i(){switch(T.contentContainer=o(T.contentContainer||_),T.content){case"iframe":var t=o('");t.appendTo(T.contentContainer),z=_.outerHeight(!0),B=_.outerWidth(!0),a(),t.attr("src",T.loadUrl),w(T.loadCallback);break;case"image":a(),o("").load(function(){w(T.loadCallback),d(o(this))}).attr("src",T.loadUrl).hide().appendTo(T.contentContainer);break;default:a(),o('
').load(T.loadUrl,T.loadData,function(t,n){w(T.loadCallback,n),d(o(this))}).hide().appendTo(T.contentContainer)}}function a(){T.modal&&o('
').css({backgroundColor:T.modalColor,position:"fixed",top:0,right:0,bottom:0,left:0,opacity:0,zIndex:T.zIndex+M}).appendTo(T.appendTo).fadeTo(T.speed,T.opacity),m(),_.data("bPopup",T).data("id",y).css({left:"slideIn"==T.transition||"slideBack"==T.transition?"slideBack"==T.transition?D.scrollLeft()+E:-1*(S+B):h(!(!T.follow[0]&&P||U)),position:T.positionStyle||"absolute",top:"slideDown"==T.transition||"slideUp"==T.transition?"slideUp"==T.transition?D.scrollTop()+A:I+-1*z:b(!(!T.follow[1]&&v||U)),"z-index":T.zIndex+M+1}).each(function(){T.appending&&o(this).appendTo(T.appendTo)}),f(!0)}function l(){return T.modal&&o(".b-modal."+_.data("id")).fadeTo(T.speed,0,function(){o(this).remove()}),u(),clearTimeout(W),f(),!1}function s(){l(),Q=!0}function c(t){A=g(),E=k(),x=C(),(x.x||x.y)&&(clearTimeout(H),H=setTimeout(function(){m(),t=t||T.followSpeed;var n={};x.x&&(n.left=T.follow[0]?h(!0):"auto"),x.y&&(n.top=T.follow[1]?b(!0):"auto"),_.dequeue().each(function(){U?o(this).css({left:S,top:I}):o(this).animate(n,t,T.followEasing)})},50))}function d(o){var t=o.width(),n=o.height(),e={};T.contentContainer.css({height:n,width:t}),n>=_.height()&&(e.height=_.height()),t>=_.width()&&(e.width=_.width()),z=_.outerHeight(!0),B=_.outerWidth(!0),m(),T.contentContainer.css({height:"auto",width:"auto"}),e.left=h(!(!T.follow[0]&&P||U)),e.top=b(!(!T.follow[1]&&v||U)),_.animate(e,250,function(){o.show(),x=C()})}function r(){j.data("bPopup",M),_.delegate(".bClose, ."+T.closeClass,"click."+y,l),_.delegate("."+T.confirmClass,"click."+y,s),T.modalClose&&o(".b-modal."+y).css("cursor","pointer").bind("click",l),q||!T.follow[0]&&!T.follow[1]||j.bind("scroll."+y,function(){if(x.x||x.y){var o={};x.x&&(o.left=T.follow[0]?h(!U):"auto"),x.y&&(o.top=T.follow[1]?b(!U):"auto"),_.dequeue().animate(o,T.followSpeed,T.followEasing)}}).bind("resize."+y,function(){c()}),T.escClose&&D.bind("keydown."+y,function(o){27==o.which&&l()})}function u(){T.scrollBar||o("html").css("overflow","auto"),o(".b-modal."+y).unbind("click"),D.unbind("keydown."+y),j.unbind("."+y).data("bPopup",j.data("bPopup")-1>0?j.data("bPopup")-1:null),_.undelegate(".bClose, ."+T.closeClass,"click."+y,l).data("bPopup",null),_.undelegate("."+T.confirmClass,"click."+y,s).data("bPopup",null)}function f(o){function t(t){_.css({display:"block",opacity:1}).animate(t,T.speed,T.easing,function(){p(o)})}switch(o?T.transition:T.transitionClose||T.transition){case"slideIn":t({left:o?h(!(!T.follow[0]&&P||U)):D.scrollLeft()-(B||_.outerWidth(!0))-F});break;case"slideBack":t({left:o?h(!(!T.follow[0]&&P||U)):D.scrollLeft()+E+F});break;case"slideDown":t({top:o?b(!(!T.follow[1]&&v||U)):D.scrollTop()-(z||_.outerHeight(!0))-F});break;case"slideUp":t({top:o?b(!(!T.follow[1]&&v||U)):D.scrollTop()+A+F});break;default:_.stop().fadeTo(T.speed,o?1:0,function(){p(o)})}}function p(o){o?(r(),w(n),T.autoClose&&(W=setTimeout(l,T.autoClose))):(_.hide(),Q?(Q=!1,w(T.onConfirm)):w(T.onClose),T.loadUrl&&(T.contentContainer.empty(),_.css({height:"auto",width:"auto"})))}function h(o){return o?S+D.scrollLeft():S}function b(o){return o?I+D.scrollTop():I}function w(t,n){o.isFunction(t)&&t.call(_,n)}function m(){I=v?T.position[1]:Math.max(0,(A-_.outerHeight(!0))/2-T.amsl),S=P?T.position[0]:(E-_.outerWidth(!0))/2,x=C()}function C(){return{x:E>_.outerWidth(!0),y:A>_.outerHeight(!0)}}function g(){return j.height()}function k(){return j.width()}o.isFunction(t)&&(n=t,t=null);var T=o.extend({},o.fn.bPopup.defaults,t);T.scrollBar||o("html").css("overflow","hidden");var y,x,v,P,U,I,S,z,B,H,W,_=this,D=o(document),L=window,j=o(L),A=g(),E=k(),O="__b-popup",q=/OS 6(_\d)+/i.test(navigator.userAgent),F=200,M=0,Q=!1;return _.close=function(){l()},_.reposition=function(o){c(o)},_.each(function(){o(this).data("bPopup")||e()})},o.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,confirmClass:"b-confirm",onConfirm:!1}}(jQuery); \ No newline at end of file