-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathjquery.fancybox-1.3.6.min.js
19 lines (18 loc) · 15.5 KB
/
jquery.fancybox-1.3.6.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* Modified 2012 Nikola Vidoni (mobile ready, CSS3 optimizations, dropped IE6-7 support for shadows & opacity)
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.6 (22/11/2012)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function(e){var t,n,r,i,s,o,u,a,f,l,c=0,h={},p=[],d=0,v={},m=[],g=null,y=new Image,b=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,w=/[^\.]\.(swf)\s*$/i,E=0,S="",x,T,N=false,C=e.extend(e("<div/>")[0],{prop:0}),k=function(){n.hide();y.onerror=y.onload=null;if(g){g.abort()}t.empty()},L=function(){if(false===h.onError(p,c,h)){n.hide();N=false;return}h.titleShow=false;h.width="auto";h.height="auto";t.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');O()},A=function(){var r=p[c],i,s,u,a,f,l;k();h=e.extend({},e.fn.fancybox.defaults,typeof e(r).data("fancybox")=="undefined"?h:e(r).data("fancybox"));l=h.onStart(p,c,h);if(l===false){N=false;return}else if(typeof l=="object"){h=e.extend(h,l)}u=h.title||(r.nodeName?e(r).attr("title"):r.title)||"";if(r.nodeName&&!h.orig){h.orig=e(r).children("img:first").length?e(r).children("img:first"):e(r)}if(u===""&&h.orig&&h.titleFromAlt){u=h.orig.attr("alt")}i=h.href||(r.nodeName?e(r).attr("href"):r.href)||null;if(/^(?:javascript)/i.test(i)||i=="#"){i=null}if(h.type){s=h.type;if(!i){i=h.content}}else if(h.content){s="html"}else if(i){if(i.match(b)){s="image"}else if(i.match(w)){s="swf"}else if(e(r).hasClass("iframe")){s="iframe"}else if(i.indexOf("#")===0){s="inline"}else{s="ajax"}}if(!s){L();return}if(s=="inline"){r=i.substr(i.indexOf("#"));s=e(r).length>0?"inline":"ajax"}h.type=s;h.href=i;h.title=u;if(h.autoDimensions){if(h.type=="html"||h.type=="inline"||h.type=="ajax"){h.width="auto";h.height="auto"}else{h.autoDimensions=false}}if(h.modal){h.overlayShow=true;h.hideOnOverlayClick=false;h.hideOnContentClick=false;h.enableEscapeButton=false;h.showCloseButton=false}h.padding=parseInt(h.padding,10);h.margin=parseInt(h.margin,10);t.css("padding",h.padding+h.margin);e(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){e(this).replaceWith(o.children())});switch(s){case"html":t.html(h.content);O();break;case"inline":if(e(r).parent().is("#fancybox-content")===true){N=false;return}e('<div class="fancybox-inline-tmp" />').hide().insertBefore(e(r)).bind("fancybox-cleanup",function(){e(this).replaceWith(o.children())}).bind("fancybox-cancel",function(){e(this).replaceWith(t.children())});e(r).appendTo(t);O();break;case"image":N=false;e.fancybox.showActivity();y=new Image;y.onerror=function(){L()};y.onload=function(){N=true;y.onerror=y.onload=null;M()};y.src=i;break;case"swf":h.scrolling="no";a='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+h.width+'" height="'+h.height+'"><param name="movie" value="'+i+'"></param>';f="";e.each(h.swf,function(e,t){a+='<param name="'+e+'" value="'+t+'"></param>';f+=" "+e+'="'+t+'"'});a+='<embed src="'+i+'" type="application/x-shockwave-flash" width="'+h.width+'" height="'+h.height+'"'+f+"></embed></object>";t.html(a);O();break;case"ajax":N=false;e.fancybox.showActivity();h.ajax.win=h.ajax.success;g=e.ajax(e.extend({},h.ajax,{url:i,data:h.ajax.data||{},error:function(e,t,n){if(e.status>0){L()}},success:function(e,r,s){var o=typeof s=="object"?s:g;if(o.status==200){if(typeof h.ajax.win=="function"){l=h.ajax.win(i,e,r,s);if(l===false){n.hide();return}else if(typeof l=="string"||typeof l=="object"){e=l}}t.html(e);O()}}}));break;case"iframe":_();break}},O=function(){var n=h.width,r=h.height;if(n.toString().indexOf("%")>-1){n=parseInt((e(window).width()-h.margin*2)*parseFloat(n)/100,10)+"px"}else{n=n=="auto"?"auto":n+"px"}if(r.toString().indexOf("%")>-1){r=parseInt((e(window).height()-h.margin*2)*parseFloat(r)/100,10)+"px"}else{r=r=="auto"?"auto":r+"px"}t.wrapInner('<div style="width:'+n+";height:"+r+";overflow: "+(h.scrolling=="auto"?"auto":h.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');h.width=t.width();h.height=t.height();_()},M=function(){h.width=y.width;h.height=y.height;e("<img />").attr({id:"fancybox-img",src:y.src,alt:h.title}).appendTo(t);_()},_=function(){var s,g;n.hide();if(i.is(":visible")&&false===v.onCleanup(m,d,v)){e.event.trigger("fancybox-cancel");N=false;return}N=true;e(o.add(r)).unbind();e(window).unbind("resize.fb scroll.fb");e(document).unbind("keydown.fb");if(i.is(":visible")&&v.titlePosition!=="outside"){i.css("height",i.height())}m=p;d=c;v=h;if(v.overlayShow){r.css({"background-color":v.overlayColor,opacity:v.overlayOpacity,cursor:v.hideOnOverlayClick?"pointer":"auto",height:e(document).height(),width:e(document).width()});if(!r.is(":visible")){r.show()}}else{r.hide()}T=q();P();if(i.is(":visible")){e(u.add(f).add(l)).hide();s=i.position(),x={top:s.top,left:s.left,width:i.width(),height:i.height()};g=x.width==T.width&&x.height==T.height;o.fadeTo(v.changeFade,.3,function(){var n=function(){o.html(t.contents()).fadeTo(v.changeFade,1,B)};e.event.trigger("fancybox-change");o.empty().removeAttr("filter").css({"border-width":v.padding,width:T.width-v.padding*2,height:h.autoDimensions?"auto":T.height-E-v.padding*2});if(g){n()}else{C.prop=0;e(C).animate({prop:1},{duration:v.changeSpeed,easing:v.easingChange,step:F,complete:n})}});return}i.removeAttr("style");o.css("border-width",v.padding);if(v.transitionIn=="elastic"){x=U();o.html(t.contents());i.show();if(v.opacity){T.opacity=0}C.prop=0;e(C).animate({prop:1},{duration:v.speedIn,easing:v.easingIn,step:F,complete:B});return}if(v.titlePosition=="inside"&&E>0){a.show()}o.css({width:T.width-v.padding*2,height:h.autoDimensions?"auto":T.height-E-v.padding*2}).html(t.contents());i.css(T).fadeIn(v.transitionIn=="none"?0:v.speedIn,B)},D=function(e){if(e&&e.length){if(v.titlePosition=="float"){return'<div id="fancybox-title-float-main">'+e+"</div>"}return'<div id="fancybox-title-'+v.titlePosition+'">'+e+"</div>"}return false},P=function(){S=v.title||"";E=0;a.empty().removeAttr("style").removeClass();if(v.titleShow===false){a.hide();return}S=e.isFunction(v.titleFormat)?v.titleFormat(S,m,d,v):D(S);if(!S||S===""){a.hide();return}a.addClass("fancybox-title-"+v.titlePosition).html(S).appendTo("body").show();switch(v.titlePosition){case"inside":a.css({width:T.width-v.padding*2,marginLeft:v.padding,marginRight:v.padding});E=a.outerHeight(true);a.appendTo(s);T.height+=E;break;case"over":a.css({marginLeft:v.padding,width:T.width-v.padding*2,bottom:v.padding}).appendTo(s);break;case"float":a.css("left",parseInt((a.width()-T.width-15)/2,10)*-1).appendTo(i);break;default:a.css({width:T.width-v.padding*2,paddingLeft:v.padding,paddingRight:v.padding}).appendTo(i);break}a.hide()},H=function(){if(v.enableEscapeButton||v.enableKeyboardNav){e(document).bind("keydown.fb",function(t){if(t.keyCode==27&&v.enableEscapeButton){t.preventDefault();e.fancybox.close()}else if((t.keyCode==37||t.keyCode==39)&&v.enableKeyboardNav&&t.target.tagName!=="INPUT"&&t.target.tagName!=="TEXTAREA"&&t.target.tagName!=="SELECT"){t.preventDefault();e.fancybox[t.keyCode==37?"prev":"next"]()}})}if(!v.showNavArrows){f.hide();l.hide();return}if(v.cyclic&&m.length>1||d!==0){f.show()}if(v.cyclic&&m.length>1||d!=m.length-1){l.show()}},B=function(){if(!e.support.opacity){o.get(0).style.removeAttribute("filter");i.get(0).style.removeAttribute("filter")}if(h.autoDimensions){o.css("height","auto")}i.css("height","auto");if(S&&S.length){a.show()}if(v.showCloseButton){u.show()}H();if(v.hideOnContentClick){o.bind("click",e.fancybox.close)}if(v.hideOnOverlayClick){r.bind("click",e.fancybox.close)}e(window).bind("resize.fb",e.fancybox.resize);if(v.centerOnScroll){e(window).bind("scroll.fb",e.fancybox.center)}if(v.type=="iframe"){if(h&&h.showIframeLoading){e.fancybox.showActivity()}e('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(e.browser.msie?'allowtransparency="true""':"")+' scrolling="'+h.scrolling+'" src="'+v.href+'"></iframe>').appendTo(o).load(function(){if(h&&h.showIframeLoading){e.fancybox.hideActivity()}if(h&&e.isFunction(h.onIframeLoad)){h.onIframeLoad(p,c,h)}})}i.show();N=false;e.fancybox.center();v.onComplete(m,d,v);j()},j=function(){var e,t;if(m.length-1>d){e=m[d+1].href;if(typeof e!=="undefined"&&e.match(b)){t=new Image;t.src=e}}if(d>0){e=m[d-1].href;if(typeof e!=="undefined"&&e.match(b)){t=new Image;t.src=e}}},F=function(e){var t={width:parseInt(x.width+(T.width-x.width)*e,10),height:parseInt(x.height+(T.height-x.height)*e,10),top:parseInt(x.top+(T.top-x.top)*e,10),left:parseInt(x.left+(T.left-x.left)*e,10)};if(typeof T.opacity!=="undefined"){t.opacity=e<.5?.5:e}i.css(t);o.css({width:t.width-v.padding*2,height:t.height-E*e-v.padding*2})},I=function(){var t=navigator.userAgent;var n={iphone:t.match(/(iPhone|iPod|iPad)/),android:t.match(/Android/),blackberry:t.match(/BlackBerry/)};if(n.iphone||n.android||n.blackberry){var r;var i;if(typeof window.innerWidth!="undefined"){r=window.innerWidth-v.margin;i=window.innerHeight-v.margin}else if(typeof document.documentElement!="undefined"&&typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!=0){r=document.documentElement.clientWidth-v.margin;i=document.documentElement.clientHeight-v.margin}else{r=document.getElementsByTagName("body")[0].clientWidth-v.margin;i=document.getElementsByTagName("body")[0].clientHeight-v.margin}return[r-v.margin,i-v.margin,e(document).scrollLeft()+v.margin,e(document).scrollTop()+v.margin]}else{return[e(window).width()-v.margin*2,e(window).height()-v.margin*2,e(document).scrollLeft()+v.margin,e(document).scrollTop()+v.margin]}},q=function(){var e=I(),t={},n=v.autoScale,r=v.padding*2,i;if(v.width.toString().indexOf("%")>-1){t.width=parseInt(e[0]*parseFloat(v.width)/100,10)}else{t.width=v.width+r}if(v.height.toString().indexOf("%")>-1){t.height=parseInt(e[1]*parseFloat(v.height)/100,10)}else{t.height=v.height+r}if(n&&(t.width>e[0]||t.height>e[1])){if(h.type=="image"||h.type=="swf"){i=v.width/v.height;if(t.width>e[0]){t.width=e[0];t.height=parseInt((t.width-r)/i+r,10)}if(t.height>e[1]){t.height=e[1];t.width=parseInt((t.height-r)*i+r,10)}}else{t.width=Math.min(t.width,e[0]);t.height=Math.min(t.height,e[1])}}t.top=parseInt(Math.max(e[3]-20,e[3]+(e[1]-t.height-40)*.5),10);t.left=parseInt(Math.max(e[2]-20,e[2]+(e[0]-t.width-40)*.5),10);return t},R=function(e){var t=e.offset();t.top+=parseInt(e.css("paddingTop"),10)||0;t.left+=parseInt(e.css("paddingLeft"),10)||0;t.top+=parseInt(e.css("border-top-width"),10)||0;t.left+=parseInt(e.css("border-left-width"),10)||0;t.width=e.width();t.height=e.height();return t},U=function(){var t=h.orig?e(h.orig):false,n={},r,i;if(t&&t.length){r=R(t);n={width:r.width+v.padding*2,height:r.height+v.padding*2,top:r.top-v.padding-20,left:r.left-v.padding-20}}else{i=I();n={width:v.padding*2,height:v.padding*2,top:parseInt(i[3]+i[1]*.5,10),left:parseInt(i[2]+i[0]*.5,10)}}return n};e.fn.fancybox=function(t){if(!e(this).length){return this}e(this).data("fancybox",e.extend({},t,e.metadata?e(this).metadata():{})).unbind("click.fb").bind("click.fb",function(t){t.preventDefault();if(N){return}N=true;e(this).blur();p=[];c=0;var n=e(this).attr("rel")||"";if(!n||n==""||n==="nofollow"){p.push(this)}else{p=e("a[rel="+n+"], area[rel="+n+"]");c=p.index(this)}A();return});return this};e.fancybox=function(t){var n;if(N){return}N=true;n=typeof arguments[1]!=="undefined"?arguments[1]:{};p=[];c=parseInt(n.index,10)||0;if(e.isArray(t)){for(var r=0,i=t.length;r<i;r++){if(typeof t[r]=="object"){e(t[r]).data("fancybox",e.extend({},n,t[r]))}else{t[r]=e({}).data("fancybox",e.extend({content:t[r]},n))}}p=jQuery.merge(p,t)}else{if(typeof t=="object"){e(t).data("fancybox",e.extend({},n,t))}else{t=e({}).data("fancybox",e.extend({content:t},n))}p.push(t)}if(c>p.length||c<0){c=0}A()};e.fancybox.showActivity=function(){n.show()};e.fancybox.hideActivity=function(){n.hide()};e.fancybox.next=function(){return e.fancybox.pos(d+1)};e.fancybox.prev=function(){return e.fancybox.pos(d-1)};e.fancybox.pos=function(e){if(N){return}e=parseInt(e);p=m;if(e>-1&&e<m.length){c=e;A()}else if(v.cyclic&&m.length>1){c=e>=m.length?0:m.length-1;A()}return};e.fancybox.cancel=function(){if(N){return}N=true;e.event.trigger("fancybox-cancel");k();h.onCancel(p,c,h);N=false};e.fancybox.close=function(){function t(){r.fadeOut("fast");a.empty().hide();i.hide();e.event.trigger("fancybox-cleanup");o.empty();v.onClosed(m,d,v);m=h=[];d=c=0;v=h={};N=false}if(N||i.is(":hidden")){return}N=true;if(v&&false===v.onCleanup(m,d,v)){N=false;return}k();e(u.add(f).add(l)).hide();e(o.add(r)).unbind();e(window).unbind("resize.fb scroll.fb");e(document).unbind("keydown.fb");o.find("iframe").attr("src",/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");if(v.titlePosition!=="inside"){a.empty()}i.stop();if(v.transitionOut=="elastic"){x=U();var n=i.position();T={top:n.top,left:n.left,width:i.width(),height:i.height()};if(v.opacity){T.opacity=1}a.empty().hide();C.prop=1;e(C).animate({prop:0},{duration:v.speedOut,easing:v.easingOut,step:F,complete:t})}else{i.fadeOut(v.transitionOut=="none"?0:v.speedOut,t)}};e.fancybox.resize=function(){if(r.is(":visible")){r.css("height",e(document).height())}e.fancybox.center(true)};e.fancybox.center=function(){var e,t;if(N){return}t=arguments[0]===true?1:0;e=I();if(!t&&(i.width()>e[0]||i.height()>e[1])){return}i.stop().animate({top:parseInt(Math.max(e[3]-20,e[3]+(e[1]-o.height()-40)*.5-v.padding)),left:parseInt(Math.max(e[2]-20,e[2]+(e[0]-o.width()-40)*.5-v.padding))},typeof arguments[0]=="number"?arguments[0]:200)};e.fancybox.init=function(){if(e("#fancybox-wrap").length){return}e("body").append(t=e('<div id="fancybox-tmp"></div>'),n=e('<div id="fancybox-loading"><div></div></div>'),r=e('<div id="fancybox-overlay"></div>'),i=e('<div id="fancybox-wrap"></div>'));s=e('<div id="fancybox-outer"></div>').appendTo(i);s.append(o=e('<div id="fancybox-content"></div>'),u=e('<a id="fancybox-close"></a>'),a=e('<div id="fancybox-title"></div>'),f=e('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),l=e('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));u.click(e.fancybox.close);n.click(e.fancybox.cancel);f.click(function(t){t.preventDefault();e.fancybox.prev()});l.click(function(t){t.preventDefault();e.fancybox.next()});if(e.fn.mousewheel){i.bind("mousewheel.fb",function(t,n){if(N){t.preventDefault()}else if(e(t.target).get(0).clientHeight==0||e(t.target).get(0).scrollHeight===e(t.target).get(0).clientHeight){t.preventDefault();e.fancybox[n>0?"prev":"next"]()}})}};e.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",easingOut:"swing",showCloseButton:true,showNavArrows:true,showIframeLoading:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onIframeLoad:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};e(document).ready(function(){e.fancybox.init()})})(jQuery)