2 * FancyBox - jQuery Plugin
3 * Simple and fancy lightbox alternative
5 * Examples and documentation at: http://fancybox.net
7 * Copyright (c) 2008 - 2010 Janis Skarnelis
9 * Version: 1.3.1 (05/03/2010)
10 * Requires: jQuery v1.3+
12 * Dual licensed under the MIT and GPL licenses:
13 * http://www.opensource.org/licenses/mit-license.php
14 * http://www.gnu.org/licenses/gpl.html
17 (function(b
){var m
,u
,x
,g
,D
,i
,z
,A
,B
,p
=0,e
={},q
=[],n
=0,c
={},j
=[],E
=null,s
=new Image
,G
=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S
=/[^\.]\.(swf)\s*$/i,H
,I
=1,k
,l
,h
=false,y
=b
.extend(b("<div/>")[0],{prop
:0}),v
=0,O
=!b
.support
.opacity
&&!window
.XMLHttpRequest
,J=function(){u
.hide();s
.onerror
=s
.onload
=null;E
&&E
.abort();m
.empty()},P=function(){b
.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>',{scrolling
:"no",padding
:20,transitionIn
:"none",transitionOut
:"none"})},
18 K=function(){return[b(window
).width(),b(window
).height(),b(document
).scrollLeft(),b(document
).scrollTop()]},T=function(){var a
=K(),d
={},f
=c
.margin
,o
=c
.autoScale
,t
=(20+f
)*2,w
=(20+f
)*2,r
=c
.padding
*2;if(c
.width
.toString().indexOf("%")>-1){d
.width
=a
[0]*parseFloat(c
.width
)/100-40;o=false}else d.width=c.width+r;if(c.height.toString().indexOf("%")>-1){d.height=a[1]*parseFloat(c.height)/100-40;o
=false}else d
.height
=c
.height
+r
;if(o
&&(d
.width
>a
[0]-t
||d
.height
>a
[1]-w
))if(e
.type
=="image"||e
.type
=="swf"){t
+=r
;
19 w
+=r
;o
=Math
.min(Math
.min(a
[0]-t
,c
.width
)/c.width,Math.min(a[1]-w,c.height)/c.height
);d
.width
=Math
.round(o
*(d
.width
-r
))+r
;d
.height
=Math
.round(o
*(d
.height
-r
))+r
}else{d
.width
=Math
.min(d
.width
,a
[0]-t
);d
.height
=Math
.min(d
.height
,a
[1]-w
)}d
.top
=a
[3]+(a
[1]-(d
.height
+40))*0.5;d
.left
=a
[2]+(a
[0]-(d
.width
+40))*0.5;if(c
.autoScale
===false){d
.top
=Math
.max(a
[3]+f
,d
.top
);d
.left
=Math
.max(a
[2]+f
,d
.left
)}return d
},U=function(a
){if(a
&&a
.length
)switch(c
.titlePosition
){case "inside":return a
;case "over":return'<span id="fancybox-title-over">'+
20 a
+"</span>";default:return'<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">'+a
+'</span><span id="fancybox-title-right"></span></span>'}return false},V=function(){var a
=c
.title
,d
=l
.width
-c
.padding
*2,f
="fancybox-title-"+c
.titlePosition
;b("#fancybox-title").remove();v
=0;if(c
.titleShow
!==false){a
=b
.isFunction(c
.titleFormat
)?c
.titleFormat(a
,j
,n
,c
):U(a
);if(!(!a
||a
==="")){b('<div id="fancybox-title" class="'+f
+'" />').css({width
:d
,paddingLeft
:c
.padding
,
21 paddingRight
:c
.padding
}).html(a
).appendTo("body");switch(c
.titlePosition
){case "inside":v
=b("#fancybox-title").outerHeight(true)-c
.padding
;l
.height
+=v
;break;case "over":b("#fancybox-title").css("bottom",c
.padding
);break;default:b("#fancybox-title").css("bottom",b("#fancybox-title").outerHeight(true)*-1);break}b("#fancybox-title").appendTo(D
).hide()}}},W=function(){b(document
).unbind("keydown.fb").bind("keydown.fb",function(a
){if(a
.keyCode
==27&&c
.enableEscapeButton
){a
.preventDefault();b
.fancybox
.close()}else if(a
.keyCode
==
22 37){a
.preventDefault();b
.fancybox
.prev()}else if(a
.keyCode
==39){a
.preventDefault();b
.fancybox
.next()}});if(b
.fn
.mousewheel
){g
.unbind("mousewheel.fb");j
.length
>1&&g
.bind("mousewheel.fb",function(a
,d
){a
.preventDefault();h
||d
===0||(d
>0?b
.fancybox
.prev():b
.fancybox
.next())})}if(c
.showNavArrows
){if(c
.cyclic
&&j
.length
>1||n
!==0)A
.show();if(c
.cyclic
&&j
.length
>1||n
!=j
.length
-1)B
.show()}},X=function(){var a
,d
;if(j
.length
-1>n
){a
=j
[n
+1].href
;if(typeof a
!=="undefined"&&a
.match(G
)){d
=new Image
;d
.src
=a
}}if(n
>0){a
=
23 j
[n
-1].href
;if(typeof a
!=="undefined"&&a
.match(G
)){d
=new Image
;d
.src
=a
}}},L=function(){i
.css("overflow",c
.scrolling
=="auto"?c
.type
=="image"||c
.type
=="iframe"||c
.type
=="swf"?"hidden":"auto":c
.scrolling
=="yes"?"auto":"visible");if(!b
.support
.opacity
){i
.get(0).style
.removeAttribute("filter");g
.get(0).style
.removeAttribute("filter")}b("#fancybox-title").show();c
.hideOnContentClick
&&i
.one("click",b
.fancybox
.close
);c
.hideOnOverlayClick
&&x
.one("click",b
.fancybox
.close
);c
.showCloseButton
&&z
.show();W();b(window
).bind("resize.fb",
24 b
.fancybox
.center
);c
.centerOnScroll
?b(window
).bind("scroll.fb",b
.fancybox
.center
):b(window
).unbind("scroll.fb");b
.isFunction(c
.onComplete
)&&c
.onComplete(j
,n
,c
);h
=false;X()},M=function(a
){var d
=Math
.round(k
.width
+(l
.width
-k
.width
)*a
),f
=Math
.round(k
.height
+(l
.height
-k
.height
)*a
),o
=Math
.round(k
.top
+(l
.top
-k
.top
)*a
),t
=Math
.round(k
.left
+(l
.left
-k
.left
)*a
);g
.css({width
:d
+"px",height
:f
+"px",top
:o
+"px",left
:t
+"px"});d
=Math
.max(d
-c
.padding
*2,0);f
=Math
.max(f
-(c
.padding
*2+v
*a
),0);i
.css({width
:d
+"px",height
:f
+
25 "px"});if(typeof l
.opacity
!=="undefined")g
.css("opacity",a
<0.5?0.5:a
)},Y=function(a
){var d
=a
.offset();d
.top
+=parseFloat(a
.css("paddingTop"))||0;d
.left
+=parseFloat(a
.css("paddingLeft"))||0;d
.top
+=parseFloat(a
.css("border-top-width"))||0;d
.left
+=parseFloat(a
.css("border-left-width"))||0;d
.width
=a
.width();d
.height
=a
.height();return d
},Q=function(){var a
=e
.orig
?b(e
.orig
):false,d
={};if(a
&&a
.length
){a
=Y(a
);d
={width
:a
.width
+c
.padding
*2,height
:a
.height
+c
.padding
*2,top
:a
.top
-c
.padding
-20,left
:a
.left
-c
.padding
-
26 20}}else{a
=K();d
={width
:1,height
:1,top
:a
[3]+a
[1]*0.5,left
:a
[2]+a
[0]*0.5}}return d
},N=function(){u
.hide();if(g
.is(":visible")&&b
.isFunction(c
.onCleanup
))if(c
.onCleanup(j
,n
,c
)===false){b
.event
.trigger("fancybox-cancel");h
=false;return}j
=q
;n
=p
;c
=e
;i
.get(0).scrollTop
=0;i
.get(0).scrollLeft
=0;if(c
.overlayShow
){O
&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style
.visibility
!=="hidden"}).css({visibility
:"hidden"}).one("fancybox-cleanup",function(){this.style
.visibility
="inherit"});
27 x
.css({"background-color":c
.overlayColor
,opacity
:c
.overlayOpacity
}).unbind().show()}l
=T();V();if(g
.is(":visible")){b(z
.add(A
).add(B
)).hide();var a
=g
.position(),d
;k
={top
:a
.top
,left
:a
.left
,width
:g
.width(),height
:g
.height()};d
=k
.width
==l
.width
&&k
.height
==l
.height
;i
.fadeOut(c
.changeFade
,function(){var f=function(){i
.html(m
.contents()).fadeIn(c
.changeFade
,L
)};b
.event
.trigger("fancybox-change");i
.empty().css("overflow","hidden");if(d
){i
.css({top
:c
.padding
,left
:c
.padding
,width
:Math
.max(l
.width
-c
.padding
*
28 2,1),height
:Math
.max(l
.height
-c
.padding
*2-v
,1)});f()}else{i
.css({top
:c
.padding
,left
:c
.padding
,width
:Math
.max(k
.width
-c
.padding
*2,1),height
:Math
.max(k
.height
-c
.padding
*2,1)});y
.prop
=0;b(y
).animate({prop
:1},{duration
:c
.changeSpeed
,easing
:c
.easingChange
,step
:M
,complete
:f
})}})}else{g
.css("opacity",1);if(c
.transitionIn
=="elastic"){k
=Q();i
.css({top
:c
.padding
,left
:c
.padding
,width
:Math
.max(k
.width
-c
.padding
*2,1),height
:Math
.max(k
.height
-c
.padding
*2,1)}).html(m
.contents());g
.css(k
).show();if(c
.opacity
)l
.opacity
=
29 0;y
.prop
=0;b(y
).animate({prop
:1},{duration
:c
.speedIn
,easing
:c
.easingIn
,step
:M
,complete
:L
})}else{i
.css({top
:c
.padding
,left
:c
.padding
,width
:Math
.max(l
.width
-c
.padding
*2,1),height
:Math
.max(l
.height
-c
.padding
*2-v
,1)}).html(m
.contents());g
.css(l
).fadeIn(c
.transitionIn
=="none"?0:c
.speedIn
,L
)}}},F=function(){m
.width(e
.width
);m
.height(e
.height
);if(e
.width
=="auto")e
.width
=m
.width();if(e
.height
=="auto")e
.height
=m
.height();N()},Z=function(){h
=true;e
.width
=s
.width
;e
.height
=s
.height
;b("<img />").attr({id
:"fancybox-img",
30 src
:s
.src
,alt
:e
.title
}).appendTo(m
);N()},C=function(){J();var a
=q
[p
],d
,f
,o
,t
,w
;e
=b
.extend({},b
.fn
.fancybox
.defaults
,typeof b(a
).data("fancybox")=="undefined"?e
:b(a
).data("fancybox"));o
=a
.title
||b(a
).title
||e
.title
||"";if(a
.nodeName
&&!e
.orig
)e
.orig
=b(a
).children("img:first").length
?b(a
).children("img:first"):b(a
);if(o
===""&&e
.orig
)o
=e
.orig
.attr("alt");d
=a
.nodeName
&&/^(?:javascript|#)/i.test(a
.href
)?e
.href
||null:e
.href
||a
.href
||null;if(e
.type
){f
=e
.type
;if(!d
)d
=e
.content
}else if(e
.content
)f
="html";else if(d
)if(d
.match(G
))f
=
31 "image";else if(d
.match(S
))f
="swf";else if(b(a
).hasClass("iframe"))f
="iframe";else if(d
.match(/#/)){a
=d
.substr(d
.indexOf("#"));f
=b(a
).length
>0?"inline":"ajax"}else f
="ajax";else f
="inline";e
.type
=f
;e
.href
=d
;e
.title
=o
;if(e
.autoDimensions
&&e
.type
!=="iframe"&&e
.type
!=="swf"){e
.width
="auto";e
.height
="auto"}if(e
.modal
){e
.overlayShow
=true;e
.hideOnOverlayClick
=false;e
.hideOnContentClick
=false;e
.enableEscapeButton
=false;e
.showCloseButton
=false}if(b
.isFunction(e
.onStart
))if(e
.onStart(q
,p
,e
)===false){h
=false;
32 return}m
.css("padding",20+e
.padding
+e
.margin
);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(i
.children())});switch(f
){case "html":m
.html(e
.content
);F();break;case "inline":b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a
)).bind("fancybox-cleanup",function(){b(this).replaceWith(i
.children())}).bind("fancybox-cancel",function(){b(this).replaceWith(m
.children())});b(a
).appendTo(m
);F();break;case "image":h
=false;b
.fancybox
.showActivity();
33 s
=new Image
;s
.onerror=function(){P()};s
.onload=function(){s
.onerror
=null;s
.onload
=null;Z()};s
.src
=d
;break;case "swf":t
='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e
.width
+'" height="'+e
.height
+'"><param name="movie" value="'+d
+'"></param>';w
="";b
.each(e
.swf
,function(r
,R
){t
+='<param name="'+r
+'" value="'+R
+'"></param>';w
+=" "+r
+'="'+R
+'"'});t
+='<embed src="'+d
+'" type="application/x-shockwave-flash" width="'+e
.width
+'" height="'+e
.height
+'"'+w
+"></embed></object>";m
.html(t
);
34 F();break;case "ajax":a
=d
.split("#",2);f
=e
.ajax
.data
||{};if(a
.length
>1){d
=a
[0];if(typeof f
=="string")f
+="&selector="+a
[1];else f
.selector
=a
[1]}h
=false;b
.fancybox
.showActivity();E
=b
.ajax(b
.extend(e
.ajax
,{url
:d
,data
:f
,error
:P
,success:function(r
){if(E
.status
==200){m
.html(r
);F()}}}));break;case "iframe":b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date
).getTime()+'" frameborder="0" hspace="0" scrolling="'+e
.scrolling
+'" src="'+e
.href
+'"></iframe>').appendTo(m
);N();break}},$=function(){if(u
.is(":visible")){b("div",
35 u
).css("top",I
*-40+"px");I
=(I
+1)%12}else clearInterval(H
)},aa=function(){if(!b("#fancybox-wrap").length
){b("body").append(m
=b('<div id="fancybox-tmp"></div>'),u
=b('<div id="fancybox-loading"><div></div></div>'),x
=b('<div id="fancybox-overlay"></div>'),g
=b('<div id="fancybox-wrap"></div>'));if(!b
.support
.opacity
){g
.addClass("fancybox-ie");u
.addClass("fancybox-ie")}D
=b('<div id="fancybox-outer"></div>').append('<div class="fancy-bg" id="fancy-bg-n"></div><div class="fancy-bg" id="fancy-bg-ne"></div><div class="fancy-bg" id="fancy-bg-e"></div><div class="fancy-bg" id="fancy-bg-se"></div><div class="fancy-bg" id="fancy-bg-s"></div><div class="fancy-bg" id="fancy-bg-sw"></div><div class="fancy-bg" id="fancy-bg-w"></div><div class="fancy-bg" id="fancy-bg-nw"></div>').appendTo(g
);
36 D
.append(i
=b('<div id="fancybox-inner"></div>'),z
=b('<a id="fancybox-close"></a>'),A
=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),B
=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));z
.click(b
.fancybox
.close
);u
.click(b
.fancybox
.cancel
);A
.click(function(a
){a
.preventDefault();b
.fancybox
.prev()});B
.click(function(a
){a
.preventDefault();b
.fancybox
.next()});if(O
){x
.get(0).style
.setExpression("height",
37 "document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");u
.get(0).style
.setExpression("top","(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");D
.prepend('<iframe id="fancybox-hide-sel-frame" src="javascript:\'\';" scrolling="no" frameborder="0" ></iframe>')}}};
38 b
.fn
.fancybox=function(a
){b(this).data("fancybox",b
.extend({},a
,b
.metadata
?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(d
){d
.preventDefault();if(!h
){h
=true;b(this).blur();q
=[];p
=0;d
=b(this).attr("rel")||"";if(!d
||d
==""||d
==="nofollow")q
.push(this);else{q
=b("a[rel="+d
+"], area[rel="+d
+"]");p
=q
.index(this)}C();return false}});return this};b
.fancybox=function(a
,d
){if(!h
){h
=true;d
=typeof d
!=="undefined"?d
:{};q
=[];p
=d
.index
||0;if(b
.isArray(a
)){for(var f
=0,o
=a
.length
;f
<o
;f
++)if(typeof a
[f
]==
39 "object")b(a
[f
]).data("fancybox",b
.extend({},d
,a
[f
]));else a
[f
]=b({}).data("fancybox",b
.extend({content
:a
[f
]},d
));q
=jQuery
.merge(q
,a
)}else{if(typeof a
=="object")b(a
).data("fancybox",b
.extend({},d
,a
));else a
=b({}).data("fancybox",b
.extend({content
:a
},d
));q
.push(a
)}if(p
>q
.length
||p
<0)p
=0;C()}};b
.fancybox
.showActivity=function(){clearInterval(H
);u
.show();H
=setInterval($,66)};b
.fancybox
.hideActivity=function(){u
.hide()};b
.fancybox
.next=function(){return b
.fancybox
.pos(n
+1)};b
.fancybox
.prev=function(){return b
.fancybox
.pos(n
-
40 1)};b
.fancybox
.pos=function(a
){if(!h
){a
=parseInt(a
,10);if(a
>-1&&j
.length
>a
){p
=a
;C()}if(c
.cyclic
&&j
.length
>1&&a
<0){p
=j
.length
-1;C()}if(c
.cyclic
&&j
.length
>1&&a
>=j
.length
){p
=0;C()}}};b
.fancybox
.cancel=function(){if(!h
){h
=true;b
.event
.trigger("fancybox-cancel");J();e
&&b
.isFunction(e
.onCancel
)&&e
.onCancel(q
,p
,e
);h
=false}};b
.fancybox
.close=function(){function a(){x
.fadeOut("fast");g
.hide();b
.event
.trigger("fancybox-cleanup");i
.empty();b
.isFunction(c
.onClosed
)&&c
.onClosed(j
,n
,c
);j
=e
=[];n
=p
=0;c
=e
={};h
=false}
41 if(!(h
||g
.is(":hidden"))){h
=true;if(c
&&b
.isFunction(c
.onCleanup
))if(c
.onCleanup(j
,n
,c
)===false){h
=false;return}J();b(z
.add(A
).add(B
)).hide();b("#fancybox-title").remove();g
.add(i
).add(x
).unbind();b(window
).unbind("resize.fb scroll.fb");b(document
).unbind("keydown.fb");i
.css("overflow","hidden");if(c
.transitionOut
=="elastic"){k
=Q();var d
=g
.position();l
={top
:d
.top
,left
:d
.left
,width
:g
.width(),height
:g
.height()};if(c
.opacity
)l
.opacity
=1;y
.prop
=1;b(y
).animate({prop
:0},{duration
:c
.speedOut
,easing
:c
.easingOut
,
42 step
:M
,complete
:a
})}else g
.fadeOut(c
.transitionOut
=="none"?0:c
.speedOut
,a
)}};b
.fancybox
.resize=function(){var a
,d
;if(!(h
||g
.is(":hidden"))){h
=true;a
=i
.wrapInner("<div style='overflow:auto'></div>").children();d
=a
.height();g
.css({height
:d
+c
.padding
*2+v
});i
.css({height
:d
});a
.replaceWith(a
.children());b
.fancybox
.center()}};b
.fancybox
.center=function(){h
=true;var a
=K(),d
=c
.margin
,f
={};f
.top
=a
[3]+(a
[1]-(g
.height()-v
+40))*0.5;f
.left
=a
[2]+(a
[0]-(g
.width()+40))*0.5;f
.top
=Math
.max(a
[3]+d
,f
.top
);f
.left
=Math
.max(a
[2]+
43 d
,f
.left
);g
.css(f
);h
=false};b
.fn
.fancybox
.defaults
={padding
:10,margin
:20,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
:0.3,overlayColor
:"#666",titleShow
:true,titlePosition
:"outside",titleFormat
:null,transitionIn
:"fade",transitionOut
:"fade",speedIn
:300,speedOut
:300,changeSpeed
:300,changeFade
:"fast",
44 easingIn
:"swing",easingOut
:"swing",showCloseButton
:true,showNavArrows
:true,enableEscapeButton
:true,onStart
:null,onCancel
:null,onComplete
:null,onCleanup
:null,onClosed
:null};b(document
).ready(function(){aa()})})(jQuery
);