/
facebox.min.js
12 lines (12 loc) · 5.34 KB
/
facebox.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*!
* Facebox (for jQuery)
* version: 1.3
* @requires jQuery v1.2 or later
* @homepage https://github.com/defunkt/facebox
*
* Licensed under the MIT:
* http://www.opensource.org/licenses/mit-license.php
*
* Copyright Forever Chris Wanstrath, Kyle Neath
*/
(function($){$.facebox=function(data,klass){$.facebox.loading();if(data.ajax){fillFaceboxFromAjax(data.ajax,klass)}else{if(data.image){fillFaceboxFromImage(data.image,klass)}else{if(data.div){fillFaceboxFromHref(data.div,klass)}else{if($.isFunction(data)){data.call($)}else{$.facebox.reveal(data,klass)}}}}};$.extend($.facebox,{settings:{opacity:0.2,overlay:true,loadingImage:"/facebox/loading.gif",closeImage:"/facebox/closelabel.png",imageTypes:["png","jpg","jpeg","gif"],faceboxHtml:' <div id="facebox" style="display:none;"> <div class="popup"> <div class="content"> </div> <a href="#" class="close"></a> </div> </div>'},loading:function(){init();if($("#facebox .loading").length==1){return true}showOverlay();$("#facebox .content").empty().append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>');$("#facebox").show().css({top:getPageScroll()[1]+(getPageHeight()/10),left:$(window).width()/2-($("#facebox .popup").outerWidth()/2)});$(document).bind("keydown.facebox",function(e){if(e.keyCode==27){$.facebox.close()}return true});$(document).trigger("loading.facebox")},reveal:function(data,klass){$(document).trigger("beforeReveal.facebox");if(klass){$("#facebox .content").addClass(klass)}$("#facebox .content").empty().append(data);$("#facebox .popup").children().fadeIn("normal");$("#facebox").css("left",$(window).width()/2-($("#facebox .popup").outerWidth()/2));$(document).trigger("reveal.facebox").trigger("afterReveal.facebox")},close:function(){$(document).trigger("close.facebox");return false}});$.fn.facebox=function(settings){if($(this).length==0){return}init(settings);function clickHandler(){$.facebox.loading(true);var klass=this.rel.match(/facebox\[?\.(\w+)\]?/);if(klass){klass=klass[1]}fillFaceboxFromHref(this.href,klass);return false}return this.bind("click.facebox",clickHandler)};function init(settings){if($.facebox.settings.inited){return true}else{$.facebox.settings.inited=true}$(document).trigger("init.facebox");makeCompatible();var imageTypes=$.facebox.settings.imageTypes.join("|");$.facebox.settings.imageTypesRegexp=new RegExp("\\.("+imageTypes+")(\\?.*)?$","i");if(settings){$.extend($.facebox.settings,settings)}$("body").append($.facebox.settings.faceboxHtml);var preload=[new Image(),new Image()];preload[0].src=$.facebox.settings.closeImage;preload[1].src=$.facebox.settings.loadingImage;$("#facebox").find(".b:first, .bl").each(function(){preload.push(new Image());preload.slice(-1).src=$(this).css("background-image").replace(/url\((.+)\)/,"$1")});$("#facebox .close").click($.facebox.close).append('<img src="'+$.facebox.settings.closeImage+'" class="close_image" title="close">')}function getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset}else{if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft}else{if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft}}}return new Array(xScroll,yScroll)}function getPageHeight(){var windowHeight;if(self.innerHeight){windowHeight=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){windowHeight=document.documentElement.clientHeight}else{if(document.body){windowHeight=document.body.clientHeight}}}return windowHeight}function makeCompatible(){var $s=$.facebox.settings;$s.loadingImage=$s.loading_image||$s.loadingImage;$s.closeImage=$s.close_image||$s.closeImage;$s.imageTypes=$s.image_types||$s.imageTypes;$s.faceboxHtml=$s.facebox_html||$s.faceboxHtml}function fillFaceboxFromHref(href,klass){if(href.match(/#/)){var url=window.location.href.split("#")[0];var target=href.replace(url,"");if(target=="#"){return}$.facebox.reveal($(target).html(),klass)}else{if(href.match($.facebox.settings.imageTypesRegexp)){fillFaceboxFromImage(href,klass)}else{fillFaceboxFromAjax(href,klass)}}}function fillFaceboxFromImage(href,klass){var image=new Image();image.onload=function(){$.facebox.reveal('<div class="image"><img src="'+image.src+'" /></div>',klass)};image.src=href}function fillFaceboxFromAjax(href,klass){$.get(href,function(data){$.facebox.reveal(data,klass)})}function skipOverlay(){return $.facebox.settings.overlay==false||$.facebox.settings.opacity===null}function showOverlay(){if(skipOverlay()){return}if($("#facebox_overlay").length==0){$("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')}$("#facebox_overlay").hide().addClass("facebox_overlayBG").css("opacity",$.facebox.settings.opacity).click(function(){$(document).trigger("close.facebox")}).fadeIn(200);return false}function hideOverlay(){if(skipOverlay()){return}$("#facebox_overlay").fadeOut(200,function(){$("#facebox_overlay").removeClass("facebox_overlayBG");$("#facebox_overlay").addClass("facebox_hide");$("#facebox_overlay").remove()});return false}$(document).bind("close.facebox",function(){$(document).unbind("keydown.facebox");$("#facebox").fadeOut(function(){$("#facebox .content").removeClass().addClass("content");$("#facebox .loading").remove();$(document).trigger("afterClose.facebox")});hideOverlay()})})(jQuery);