docs: function(direction) {
  			var self = this;
  			var this_gallery = $('#' + self.scope.id);
  			var this_gallery_item = this_gallery.find('.modaal-gallery-item');
  			var this_gallery_total = this_gallery_item.length - 1;
  
  			// if single item, don't proceed
  			if ( this_gallery_total == 0 ) {
  				return false;
  			}
  
  			var prev_btn = this_gallery.find('.modaal-gallery-prev'),
  				next_btn = this_gallery.find('.modaal-gallery-next');
  
  			var duration = 250;
  
  			var new_img_w = 0,
  				new_img_h = 0;
  
  			// CB: Before image change
  			var current_item = this_gallery.find( '.modaal-gallery-item.' + self.private_options.active_class ),
  				incoming_item = ( direction == 'next' ? current_item.next( '.modaal-gallery-item' ) : current_item.prev( '.modaal-gallery-item' ) );
  			self.options.before_image_change.call(self, current_item, incoming_item);
  
  			// stop change if at start of end
  			if ( direction == 'prev' && this_gallery.find('.gallery-item-0').hasClass('is_active') ) {
  				return false;
  			} else if ( direction == 'next' && this_gallery.find('.gallery-item-' + this_gallery_total).hasClass('is_active') ) {
  				return false;
  			}
  
  
  			// lock dimensions
  			current_item.stop().animate({
  				opacity: 0
  			}, duration, function(){
  				// Move to appropriate image
  				incoming_item.addClass('is_next').css({
  					'position': 'absolute',
  					'display': 'block',
  					'opacity': 0
  				});
  
  				// Collect doc width
  				var doc_width = $(document).width();
  				var width_threshold = doc_width > 1140 ? 280 : 50;
  
  				// start toggle to 'is_next'
  				new_img_w = this_gallery.find('.modaal-gallery-item.is_next').width();
  				new_img_h = this_gallery.find('.modaal-gallery-item.is_next').height();
  
  				var new_natural_w = this_gallery.find('.modaal-gallery-item.is_next img').prop('naturalWidth');
  				var new_natural_h = this_gallery.find('.modaal-gallery-item.is_next img').prop('naturalHeight');
  
  				// if new image is wider than doc width
  				if ( new_natural_w > (doc_width - width_threshold) ) {
  					// set new width just below doc width
  					new_img_w = doc_width - width_threshold;
  
  					// Set temp widths so we can calulate the correct height;
  					this_gallery.find('.modaal-gallery-item.is_next').css({ 'width': new_img_w });
  					this_gallery.find('.modaal-gallery-item.is_next img').css({ 'width': new_img_w });
  
  					// Set new height variable
  					new_img_h = this_gallery.find('.modaal-gallery-item.is_next').find('img').height();
  				} else {
  					// new img is not wider than screen, so let's set the new dimensions
  					new_img_w = new_natural_w;
  					new_img_h = new_natural_h;
  				}
  
  				// resize gallery region
  				this_gallery.find('.modaal-gallery-item-wrap').stop().animate({
  					'width': new_img_w,
  					'height': new_img_h
  				}, duration, function() {
  					// hide old active image
  					current_item.removeClass(self.private_options.active_class + ' ' + self.options.gallery_active_class).removeAttr('style');
  					current_item.find('img').removeAttr('style');
  
  					// show new image
  					incoming_item.addClass(self.private_options.active_class + ' ' + self.options.gallery_active_class).removeClass('is_next').css('position','');
  
  					// animate in new image (now has the normal is_active class
  					incoming_item.stop().animate({
  						opacity: 1
  					}, duration, function(){
  						$(this).removeAttr('style').css({
  							'width': '100%'
  						});
  						$(this).find('img').css('width', '100%');
  
  						// remove dimension lock
  						this_gallery.find('.modaal-gallery-item-wrap').removeAttr('style');
  
  						// CB: After image change
  						self.options.after_image_change.call( self, incoming_item );
  					});
  
  					// Focus on the new gallery item
  					this_gallery.find('.modaal-gallery-item').removeAttr('tabindex');
  					this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class + '').attr('tabindex', '0').focus();
  
  					// hide/show next/prev
  					if ( this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class).is('.gallery-item-0') ) {
  						prev_btn.stop().animate({
  							opacity: 0
  						}, 150, function(){
  							$(this).hide();
  						});
  					} else {
  						prev_btn.stop().css({
  							'display': 'block',
  							'opacity': prev_btn.css('opacity')
  						}).animate({
  							opacity: 1
  						}, 150);
  					}
  					if ( this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class).is('.gallery-item-' + this_gallery_total) ) {
  						next_btn.stop().animate({
  							opacity: 0
  						}, 150, function(){
  							$(this).hide();
  						});
  					} else {
  						next_btn.stop().css({
  							'display': 'block',
  							'opacity': prev_btn.css('opacity')
  						}).animate({
  							opacity: 1
  						}, 150);
  					}
  				});
  			});
  		}