]>
git.ipfire.org Git - ipfire.org.git/blob - src/static/js/jquery.lightbox.min.js
2 * jQuery lightBox plugin
3 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
4 * and adapted to me for use like a plugin from jQuery.
5 * @name jquery-lightbox-0.5.js
6 * @author Leandro Vieira Pinho - http://leandrovieira.com
9 * @category jQuery plugin
10 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
11 * @license CC Attribution-No Derivative Works 2.5 Brazil - http://creativecommons.org/licenses/by-nd/2.5/br/deed.en_US
12 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
14 (function($){$.fn
.lightBox=function(settings
){settings
=jQuery
.extend({overlayBgColor
:'#000',overlayOpacity
:0.8,fixedNavigation
:false,imageLoading
:'/static/images/lightbox/lightbox-ico-loading.gif',imageBtnPrev
:'/static/images/lightbox/lightbox-btn-prev.gif',imageBtnNext
:'/static/images/lightbox/lightbox-btn-next.gif',imageBtnClose
:'/static/images/lightbox/lightbox-btn-close.gif',imageBlank
:'/static/images/lightbox/lightbox-blank.gif',containerBorderSize
:10,containerResizeSpeed
:400,txtImage
:'Image',txtOf
:'of',keyToClose
:'c',keyToPrev
:'p',keyToNext
:'n',imageArray
:[],activeImage
:0},settings
);var jQueryMatchedObj
=this;function _initialize(){_start(this,jQueryMatchedObj
);return false;}
15 function _start(objClicked
,jQueryMatchedObj
){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings
.imageArray
.length
=0;settings
.activeImage
=0;if(jQueryMatchedObj
.length
==1){settings
.imageArray
.push(new Array(objClicked
.getAttribute('href'),objClicked
.getAttribute('title')));}else{for(var i
=0;i
<jQueryMatchedObj
.length
;i
++){settings
.imageArray
.push(new Array(jQueryMatchedObj
[i
].getAttribute('href'),jQueryMatchedObj
[i
].getAttribute('title')));}}
16 while(settings
.imageArray
[settings
.activeImage
][0]!=objClicked
.getAttribute('href')){settings
.activeImage
++;}
17 _set_image_to_view();}
18 function _set_interface(){$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="'+settings
.imageLoading
+'"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="'+settings
.imageBtnClose
+'"></a></div></div></div></div>');var arrPageSizes
=___getPageSize();$('#jquery-overlay').css({backgroundColor
:settings
.overlayBgColor
,opacity
:settings
.overlayOpacity
,width
:arrPageSizes
[0],height
:arrPageSizes
[1]}).fadeIn();var arrPageScroll
=___getPageScroll();$('#jquery-lightbox').css({top
:arrPageScroll
[1]+(arrPageSizes
[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left
:arrPageScroll
[0]});});}
19 function _set_image_to_view(){$('#lightbox-loading').show();if(settings
.fixedNavigation
){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}
20 var objImagePreloader
=new Image();objImagePreloader
.onload=function(){$('#lightbox-image').attr('src',settings
.imageArray
[settings
.activeImage
][0]);_resize_container_image_box(objImagePreloader
.width
,objImagePreloader
.height
);objImagePreloader
.onload=function(){};};objImagePreloader
.src
=settings
.imageArray
[settings
.activeImage
][0];};function _resize_container_image_box(intImageWidth
,intImageHeight
){var intCurrentWidth
=$('#lightbox-container-image-box').width();var intCurrentHeight
=$('#lightbox-container-image-box').height();var intWidth
=(intImageWidth
+(settings
.containerBorderSize
*2));var intHeight
=(intImageHeight
+(settings
.containerBorderSize
*2));var intDiffW
=intCurrentWidth
-intWidth
;var intDiffH
=intCurrentHeight
-intHeight
;$('#lightbox-container-image-box').animate({width
:intWidth
,height
:intHeight
},settings
.containerResizeSpeed
,function(){_show_image();});if((intDiffW
==0)&&(intDiffH
==0)){if($.browser
.msie
){___pause(250);}else{___pause(100);}}
21 $('#lightbox-container-image-data-box').css({width
:intImageWidth
});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height
:intImageHeight
+(settings
.containerBorderSize
*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings
.imageArray
[settings
.activeImage
][1]){$('#lightbox-image-details-caption').html(settings
.imageArray
[settings
.activeImage
][1]).show();}
22 if(settings
.imageArray
.length
>1){$('#lightbox-image-details-currentNumber').html(settings
.txtImage
+' '+(settings
.activeImage
+1)+' '+settings
.txtOf
+' '+settings
.imageArray
.length
).show();}}
23 function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings
.imageBlank
+') no-repeat'});if(settings
.activeImage
!=0){if(settings
.fixedNavigation
){$('#lightbox-nav-btnPrev').css({'background':'url('+settings
.imageBtnPrev
+') left 15% no-repeat'}).unbind().bind('click',function(){settings
.activeImage
=settings
.activeImage
-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings
.imageBtnPrev
+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings
.imageBlank
+') no-repeat'});}).show().bind('click',function(){settings
.activeImage
=settings
.activeImage
-1;_set_image_to_view();return false;});}}
24 if(settings
.activeImage
!=(settings
.imageArray
.length
-1)){if(settings
.fixedNavigation
){$('#lightbox-nav-btnNext').css({'background':'url('+settings
.imageBtnNext
+') right 15% no-repeat'}).unbind().bind('click',function(){settings
.activeImage
=settings
.activeImage
+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings
.imageBtnNext
+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings
.imageBlank
+') no-repeat'});}).show().bind('click',function(){settings
.activeImage
=settings
.activeImage
+1;_set_image_to_view();return false;});}}
25 _enable_keyboard_navigation();}
26 function _enable_keyboard_navigation(){$(document
).keydown(function(objEvent
){_keyboard_action(objEvent
);});}
27 function _disable_keyboard_navigation(){$(document
).unbind();}
28 function _keyboard_action(objEvent
){if(objEvent
==null){keycode
=event
.keyCode
;escapeKey
=27;}else{keycode
=objEvent
.keyCode
;escapeKey
=objEvent
.DOM_VK_ESCAPE
;}
29 key
=String
.fromCharCode(keycode
).toLowerCase();if((key
==settings
.keyToClose
)||(key
=='x')||(keycode
==escapeKey
)){_finish();}
30 if((key
==settings
.keyToPrev
)||(keycode
==37)){if(settings
.activeImage
!=0){settings
.activeImage
=settings
.activeImage
-1;_set_image_to_view();_disable_keyboard_navigation();}}
31 if((key
==settings
.keyToNext
)||(keycode
==39)){if(settings
.activeImage
!=(settings
.imageArray
.length
-1)){settings
.activeImage
=settings
.activeImage
+1;_set_image_to_view();_disable_keyboard_navigation();}}}
32 function _preload_neighbor_images(){if((settings
.imageArray
.length
-1)>settings
.activeImage
){objNext
=new Image();objNext
.src
=settings
.imageArray
[settings
.activeImage
+1][0];}
33 if(settings
.activeImage
>0){objPrev
=new Image();objPrev
.src
=settings
.imageArray
[settings
.activeImage
-1][0];}}
34 function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});}
35 function ___getPageSize(){var xScroll
,yScroll
;if(window
.innerHeight
&&window
.scrollMaxY
){xScroll
=window
.innerWidth
+window
.scrollMaxX
;yScroll
=window
.innerHeight
+window
.scrollMaxY
;}else if(document
.body
.scrollHeight
>document
.body
.offsetHeight
){xScroll
=document
.body
.scrollWidth
;yScroll
=document
.body
.scrollHeight
;}else{xScroll
=document
.body
.offsetWidth
;yScroll
=document
.body
.offsetHeight
;}
36 var windowWidth
,windowHeight
;if(self
.innerHeight
){if(document
.documentElement
.clientWidth
){windowWidth
=document
.documentElement
.clientWidth
;}else{windowWidth
=self
.innerWidth
;}
37 windowHeight
=self
.innerHeight
;}else if(document
.documentElement
&&document
.documentElement
.clientHeight
){windowWidth
=document
.documentElement
.clientWidth
;windowHeight
=document
.documentElement
.clientHeight
;}else if(document
.body
){windowWidth
=document
.body
.clientWidth
;windowHeight
=document
.body
.clientHeight
;}
38 if(yScroll
<windowHeight
){pageHeight
=windowHeight
;}else{pageHeight
=yScroll
;}
39 if(xScroll
<windowWidth
){pageWidth
=xScroll
;}else{pageWidth
=windowWidth
;}
40 arrayPageSize
=new Array(pageWidth
,pageHeight
,windowWidth
,windowHeight
);return arrayPageSize
;};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
;}
41 arrayPageScroll
=new Array(xScroll
,yScroll
);return arrayPageScroll
;};function ___pause(ms
){var date
=new Date();curDate
=null;do{var curDate
=new Date();}
42 while(curDate
-date
<ms
);};return this.unbind('click').click(_initialize
);};})(jQuery
);