
(function($,doc){$.fn.thumbox=function(settings){var defaults={thumbs:5,overlayColor:'#999',overlayOpacity:0.8,overlaySpeed:500,scrollSpeed:500,zoomSpeed:250,showOne:false,preventImgOverflow:true,keyboardNavigation:true,wheelNavigation:true,showLabel:true,labelPosition:'bottom',descAttr:'alt',dockPosition:'top',timeOut:15,maxThumbWidth:0,maxThumbHeight:0,openImageEffect:'linear',closeImageEffect:'linear',scrollDockEffect:'linear'};settings=$.extend(defaults,settings);var _sputinyk=[];var _locked=undefined;var _width=undefined;var _page=undefined;var _qtdImgs=undefined;var _currentImage=undefined;var _coordToCloseImg=false;var _isSingleImg=false;var _wasAborted=false;var _clockTimeOut=0;$all=$(this);storeData=function(el,data){for(key in data)el.data(key,data[key]);return}
$all.each(function(k,matched){objList=(matched.tagName=='A')?$(matched):$(matched).find('a');if(objList.size()==1){storeData(objList,settings);$(objList).bind('click',function(e){$(this).blur();e.preventDefault();_wasAborted=false;img=$(this).find('img');label=$(img).attr(settings.descAttr);big=$(this).attr('href');coord={left:$(img).offset().left,top:$(img).offset().top,width:$(img).outerWidth(),height:$(img).outerHeight()}
openImageFromPage(big,label,coord,settings);})}else{objList.each(function(i,e){$(e).bind('click',function(e){e.preventDefault();$(this).blur();_wasAborted=false;showDock($(this).data('objlist'),$(this).data('params'),$(this).data('indeximg'))});storeData($(e),{'indeximg':i+1,'params':settings,'objlist':$(matched)});$(e).find('img').data('big',$(e).attr('href'));if(settings.showOne&&(i>0)){$(e).css({'position':'absolute','left':-5000,'top':-3000});}});}});getDim=function(wImg,hImg,dW,dH){if(wImg>dW){hImg=hImg/(wImg/dW);wImg=dW;}
if(hImg>dH){wImg=wImg/(hImg/dH);hImg=dH;}
return[wImg,hImg]}
showDock=function(objs,params,autoopen){setPlParams(params);_wasAborted=false;showLoader();maxThumbW=(getPlParam('maxThumbWidth')===0)?1000000:getPlParam('maxThumbWidth');maxThumbH=(getPlParam('maxThumbHeight')===0)?1000000:getPlParam('maxThumbHeight');cls=false;pgs='<div class="thumbox-page" page="1">';qtd=$(objs).find('a').find('img').size();pag=1;$(objs).find('a').find('img').each(function(i,e){src=$(e).attr('src');big=$(e).data('big');lbl=$(e).attr('alt');widthThumb=$(e).width();heightThumb=$(e).height();newSizes=getDim(widthThumb,heightThumb,maxThumbW,maxThumbH);widthThumb=newSizes[0];heightThumb=newSizes[1];pgs+='<img src="'+src+'" alt="'+lbl+'" big="'+big+'" imgindex="'+(i+1)+'" width="'+widthThumb+'" height="'+heightThumb+'" />';if(!((i+1)%getPlParam('thumbs'))){pgs+='</div>';cls=true;if((i+1)<qtd){pag=pag+1;pgs+='<div class="thumbox-page" page="'+pag+'">';cls=false;}}});if(!cls){pgs+='</div>'}
$('body').append('<div id="thumbox-dock"><div class="thumbox-arrowdock thumbox-leftarrow" arrowdir="p"></div><div class="thumbox-scrollerpages"><div class="thumbox-pages">'+pgs+'</div></div><div class="thumbox-arrowdock thumbox-rightarrow" arrowdir="n"></div></div>');hd=$('.thumbox-scrollerpages').height();$('.thumbox-page > img').each(function(i,e){v=(hd-$(e).attr('height'))/2-2;$(e).css('margin-bottom',v);})
$('.thumbox-page > img').bind('click',function(e){if(isLocked())return;openImageFromDock($(e.target).attr('imgindex'));}).bind('mouseover',function(e){$(e.target).addClass('thumbox-hoverImage');}).bind('mouseout',function(e){$(e.target).removeClass('thumbox-hoverImage');});$('.thumbox-arrowdock').bind('click',function(e){if(isLocked())return;page=_page;goToPage(($(e.target).attr('arrowdir')=='n')?page+1:page-1);});if(getPlParam('wheelNavigation')){attatchWheelEvent();}
if(getPlParam('keyboardNavigation')){$(document).bind('keydown',keyboardNav);}
$('#thumbox-dock > .thumbox-leftarrow').fadeTo(0,0.1);if($('.thumbox-page').size()==1){$('#thumbox-dock > .thumbox-rightarrow').fadeTo(0,0.1);}
wmax=hmax=0;$('.thumbox-page').each(function(i,e){if($(e).width()>wmax)wmax=$(e).width();if($(e).height()>hmax)hmax=$(e).height();});$('.thumbox-page, .thumbox-scrollerpages, #thumbox-dock').css({'width':wmax,'height':hmax});$('.thumbox-pages').css({'width':wmax*$('.thumbox-page').size()});$('.thumbox-arrowdock').css({'height':hmax});showOverlay();_locked=true;_width=wmax;_page=1;_qtdImgs=qtd;_currentImage=false;_coordToCloseImg=false;_isSingleImg=false;tTop=(getPlParam('dockPosition')=='top')?($(document).scrollTop()+10):($(window).height()+$(document).scrollTop()-$('#thumbox-dock').height()-10);$('#thumbox-dock').css({'top':tTop,'width':wmax+40,left:($(window).width()/2)-(wmax/2)-20}).hide().fadeIn(getPlParam('overlaySpeed'),function(){unlockHandlers();if(autoopen!=undefined){goToPage(Math.ceil(autoopen/getPlParam('thumbs')),autoopen)}})};var attatchWheelEvent=function(){if(document.attachEvent){document.attachEvent("onmousewheel",thumboxWheel);}else{if(window.addEventListener)window.addEventListener($.browser.mozilla?'DOMMouseScroll':'mousewheel',thumboxWheel,false);}}
var deattatchWheelEvent=function(){if(document.detachEvent){document.detachEvent("onmousewheel",thumboxWheel);}else{if(window.removeEventListener)window.removeEventListener($.browser.mozilla?'DOMMouseScroll':'onmousewheel',thumboxWheel,false);}}
var thumboxWheel=function(event){if(($.browser.msie&&(Number($.browser.version)<8))||$.browser.opera){return;}
var delta=0;if(!event)
event=window.event;if(event.wheelDelta){delta=event.wheelDelta/120;if(window.opera)delta=-delta;}
else
if(event.detail)delta=-event.detail/3;if(delta){if(delta>0){if(isLocked())return;openPrev();}else{if(isLocked())return;openNext();};}}
var lockHandlers=function(){_locked=true}
var unlockHandlers=function(){_locked=false}
var isLocked=function(){return _locked}
var isSingleImg=function(){return _isSingleImg}
var keyboardNav=function(evt){if(evt.keyCode==27){_wasAborted=true;closeDock();return;}
if((!getPlParam('keyboardNavigation'))||(jQuery.inArray(evt.keyCode,[39,40,13,32,37,38,8,27,36,35])==-1))return;evt.preventDefault();if(isLocked())return;switch(evt.keyCode){case 39:case 40:case 13:case 32:if(!isSingleImg())openNext()
break;case 37:case 38:case 8:if(!isSingleImg())openPrev()
break;case 36:if(!isSingleImg())openImageFromDock(1)
break;case 35:if(!isSingleImg())openImageFromDock(_qtdImgs)
break;case 27:closeDock();break;}}
var unbindKeyboardEvt=function(){$(document).unbind('keydown',keyboardNav);deattatchWheelEvent();}
var showLoader=function(){if($('#thumbox-loader').size())return;$('body').append('<div id="thumbox-loader"></div>');$('#thumbox-loader').css({left:$(window).width()/2-64,top:$(window).height()/2+$(document).scrollTop()-7})}
var hideLoader=function(){$('#thumbox-loader').remove()}
var openNext=function(){openImageFromDock(_currentImage+1)}
var openPrev=function(){openImageFromDock(_currentImage-1)}
var setPlParams=function(listValues){_sputinyk=listValues;if($.easing.def==undefined){_sputinyk.openImageEffect='linear';_sputinyk.closeImageEffect='linear';_sputinyk.scrollDockEffect='linear';}}
var getPlParam=function(param){return _sputinyk[param]}
var openImageFromPage=function(big,label,coord,params){setPlParams(params);_isSingleImg=true;showLoader();showOverlay();showImage(coord,big,label,undefined);if(getPlParam('wheelNavigation')){attatchWheelEvent();}
if(getPlParam('keyboardNavigation')){$(window).bind('keydown',keyboardNav);}}
var openImageFromDock=function(imgindex){if(imgindex<1)return;if(imgindex>_qtdImgs)return;if(_currentImage==imgindex)return;lockHandlers();page=Math.ceil(imgindex/getPlParam('thumbs'));if(_page!=page){goToPage(page,imgindex);return;}
$('.thumbox-page > img').removeClass('thumbox-currentImage');$('.thumbox-page').find('img[imgindex="'+imgindex+'"]').addClass('thumbox-currentImage');_currentImage=imgindex
thumb=$('.thumbox-page > img[imgindex="'+imgindex+'"]');urlImg=$(thumb).attr('big');label=$(thumb).attr(getPlParam('descAttr'));showLoader();if($('#thumbox-image').size()){closeImage(imgindex);return;}
cord={left:$(thumb).offset().left+5,top:$(thumb).offset().top+5,width:$(thumb).outerWidth()-10,height:$(thumb).outerHeight()-10}
showImage(cord,urlImg,label,imgindex);}
var showImage=function(cord,urlImg,label,imgindex){_coordToCloseImg=cord;var img=document.createElement('img');$('body').append(img);_clockTimeOut=0;var timeOutThumbox=setInterval(function(){if(_clockTimeOut>getPlParam('timeOut')){clearInterval(timeOutThumbox);_wasAborted=true;closeDock();closeOverlay();}},1000);$(img).hide().attr('src',urlImg);var objImagePreloader=new Image();objImagePreloader.onerror=null;objImagePreloader.onload=function(){clearInterval(timeOutThumbox);hideLoader();if(_wasAborted){$(img).remove();return;}
img.id='thumbox-image';img.src=urlImg;if(getPlParam('preventImgOverflow')){diff=34;if(getPlParam('showLabel'))diff+=60;newDim=getDim(objImagePreloader.width,objImagePreloader.height,$(window).width(),($(window).height()-diff));imgWidth=newDim[0];imgHeight=newDim[1];}else{imgWidth=objImagePreloader.width;imgHeight=objImagePreloader.height;}
$(img).css(cord).show().animate({left:($(window).width()/2)-(imgWidth/2),top:($(window).height()/2)-(imgHeight/2)+$(document).scrollTop(),width:imgWidth,height:imgHeight},{"easing":getPlParam('openImageEffect'),duration:getPlParam('zoomSpeed'),complete:function(){if(_wasAborted)return;$('body').append('<div id="thumbox-border"></div>');pos=jQuery(img).position();$('#thumbox-border').hide().css({width:imgWidth+12,height:imgHeight+12,left:pos.left-6,top:pos.top-6}).fadeIn('normal',function(){unlockHandlers();$('body').append('<div id="thumbox-close"></div>');$('#thumbox-close').bind('click',function(){if(isLocked())return;closeDock();}).css({left:pos.left-12+imgWidth,top:pos.top-6-12});});if((imgindex!=1)&&(imgindex!=undefined)){$('body').append('<div id="thumbox-buttonPrev"></div>');$('#thumbox-buttonPrev').bind('click',function(){if(isLocked())return;openPrev()})}
if((imgindex!=_qtdImgs)&&(imgindex!=undefined)){$('body').append('<div id="thumbox-buttonNext"></div>');$('#thumbox-buttonNext').bind('click',function(){if(isLocked())return;openNext()})}
topBtn=pos.top+imgHeight/2-33;$('#thumbox-buttonPrev').css({top:topBtn,left:pos.left-51});$('#thumbox-buttonNext').css({top:topBtn,left:pos.left+imgWidth+10});if(!$.browser.msie){$('#thumbox-buttonPrev, #thumbox-buttonNext').hide().fadeIn();}
if(getPlParam('showLabel')&&(label!='')&&(label!=undefined)){$('body').append('<div id="thumbox-label"></div>');$('#thumbox-label').html(label);topPosLabel=(getPlParam('labelPosition')=='bottom')?pos.top+imgHeight+10:pos.top-25-$('#thumbox-label').height();$('#thumbox-label').css({top:topPosLabel,left:pos.left+(imgWidth/2)-($('#thumbox-label').width()/2)});if(!$.browser.msie){$('#thumbox-label').hide().fadeIn();}}}});objImagePreloader.onload=function(){};};objImagePreloader.src=urlImg;}
var showOverlay=function(){$('body').append('<div id="thumbox-overlay"></div>').css({'overflow':'hidden'});$('#thumbox-overlay').bind('click',function(){_wasAborted=true;closeDock()}).css({'width':$(window).width(),'height':$(document).height(),'background':getPlParam('overlayColor')}).fadeTo(getPlParam('overlaySpeed'),getPlParam('overlayOpacity'));}
var closeOverlay=function(){$('#thumbox-overlay').fadeOut(getPlParam('overlaySpeed'),function(){$('#thumbox-overlay').remove().unbind();hideLoader();$('body').css({'overflow':'auto'});});}
var goToPage=function(goTo,autoopen){page=_page;move=true;if(goTo==page)move=false;dir=(goTo>page)?'n':'p';siz=Math.abs(goTo-page)*_width;if((dir=='p')&&(page==1))move=false;if((dir=='n')&&(page>=$('.thumbox-page').size()))move=false;if(!move){if(autoopen!=undefined){openImageFromDock(autoopen);}else{unlockHandlers();}
return;}else{walk=((dir=='n')?'-':'+')+'='+siz;_page=goTo;_coordToCloseImg=false;if(goTo==1){$('#thumbox-dock > .thumbox-leftarrow').fadeTo('normal',0.1)}else{$('#thumbox-dock > .thumbox-leftarrow').fadeTo('normal',1.0)}
if(goTo==$('.thumbox-page').size()){$('#thumbox-dock > .thumbox-rightarrow').fadeTo('normal',0.1)}else{$('#thumbox-dock > .thumbox-rightarrow').fadeTo('normal',1.0)}
$('.thumbox-pages').animate({left:walk},{easing:getPlParam('scrollDockEffect'),duration:getPlParam('scrollSpeed'),complete:function(){if(autoopen!=undefined){openImageFromDock(autoopen)}else{unlockHandlers()}}})}}
var hideControls=function(){$('#thumbox-border').remove();els='#thumbox-close, #thumbox-buttonNext, #thumbox-buttonPrev, #thumbox-label';if(!$.browser.msie){$(els).unbind().fadeOut('fast',function(){$(els).remove();});}else{$(els).unbind().remove();}}
var closeImage=function(open,toCloseDock){if($('#thumbox-image').size()){hideControls();if(_coordToCloseImg!=false){coord=_coordToCloseImg}else{coord={left:($(window).width()/2),top:($(window).height()/2)+$(document).scrollTop(),width:0,height:0}}
$('#thumbox-image').animate(coord,{easing:getPlParam('closeImageEffect'),duration:getPlParam('zoomSpeed'),complete:function(){$('#thumbox-image').remove();_currentImage=false
if(open!=undefined){openImageFromDock(open);}else{unbindKeyboardEvt();}
if(toCloseDock!=undefined)closeDock();}});}}
var closeDock=function(){lockHandlers();if($('#thumbox-image').size()){closeImage(undefined,true);}else{unbindKeyboardEvt();if($('#thumbox-dock').size()){hideControls();$('#thumbox-dock').fadeOut(getPlParam('overlaySpeed'),function(){hideLoader();$('.thumbox-arrowdock, .thumbox-page > img').unbind();$('#thumbox-dock').remove();closeOverlay();});}else{closeOverlay();}}};};})(jQuery,document)
