/*
	Slider plugin by Backstage Digital
*/

(function($) {	
	$.fn.slider = function(options)
	{
	   var settings = $.extend( {
		  'nItens'		: 4,
		  'time'		: 1,
		  'auto'		: false,
		  'timeAuto'	: 5,
		  'slideGroup'	: false
		}, options);
	
		return this.each(
			function()
			{
		  		var box = $(this);
		  		var nItens = settings['nItens'];
		  		var time = settings['time'];
				
		  		var setaDir = $('.setaDir',box);
		  		var setaEsq = $('.setaEsq',box);
		  		var container = $('.container',box);
		  		var content = $('.content',box);
		  		var item = $('.item',content);
		  		
		  		var _item = item.eq(0);
		  		var wItem = objectSize(_item,'width');
		  		var hItem = objectSize(_item,'height') ;
				
				var statusMove = false;
				
				function initSlider()
				{
					if(settings['auto'] != false)
					{
						item.eq(0).clone().insertAfter(item.eq(item.size()-1));
						item = $('.item',content);
						
						autoSlider();
					}
					
					container.attr('rel',0).scrollLeft(0);
					content.width(wItem*item.size());
					
					if(content.width() < nItens*wItem)
					{
						_newMargin = getSize(container,'margin-left')+objectSize(setaEsq,'width');
						container.css('margin-left',_newMargin);
						
						setaEsq.hide();
						setaDir.hide();
					}
					else
					{
						setaEsq.css('visibility','visible');
						setaDir.css('visibility','visible');
					}
				}
				
				function autoSlider()
				{
					box.oneTime(1000*settings['timeAuto'], function(){
						if(container.attr('rel') == item.size()-1)
						{
							container.scrollLeft(wItem*0);
							container.attr('rel',0);
						}
						sliderMove('next');
					});			
				}
				
				function initNav()
				{
					setaDir.mouseover(
						function()
						{
							var _rel = parseInt(container.attr('rel'));
							
							if(_rel < item.size()-nItens && !statusMove || settings['auto'] && !statusMove)
							{
								$(this).css('cursor','pointer');
								$(this).addClass('over');
							}
							else
							{
								$(this).css('cursor','default');
							}
						}
					).mouseout(
						function()
						{
							$(this).css('cursor','default');
							$(this).removeClass('over');
						}
					).click(
						function()
						{
							box.stopTime();
							sliderMove('next');
							return false;
						}
					)
					
					setaEsq.mouseover(
						function()
						{
							var _rel = parseInt(container.attr('rel'));
							
							if(_rel > 0 && !statusMove || settings['auto'] && !statusMove)
							{
								$(this).css('cursor','pointer');
								$(this).addClass('over');
							}
							else
							{
								$(this).css('cursor','default');
							}
						}
					).mouseout(
						function()
						{
							$(this).removeClass('over');
						}
					).click(
						function()
						{
							box.stopTime();
							sliderMove('previous');
							return false;
						}
					)
				}				

				function sliderMove(_type)
				{
					if(!statusMove)
					{
						var nSlideMove = 1;
						var rel = parseInt(container.attr('rel'));
						
						switch(_type)
						{
							case 'next':
								_bt = setaDir;
								
								if(settings['slideGroup'] && !settings['auto'])
								{
									if(rel+settings['slideGroup'] > item.size()-nItens)
									{
										nSlideMove = item.size()-nItens-rel;
									}
									else
									{
										nSlideMove = settings['slideGroup'];
									}
								}
								
								_n = rel+nSlideMove;
								
								break;
							case 'previous':
								_bt = setaEsq;

								if(settings['slideGroup'] && !settings['auto'])
								{
									if(rel-settings['slideGroup'] < 0)
									{
										nSlideMove = rel;
									}
									else
									{
										nSlideMove = settings['slideGroup'];
									}
								}

								_n = rel-nSlideMove;
								
								break;
						}
						
						if(_n >= 0 && _n <= item.size()-nItens)
						{
							if(_n == 0 && !settings['auto'] || _n == item.size()-nItens && !settings['auto'])
							{
								_bt.css('cursor','default');
								_bt.removeClass('over');
							}				
							
							slideTransition(_n);
						}
					}	
				}
				
				function slideTransition(n)
				{
					statusMove = true;
					
					container.stop().animate({scrollLeft: wItem*n}, time*1000,
						function()
						{
							statusMove = false;
							
							container.attr('rel',n);
							
							if(settings['auto'] != false)
							{
								switch(n)
								{
									case 0:
										container.scrollLeft(wItem*item.size()-1);
										container.attr('rel',item.size()-1);
										break;
									case item.size()-1:
										container.scrollLeft(wItem*0);
										container.attr('rel',0);
										break;
								}
								
								autoSlider();
							}
						}
					);
				}

				function objectSize(_item,_type)
				{
					var _size;
					
					switch(_type)
					{
						case 'width':
							_size = _item.width() + getSize(_item,'margin-left') + getSize(_item,'margin-right') + getSize(_item,'padding-left') + getSize(_item,'padding-right');
							break;
						case 'height':
							_size = _item.height() + getSize(_item,'margin-top') + getSize(_item,'margin-bottom') + getSize(_item,'padding-top') + getSize(_item,'padding-bottom');
							break;
					}
					
					return _size;
				}
				
				function getSize(_obj,_css)
				{
					var _regExp = new RegExp("[a-z][A-Z]","g");
					return parseFloat(_obj.css(_css).replace(_regExp, ""));
				}
				
		  		initSlider();
				initNav();
			}
		)
	}
			  
	})(jQuery);
