(function($){
$.fn.lightBox=function(settings){
settings=jQuery.extend({
overlayBgColor:
'#000'
,
overlayOpacity:0.8,
fixedNavigation:false,
imageLoading:
'loading.gif'
,
imageBtnPrev:
'prev.gif'
,
imageBtnNext:
'next.gif'
,
imageBtnClose:
'close.gif'
,
imageBlank:
'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;
}
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'
)));}}
while (settings.imageArray[settings.activeImage][0] !=objClicked.getAttribute(
'href'
)){settings.activeImage++;}
_set_image_to_view();}
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]});});}
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();}
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);}}
 $(
'#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();}
if (settings.imageArray.length>1){$(
'#lightbox-image-details-currentNumber'
).html(settings.txtImage+
' '
+(settings.activeImage+1)+
' '
+settings.txtOf+
' '
+settings.imageArray.length).show();}}
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;});}}
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;});}}
_enable_keyboard_navigation();}
function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});}
function _disable_keyboard_navigation(){$(document).unbind();}
function _keyboard_action(objEvent){
if (objEvent==null){keycode=event.keyCode;escapeKey=27;
} else {keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;}
key=String.fromCharCode(keycode).toLowerCase();
if ((key==settings.keyToClose)||(key==
'x'
)||(keycode==escapeKey)){_finish();}
if ((key==settings.keyToPrev)||(keycode==37)){
if (settings.activeImage !=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}}
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();}}}
function _preload_neighbor_images(){if ((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];}
if (settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}}
function _finish(){$(
'#jquery-lightbox'
).remove();$(
'#jquery-overlay'
).fadeOut(function(){$(
'#jquery-overlay'
).remove();});
$(
'embed, object, select'
).css({
'visibility'
:
'visible'
});}
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;}
var windowWidth,windowHeight;if (self.innerHeight){
if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;} else {windowWidth=self.innerWidth;}
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;}
if(yScroll<windowHeight){pageHeight=windowHeight;} else {pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=xScroll;} else {pageWidth=windowWidth;}
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;}
arrayPageScroll=new Array(xScroll,yScroll);return arrayPageScroll;};
function ___pause(ms){var date=new Date();curDate=null;do {var curDate=new Date();}
while (curDate-date<ms);};
return this.unbind(
'click'
).click(_initialize);};})(jQuery);
