
(function($){$.lostbox={settings:{loaderWidth:300,inlineWidth:540,imageTypes:['png','jpg','jpeg','gif']},init:function(settings){if(settings)
$.extend($.lostbox.settings,settings);$.lostbox.settings.imageTypesRegexp=new RegExp('\.'+$.lostbox.settings.imageTypes.join('|')+'$','i');if(!$.lostbox.settings.loaded){$('body').append('<div id="overbox" style="display: none;"><div class="container"></div></div>');$.lostbox.settings.loaded=true;}},load:function(){$('#overbox .container').empty().width($.lostbox.settings.loaderWidth).append('<div class="loading"></div>');$('#overbox').css({top:getPageScroll()[1]+(getPageHeight()/10),left:0}).show();$(document).bind('keydown.lostbox',keyPressed);},show:function(data){$('#overbox .container').empty().width($.lostbox.settings.containerWidth).append(data).append('<div class="close"></div>');$('#overbox').show();$('#overbox .close').bind('click',function(){$.lostbox.close();});},populate:function(href){if(href.match($.lostbox.settings.imageTypesRegexp))
$.slide.populate(href);else{$.lostbox.load();if(href.match(/#/)){var url=href.split('#');if(url[0])
var href=(url[0]+' #'+url[1]+' > *');else{var container=$('<div class="inline"></div>').append($('#'+url[1]).clone().removeAttr('id').show());$.lostbox.settings.containerWidth=$.lostbox.settings.inlineWidth;$.lostbox.show(container);return;}}
var container=$('<div class="inline"></div>');$(container).load(href,function(){$.lostbox.settings.containerWidth=$.lostbox.settings.inlineWidth;$.lostbox.show(container);});}},close:function(){$('#overbox').fadeOut('normal',function(){$('#overbox .container').empty();});$(document).unbind('keydown.lostbox',keyPressed);$('#overbox .close').unbind('click');$.slide.settings.started=false;}};$.slide={settings:{imageLinks:[],imageTitles:[],position:0},init:function(settings,href){if(settings)
$.extend($.slide.settings,settings);$.slide.position(href);},position:function(href){var position=$.inArray(href,$.slide.settings.imageLinks);if(position!=-1)
$.slide.settings.position=position;},next:function(){$.slide.jump($.slide.settings.position+1);},prev:function(){$.slide.jump($.slide.settings.position-1);},jump:function(position){if(position>=$.slide.settings.imageLinks.length)
position=0;if(position<0)
position=$.slide.settings.imageLinks.length-1;$.slide.settings.position=position;$.slide.populate($.slide.settings.imageLinks[position]);},gallery:function(){return($.slide.settings.imageLinks.length>1);},preload:function(){if($.slide.gallery()){var position=$.slide.settings.position;var imageLinks=$.slide.settings.imageLinks;var next=new Image();next.src=imageLinks[position+1]?imageLinks[position+1]:imageLinks[0];var prev=new Image();prev.src=imageLinks[position-1]?imageLinks[position-1]:imageLinks[imageLinks.length-1];}},navigate:function(){$.slide.settings.started=true;$('#overbox .container').append('<div class="navigation"><a class="prev" href="#"></a><a class="next" href="#"></a></div>');$('#overbox .next').bind('click',function(){$.slide.next();return false;});$('#overbox .prev').bind('click',function(){$.slide.prev();return false;});},title:function(){var imageTitle=$.slide.settings.imageTitles[$.slide.settings.position];if(imageTitle)
$('#overbox .container').append('<div class="image-title">'+imageTitle+'</div>');},populate:function(href){var image=new Image();$.lostbox.load();image.onload=function(){$.lostbox.settings.containerWidth=image.width;$.lostbox.show('<img src="'+image.src+'" />');$.slide.title();if($.slide.gallery()){$.slide.navigate();$('#overbox .navigation').css({'width':image.width,'height':image.height});$('#overbox .next').css({'width':image.width/2-10,'height':image.height});$('#overbox .prev').css({'width':image.width/2-10,'height':image.height});}}
image.src=href;$.slide.preload();}};$.fn.lostbox=function(settings){$.lostbox.init(settings);var imageList=createLinkMap(this);function clickHandler(){var href=this.href;$.slide.init({imageLinks:imageList[0],imageTitles:imageList[1]},href);$.lostbox.populate(href);return false;}
this.click(clickHandler);}
function createLinkMap(elements){var imageLinks=[];var imageTitles=[];$(elements).each(function(){if(this.href.match($.lostbox.settings.imageTypesRegexp)&&$.inArray(this.href,imageLinks)==-1){imageLinks.push(this.href);imageTitles.push(this.title);}});return[imageLinks,imageTitles];}
function keyPressed(event){switch(event.keyCode){case 27:case 88:case 67:$.lostbox.close();break;case 37:case 80:if($.slide.settings.started)
$.slide.prev();break;case 39:case 78:if($.slide.settings.started)
$.slide.next();}
return false;}
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[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 createGallery(name){var lostboxLinks=$('a[rel^='+name+']');var distictGallery=[];$(lostboxLinks).each(function(){var value=$(this).attr('rel');if($.inArray(value,distictGallery)==-1){distictGallery.push(value);$('a[rel='+value+']').lostbox();}});$('#overbox .container').bind('mouseout',function(){$(document).bind('click',function(){$.lostbox.close();});});$('#overbox .container').bind('mouseover',function(){$(document).unbind('click');});}
$(function(){createGallery('lostbox');});})(jQuery);
