(function($){var no_refresh=false;if(!$.fn.c1){$.fn.c1=function(name,options){if(this.c1[name]) return this.c1[name].call(this,options);return this;}} $.fn.c1.lightbox=function(options){var t=this;if(typeof options=='string'){switch(options){case'close':no_refresh=false;var close=$('#c1-lightbox-close a');close.click();return close.length>0;case'close-noRefresh':no_refresh=true;var close=$('#c1-lightbox-close a');close.click();return close.length>0;} return this;} options=$.extend({speed:'normal',thumbs:true,thumbWidth:90,thumbHeight:60,captions:true,html:false,download:false,imageMode:'',track:'',hide:'embed, object, select, iframe',type:'normal',api:false,close:true,inline:false,iframe:false,load:false,unload:false,map:false,width:false,height:false,minWidth:false,minHeight:false,fixedWidth:false,fixedHeight:false,overlayBgColor:'#000',overlayOpacity:0.75},options);if(options.map){if($.fn.c1.maps){var closeMap=true;var unloadMap=function(){GUnload();};options.inline=true;if(options.map.zoom==null) options.map.zoom=13;options.onopen=function(){$(this).c1('maps',options.map);}}else{alert('Lightbox: Please load the c1.maps API');}}else if(options.api||options.inline){if(options.api&&options.inline==false) options.inline=true;if(!options.onopen){options.onopen=function(){if(options.api){$.c1.api({'module':options.api.module,'controller':options.api.controller,'method':options.api.method,'data':jQuery.isFunction(options.api.params)?options.api.params.call(options._source):options.api.params,'success':function(data){if(options.api.result) data.html=options.api.result(data);if(data.html){$('#c1-lightbox-content').html(data.html);$('#c1-lightbox')[options.touch?'show':'fadeIn']();_resize_interface();return;} $('#c1-lightbox-close a').click();}});}else if(options.video){$('#'+options.video.id).c1('video',options.video);options.video=null;}};} options.onafterfadein=function(){if(!options.api){if(options.autoHeight) $('#c1-lightbox-images').css('height','auto');$(options.hide,options.inline).css('visibility','visible');$('#c1-lightbox-content').append($(options.inline).children());$(options.inline).trigger('c1.lightbox.open');}};if(options.onclose) options._onclose=options.onclose;options.onclose=function(){if(options._onclose) options._onclose.call(this);if(!options.api) $(options.inline).append($('#c1-lightbox-content').children());};}else if(options.type=='sprite'){options._sprite={'start':function(event){options._sprite.x=event.pageX;options._sprite.p=options.position;$('body').bind('mousemove',options._sprite.update).bind('mouseup',options._sprite.finish);},'update':function(event){var diff=options._sprite.x-event.pageX;var shift=Math.floor(diff/10)%options.images.length;var pos=options._sprite.p+shift;if(pos<0) pos+=options.images.length;else if(pos>=options.images.length) pos-=options.images.length;_show_image(pos);},'finish':function(){$('body').unbind('mousemove',options._sprite.update).unbind('mouseup',options._sprite.finish);}};options.thumbs=false;} if(options.iframe||options.onopen){if(!options.width) options.width=1000;else if(!options.resize) options.fixedWidth=true;if(!options.height) options.height=750;options.thumbs=false;if(options.onopen) options.captions=false;} var preloader,preloadNext,preloadPrev,loadingTimeout=null;var captions=false;if(!options.iframe&&!options.onopen&&!options.inline){if(options.images==null){options.images=[];options.imageCaptions=[];for(var i=0;i=0;i--){if(options.images[i]==href){position=i;break;}} _show_image(position);}else if(options.iframe){var href=$(objClicked).attr('href');for(var i=options.urls.length-1;i>=0;i--){if(options.urls[i]==href){position=i;break;}} _show_iframe(position);}else if(options.onopen){options.onopen.call($('#c1-lightbox-content').get(0),options);} $(this).c1('analytics',{'tracked':objClicked});_track_event('Open','',position);if(options.close&&window.addEventListener){window.addEventListener('hashchange',_hash_change,false);window.location.hash='lightbox-open';} return false;};function _detect_sizes(hide){var pageSizes=___getPageSize();var pageScroll=___getPageScroll();options.contentSize=(options.images?_get_url_dimensions(options.images[0]):{width:options.width,height:options.height});options.autoHeight=options.contentSize.height=='auto';if(options.autoHeight) options.contentSize.height=0;var perc_regex=/^(\d+)\%$/;var perc_width=false;if(result=perc_regex.exec(''+options.contentSize.width)){options.contentSize.width=Math.floor(pageSizes[2]*(result[1]/100));perc_width=true;} var perc_height=false;if(result=perc_regex.exec(''+options.contentSize.height)){options.contentSize.height=Math.floor(pageSizes[3]*(result[1]/100));perc_height=true;} if(pageSizes[2]>=500){options._rounding=50;options._padding=Math.round(pageSizes[3]/320)*(options._rounding/2);}else{options._rounding=10;options._padding=10;} if(options._padding=pageSizes[3]){var newHeight=Math.ceil(Math.ceil((pageSizes[3]-(options._padding*2)-options._lightboxSize.height)/options._rounding)*options._rounding);if(!perc_width&&!options.fixedWidth) options.contentSize.width=Math.ceil(options.contentSize.width*(newHeight/options.contentSize.height));if(!options.fixedHeight) options.contentSize.height=newHeight;} if((!options.fixedWidth||options.fixedWidth&&options.width>(pageSizes[2]-options._padding*2))&&(options.contentSize.width+options._lightboxSize.width+(options._padding*2))>=pageSizes[2]){var newWidth=Math.ceil(Math.ceil((pageSizes[2]-(options._padding*2)-options._lightboxSize.width)/options._rounding)*options._rounding);if(!perc_height&&!options.fixedHeight&&!options.autoHeight) options.contentSize.height=Math.ceil(options.contentSize.height*(newWidth/options.contentSize.width));options.contentSize.width=newWidth;} if(!options.fixedWidth&&options.minWidth&&options.contentSize.width0){$('#c1-lightbox-images').css({height:options.contentSize.height+'px'});} $('#c1-lightbox').css({top:pageScroll[1]+(pageSizes[3]/2)-(height/2),left:pageScroll[0]+(pageSizes[2]/2)-(width/2),width:width+'px',display:hide?'none':'block'});};var prevPosition=null;function _resize_interface(){var pageSizes=___getPageSize();var pageScroll=___getPageScroll();var lightbox=$('#c1-lightbox');var pos=pageSizes[2]+'x'+pageSizes[3]+' '+pageScroll[0]+', '+pageScroll[1];if(pos==prevPosition) return;prevPosition=pos;if(options.fullscreen||(pageSizes[2]'+'
'+'
'+ (options.thumbs?'
':'')+'
'+'
'+''+''+'
'+ ((options.captions||options.download)?('
'+(options.count?'
':'')+(options.download?'':'')+'
'):'')+'
');var pageSizes=___getPageSize();$('#c1-lightbox-overlay').css({backgroundColor:options.overlayBgColor,opacity:options.overlayOpacity,width:pageSizes[0],height:pageSizes[1]})[options.touch?'show':'fadeIn']();if(options.close==false) $('#c1-lightbox-close').hide();if(!options.images) $('#c1-lightbox-content').css('width','0px');if(!options._init&&pageSizes[2]<500){options.thumbWidth=Math.floor(options.thumbWidth*0.5);options.thumbHeight=Math.floor(options.thumbHeight*0.5);} var lightbox=$('#c1-lightbox');if(options.images) $('#c1-lightbox-thumbs ul li a').height(options.thumbHeight).width(1);options._lightboxSize={width:lightbox.width()-(options.images?1:0),height:lightbox.height()};lightbox.addClass('init');if(!options.images) $('#c1-lightbox-content').css('width','auto');_detect_sizes(true);if(!options.api){if(options.touch){$('#c1-lightbox').show();if(options.onafterfadein) options.onafterfadein.call($('#c1-lightbox-content').get(0),options);}else{$('#c1-lightbox').fadeIn(function(){if(options.onafterfadein) options.onafterfadein.call($('#c1-lightbox-content').get(0),options);});}} if(options.thumbs) _create_thumbs();$('#c1-lightbox-thumbs-icon').click(function(){var thumbs=$('#c1-lightbox-thumbs');$('#c1-lightbox-thumbs').toggleClass('hidden');});$('#c1-lightbox-thumbs-prev').click(function(){_scroll_thumbs(-1);return false;});$('#c1-lightbox-thumbs-next').click(function(){_scroll_thumbs(1);return false;});$('#c1-lightbox-image-prev').click(function(){if(options.images) _show_image(options.position-1);else if(options.iframe) _show_iframe(options.position-1);_track_event('Prev','',options.position+1);return false;});$('#c1-lightbox-image-next').click(function(){if(options.images) _show_image(options.position+1);else if(options.iframe) _show_iframe(options.position+1);_track_event('Next','',options.position+1);return false;});$('#c1-lightbox-download').click(function(){var href=this.href;if(options.download=='original') href=_get_media_url(href);if(options.touch) window.location=href;else window.open(href);return false;}).show();$('#c1-lightbox-close a'+(options.close?', #c1-lightbox-overlay':'')).click(function(){if(options.cancelClose){options.cancelClose=null;return false;} if(_finish()) _track_event('Close');return false;});if(options.images&&$.fn.c1.touch){$('#c1-lightbox').c1('touch',{'options':{'prevent_default':true,'swipe_velocity':0.3},'swipeleft swiperight swipeup swipedown':function(e){var dir=0;if(e.type=='swipeleft'||e.type=='swipedown') dir=1;else if(e.type=='swiperight'||e.type=='swipeup') dir=-1;if(dir!=0){if(options.images) _show_image(options.position+dir);else if(options.iframe) _show_iframe(options.position+dir);}},'tap':function(e){var el=$(e.target);if(el.is('a')){el.click();return false;}},'doubletap':function(e){if(!$(e.target).is('a')){$('#c1-lightbox-close a').click();return false;}}});} if(options.inline){$('#c1-lightbox-content').click(function(event){event.stopPropagation();});} $(window).resize(_resize_interface).scroll(_resize_interface);};function _create_thumbs(){if(!options.images) return;var list=$('#c1-lightbox-thumbs ul').empty();for(var i=0;i').appendTo(list).find('a').css({'background-image':'url('+url+')','width':options.thumbWidth+'px','height':options.thumbHeight+'px'}).data('pos',i);} options.thumbsListWidth=0;$('li',list).each(function(){options.thumbsListWidth+=$(this).outerWidth();});options.thumbsScrollWidth=$('#c1-lightbox-thumbs-scroll').width();if(options.thumbsScrollWidthoptions.thumbsBounds.left) pos=options.thumbsBounds.left;list.animate({left:pos+'px'},'slow');$('#c1-lightbox-thumbs-prev')[pos==options.thumbsBounds.left?'hide':'show']();$('#c1-lightbox-thumbs-next')[pos==options.thumbsBounds.right?'hide':'show']();} function _show_iframe(position){if(position<0||position==null||position>=options.urls.length) position=0;url=options.urls[position];if(!url) return;if(options.suffix){if(options.suffix.substr(0,1)=='?'&&url.indexOf('?')>=0) url+='&'+options.suffix.substr(1);else url+=options.suffix;} if(options.touch){$('#c1-lightbox-content').css({'overflow':'auto','-webkit-overflow-scrolling':'touch'});} var iframe=$('#c1-lightbox-content iframe');if(iframe.length==0) iframe=$('').appendTo('#c1-lightbox-content');iframe.attr('src',url);if(options.html) $('#c1-lightbox-caption > span').html(options.urlCaptions[position]);else $('#c1-lightbox-caption > span').text(options.urlCaptions[position]);if(options.urls.length>1){$('#c1-lightbox-image-prev')[position==0?'hide':'show']();$('#c1-lightbox-image-next')[position==(options.urls.length-1)?'hide':'show']();} options.position=position;_track_event('URL',url,position+1,true);};function _preload_images(){if(options._sprite){if(options._sprite.p==null){options._sprite.p=[];var first=0;var last=options.images.length-1;for(var i=0;i0) preloadPrev.src=_get_thumb_url(options.images[options.position-1],options.contentSize.width,options.contentSize.height,options.imageMode);if(preloadNext==null) preloadNext=new Image();if(options.position<(options.images.length-1)) preloadNext.src=_get_thumb_url(options.images[options.position+1],options.contentSize.width,options.contentSize.height,options.imageMode);}};function _loading_screen(){var existing=$('#c1-lightbox-image div');var image=$('').appendTo('#c1-lightbox-image');if(existing.length!=0){existing.stop();image.fadeIn(options.speed,function(){existing.remove();});}else{image.show();}} function _show_image(position,force){if(position<0) position=options.images.length-1;else if(position>=options.images.length) position=0;if(options.position==position&&!force) return;var src=_get_thumb_url(options.images[position],options.contentSize.width,options.contentSize.height,options.imageMode);if(options._sprite){var container=$('#c1-lightbox-image div');if(container.length==0){container=$('
').appendTo('#c1-lightbox-image').css({'cursor':'move'});container.mousedown(options._sprite.start);} container.css('background-image','url('+src+')');if(position==0) _preload_images();}else{clearTimeout(loadingTimeout);loadingTimeout=window.setTimeout(_loading_screen,250);if(preloader==null){preloader=new Image();preloader.onload=function(){window.clearTimeout(loadingTimeout);var existing=$('#c1-lightbox-image div');var image=$('
').appendTo('#c1-lightbox-image').css('background-image','url('+this.src+')');if(existing.length==0||options.touch){existing.remove();image.show();_preload_images();}else{existing.stop();image.fadeIn(options.speed,function(){existing.remove();_preload_images();});}}} if(preloader.src==src) preloader.onload();else preloader.src=src;if(options.count) $('#c1-lightbox-count').text((position+1)+' of '+options.imageCaptions.length);if(options.html||options.imageCaptions[position]=='') $('#c1-lightbox-caption > span').html(options.imageCaptions[position]?options.imageCaptions[position]:' ');else $('#c1-lightbox-caption > span').text(options.imageCaptions[position]);$('#c1-lightbox-download').attr('href',options.images[position]);if($('#c1-lightbox-thumbs:visible').length>0){$('#c1-lightbox-thumbs li.active').removeClass('active');var thumb=$($('#c1-lightbox-thumbs li').get(position)).addClass('active');if(thumb.length>0&&options.thumbsBounds){var scroll=$('#c1-lightbox-thumbs-scroll').offset();scroll.right=scroll.left+$('#c1-lightbox-thumbs-scroll').width();var bounds=thumb.offset();var shift=Math.floor(scroll.left+((scroll.right-scroll.left)/2)-(thumb.width()/2))-bounds.left;var left=(parseInt($('#c1-lightbox-thumbs ul').css('left'))+shift);if(shift!=0){if(options.position!=null) $('#c1-lightbox-thumbs ul').animate({left:left+'px'},options.speed);else $('#c1-lightbox-thumbs ul').css('left',left+'px');} $('#c1-lightbox-thumbs-prev')[position==0||left>=options.thumbsBounds.left?'hide':'show']();$('#c1-lightbox-thumbs-next')[left<=options.thumbsBounds.right?'hide':'show']();}} if(options.images.length>1){$('#c1-lightbox-image-prev')[position==0?'hide':'show']();$('#c1-lightbox-image-next')[position==(options.images.length-1)?'hide':'show']();} _track_event('Image',src,position+1,true);} options.position=position;};function _get_url_dimensions(url){if(url.match(/-(\d+)x(\d+)/)) return{width:parseInt(RegExp.$1),height:parseInt(RegExp.$2)};return null;};function _get_thumb_url(url,width,height,mode){url=url.replace(/([a-z]+)?(-)\d+x\d+([^\/]+)$/,'$2'+width+'x'+height+'$3');if(mode) url=url.replace('-'+width+'x'+height,'-'+mode+'-'+width+'x'+height);return url;};function _get_media_url(url){url=url.replace('/thumbnail/','/media/').replace(new RegExp('(/media/)\\d+/\\d+/','i'),'$1').replace(new RegExp('(/media/r\\d+/)\\d+/\\d+/','i'),'$1');return url;} function _finish(){var result=true;if(options.onclose) result=options.onclose.call($('#c1-lightbox-'+(options.images?'image':'content')).get(0));if(result==false) return false;if(options.close&&window.removeEventListener){window.removeEventListener('hashchange',_hash_change,false);if(window.location.hash=='#lightbox-open'){if(no_refresh) window.location.hash='';else window.history.back();}} if(options.inline){$(options.inline).trigger('c1.lightbox.close');}else if(options.iframe){$('#c1-lightbox iframe').attr('src','about:blank').remove();} $('#c1-lightbox').remove();if(options.touch){$('#c1-lightbox-overlay').remove();}else{$('#c1-lightbox-overlay').fadeOut(function(){$(this).remove();});} prevPosition=null;$(options.hide).css({'visibility':'visible'});$(window).unbind('resize',_resize_interface).unbind('scroll',_resize_interface);return true;};function ___getPageSize(){return[$(document).width(),$(document).height(),$(window).width(),$(window).height()];};function ___getPageScroll(){var xScroll,yScroll;if(self.pageYOffset||self.pageYOffset==0){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;};this.click(function(){return _start(this);});return this;};})(jQuery);