/*
*	
*	jQuery Photo Slider
*	Version: 1.3.0.8
*	Date: 28th April, 2009 - 19:06 GMT+1
*
*	This JavaScript function uses:	jQuery 1.2.6
*
*	(c)2009 Jelle van der Coelen. All rights reserverd
*	(c)2009 Pandament - http://www.pandament.com
*
*	Distributed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Netherlands
*	http://creativecommons.org/licenses/by-nc-sa/3.0/nl/deed.en_US
*
*/
function Slider(o, options)
{
	/**/
	if(typeof o === 'object') { var options = o; o = null; };
	
	/**/
	var defaults = {obj: (o == null ? '.slider_container' : o)};
	var defaults = 
	{
		/**/
		obj			: defaults.obj,
		
		/**/
		speed		: 200,
		width		: 250,
		count		: $(defaults.obj+' > *').length,
		seen		: 0,
		
		/**/
		fade		: false,
		fadeDelay	: 500,
		
		/**/
		automatic	: true,
		autoDelay	: 5000,
		backwards	: false,
		timer		: false,
		
		/**/
		bounce		: false,
		bounceSpeed	: 150
	};
	
	/**/
	var options = $.extend(defaults, options);

	/*
	*
	*/
	this.next = function(auto)
	{
		this.resetTimer();
		
		if(defaults.seen < (defaults.count - 1))
		{
			$(defaults.obj).animate({'marginLeft' : '-='+defaults.width+'px'}, defaults.speed);
			
			if(defaults.bounce == true)
				this.bounce($(defaults.obj));
			
			defaults.seen++;
			
			if(defaults.fade == true)
				$('#img_'+defaults.seen).hide().fadeIn(defaults.fadeDelay);
		}
		else
		{
			$(defaults.obj).animate({'marginLeft' : '0px'}, defaults.speed);
			
			if(defaults.bounce == true)
				this.bounce($(defaults.obj));
			
			defaults.seen = 0;
			
			if(defaults.fade == true)
				$(defaults.obj).find('img:first').hide().fadeIn(defaults.fadeDelay);
		};
		
		if(auto == true)
			this.auto();
			
		if(defaults.automatic == true && defaults.timer == true)
		{
			this.stop();
			this.auto();
		};
	};
	
	/*
	*
	*/
	this.previous = function(auto)
	{
		this.resetTimer();
		
		if(defaults.seen < (defaults.count) && defaults.seen != 0)
		{
			$(defaults.obj).animate({'marginLeft' : '+='+defaults.width+'px'}, defaults.speed);
			
			if(defaults.bounce == true)
				this.bounce($(defaults.obj), true);
			
			defaults.seen--;
			
			if(defaults.fade == true)
				$('#img_'+defaults.seen).hide().fadeIn(defaults.fadeDelay);
		}
		else
		{
			$(defaults.obj).animate({'marginLeft' : '-='+(defaults.width * (defaults.count - 1))+'px'}, defaults.speed);
			
			if(defaults.bounce == true)
				this.bounce($(defaults.obj), true);
			
			defaults.seen = (defaults.count - 1);
			
			if(defaults.fade == true)
				$(defaults.obj).find('img:last').hide().fadeIn(defaults.fadeDelay);
		};
		
		if(auto == true)
			this.auto();
			
		if(defaults.automatic == true && defaults.timer == true)
		{
			this.stop();
			this.auto();
		};
	};
	
	/*
	*
	*/
	this.bounce = function(obj, backwards)
	{
		if(backwards == true)
		{
			obj.animate({'marginLeft' : '-=30px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '+=30px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '-=10px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '+=10px'}, (defaults.bounceSpeed + 50));
		}
		else
		{
			obj.animate({'marginLeft' : '+=30px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '-=30px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '+=10px'}, defaults.bounceSpeed)
			   .animate({'marginLeft' : '-=10px'}, (defaults.bounceSpeed + 50));
		};
	};

	
	/*
	*
	*/
	this.auto = function(time)
	{
		defaults.automatic = true;
	
		if(time != null)
		{
			defaults.initAutoDelay  = defaults.autoDelay;
			defaults.autoDelay 		= time;
		};
		
		if(defaults.backwards == true)
			defaults.timeout = setTimeout("slider.previous(true)", defaults.autoDelay);
		else
			defaults.timeout = setTimeout("slider.next(true)", defaults.autoDelay);
		
		if(defaults.timer == true)
		{
			this.resetTimer();
			
			$('.slider_timer').animate({'width': $('.slider').css('width')}, defaults.autoDelay);
		};
	};
	
	/*
	*
	*/
	this.stop = function(reset)
	{
		defaults.automatic = false;
	
		clearTimeout(defaults.timeout);
		
		this.resetTimer();
		
		if(reset == true)
			defaults.autoDelay = defaults.initAutoDelay;
	};
	
	/*
	*
	*/
	this.resetTimer = function()
	{
		$('.slider_timer').stop().animate({'width': 0}, 1);
	};
	
	/**/
	if(defaults.automatic == true)
		this.auto();
};