/*

sqSlideshow: a simple jQuery slideshow plugin

(c)2009 Sqoo Media Ltd.

http://sqoo.co.uk

*/


jQuery.fn.sqSlideshow = function(options)
{

	//construct settings from defaults and options

	var defaults = 
	{
		prev_button 		: '<span>&lt;</span>',
		next_button 		: '<span>&gt;</span>',
		transport_position 	: 'top'
	};

	var settings = $.extend({}, defaults, options);

	//iterate though each jQuery match

	return this.each(function(options) 
	{
	
		$slide_list = $(this);
		
		// hide all slides
		$('li',$slide_list).hide();

		// add transport buttons
		sqSlideshow_add_transport($slide_list,settings);

		//display first slide	
		$first = $('li:first',$slide_list);
		$first.show();
		sqSlideshow_check_transport($slide_list,$first);

	});
}



function sqSlideshow_add_transport($slide_list,settings)
{

	//create a dom objects for transport buttons and bind events
	
	var $prev = $(settings.prev_button)
			.addClass('sqSlideshow_prev')
			.click(function(){sqSlideshow_transport_prev($slide_list)});
	var $next = $(settings.next_button)
			.addClass('sqSlideshow_next')
			.click(function(){sqSlideshow_transport_next($slide_list)});
	
	var $trans = $('<div class="sqSlideshow_transport"></div>');
	
	$trans.append($prev);
	$trans.append($next);

	//create a unique id for transport	
	transport_id = 'sqSlideshow_transport_' + $('.sqSlideshow_transport').length;
	$trans.attr('id',transport_id);

	//store in the DOM using jQuery's data function :)
	$slide_list.data('transport_id', transport_id);  
	
	//add to dom
	if (settings.transport_position == 'top')
	{
		$($slide_list).before($trans);
	}
	else
	{
		$($slide_list).after($trans);
	}
}


function sqSlideshow_transport_next($slide_list)
{

	//hide currently visible slide and show next
	$current = $('li:visible',$slide_list);
	$current = $current.hide().next().fadeIn('slow');
	sqSlideshow_check_transport($slide_list,$current);
}


function sqSlideshow_transport_prev($slide_list)
{
	//hide currently visible slide and show previous
	$current =  $('li:visible',$slide_list);
	$current = $current.hide().prev().fadeIn('slow');
	sqSlideshow_check_transport($slide_list,$current);
}


function sqSlideshow_check_transport($slide_list,$slide)
{
	//get id for the transport controls from slide list
	$transport_id = $('#' + $slide_list.data('transport_id'));
	
	//hide next button if there isnt a slide after current $slide
	if($slide.next().length)
	{
		$('.sqSlideshow_next',$transport_id).show();
	}
	else
	{
		$('.sqSlideshow_next',$transport_id).hide();
	}
	
	//hide previous button if there isnt a slide before current $slide
	if($slide.prev().length)
	{
		$('.sqSlideshow_prev',$transport_id).show();
	}
	else
	{
		$('.sqSlideshow_prev',$transport_id).hide();
	}
}