/**
 *	jquery.panelslider.js
 *
 *	Javascript panel slider using JQuery.
 *
 *	@author	:	A.Surrey
 *	@version:	0.1
 */
(function($)
{	
	/**
	 *	panelSlider Fucntion
	 */
	$.fn.panelSlider = function( settings )
	{
		/**
		 *	Default settings, merge these with settings in parameters
		 */
		settings = jQuery.extend(
		{
    		panelClass	:	'.thumbsBoxInner',				// Class name of the inner panels
			activeClass	:	'thumbsInView',					// Class given to the active panel
			prevButton	:	'#thumbButtonBox > .prevBtn',	// Button to be used as prev button
			nextButton	:	'#thumbButtonBox > .nextBtn'	// Button to be used as next button	
  		}, settings);
	
		var $slider = $(this);
		var $prevBtn = $( settings.prevButton );
		var $nextBtn = $( settings.nextButton );
		var numPanels = $slider.find(settings.panelClass).length;
		var panelWidth = $slider.find(settings.panelClass).width();
	
		/**
		 *	Custom event to reset the slider
		 */
		$slider.bind("resetSlider", 
			function( ev )
			{
				showButtons();
			});
		/**
		 *	Each matching element
		 */
		return this.each(function()
		{			
			$slider.width( panelWidth * numPanels ); // Make slider big enough for all panels
			$( settings.panelClass + ":first" ).addClass( settings.activeClass ); // Make first panel active
			showButtons();
			/**
			 *	Attach events to buttons
			 */
			 $nextBtn.click(function()
				{
					next();
					return false; // don't follow links
				});
			 $prevBtn.click(function()
				{
					prev();
					return false; // don't follow links
				});
			
			
		});//each
		
		/**
	 	 *	Do we have more panels to the right?
	 	 */
		function hasNext()
		{
			var $next = $( "." + settings.activeClass ).next( settings.panelClass ).length;
			if( $next > 0 ) return true;
			else return false;
		};
		/**
	 	 *	Do we have more panels to the left?
	 	 */
		function hasPrev()
		{
			var $prev = $( "." + settings.activeClass ).prev( settings.panelClass ).length;
			if( $prev > 0 ) return true;
			else return false;
		};
		
		/**
		 *	Move to the next div to the right
		 */
		function next()
		{
			if( hasNext() )
			{
				$slider.animate({ left: "-=" + panelWidth },{ queue: true });
				$( "." + settings.activeClass ).removeClass( settings.activeClass ).next( settings.panelClass ).addClass( settings.activeClass );
			}
			showButtons();
		};
		
		/**
		 *	Move next panel to the left
		 */
		function prev()
		{
			if( hasPrev() )
			{
				$slider.animate({ left: '+=' + panelWidth },{ queue: true });
				$( "." + settings.activeClass ).removeClass( settings.activeClass ).prev( settings.panelClass ).addClass( settings.activeClass );
			}
			showButtons();
		};
		
		/**
		 *	show or hide appropriate buttons
		 */
		function showButtons()
		{
			if( !hasNext() ) $nextBtn.hide(); // Hide next button if no more right
			else $nextBtn.show();
			if( !hasPrev() ) $prevBtn.hide();
			else $prevBtn.show();
		};
		
	};
		
})(jQuery); // Pass jQuery object in as $