/*
 *	Author Felipe Silva
 *
 *	Example:
 *	$('.slide').slideshow();
 *
 **/

(function($) {
	
	$.extend({
		slideshow: {
			init: function(slide, options){
				this.slide = $(slide);
				this.options = $.extend({
					interval: 8
				}, options);

				this.hideNav();
				this.bindNavEvents();

				//Ativa o primeiro slide;
				$('.slide-nav').find('a:first').trigger('mouseover');

				this.interval();
			},
			/**
				Aplica eventos nos items de navegacao do slide
				@params {jQuery object} $slide O slide que sera ativado
			**/
			active: function( $slide ){
				$slide.show().siblings().hide();
			},
			/**
				Periodo que leva para transicao de um slide para o outro
			**/
			interval: function(){
				_self = this;
				if (this.options.interval)
					this.slideInterval = setInterval( _self.change, this.options.interval*1000 );
			},
			/**
				Muda de um slide para o outro, verifica se eh o ultimo slide
			**/
			change: function(){
				if ( !$('.slide-nav > li.on').hasClass('ultimo') ) {
					$('.slide-nav > li.on').next().find('a:first').trigger('mouseover');
					this._self.interval();
				} else {
					$('.slide-nav > li:first').find('a:first').trigger('mouseover');
					this._self.interval();
				}
			},
			/**
				Oculta o navegador caso só exista um slide
			**/
			hideNav: function(){
				$nav = $('.slide-nav');						
				if ( $nav.find('li').length <= 1 ){
					$nav.hide();
					$('div.backSlide-nav').hide();
				}
			},
			/**
				Aplica eventos nos items de navegacao do slide
			**/
			bindNavEvents: function(){
				var _self = this;
				$('.slide-nav').find('a')
					//.unbind('.slide_nav')
					.bind('mouseover.slide_nav', function(){

						//console.log("mouseover .......");
						
						var $navItems = $(this);

						//Ativa o slide clicado e oculta os demais
						_self.active ( $($navItems.attr('href')) );

						//Marca o slide ativo
						$navItems.parents('li:first').addClass('on').siblings().removeClass('on');

						//clear interval
						clearInterval(_self.slideInterval);
						//_self.interval();

						return false;
					});

				$('.slide-nav').find('a')
					//.unbind('.slide_nav')
					.bind('mouseout.slide_nav', function(){
						//console.log("mouseout .......");
						clearInterval(_self.slideInterval);
						_self.interval();
				});
			}
		}
	});

	$.fn.slideshow = function(options) {				
		$.slideshow.init (this, options);				
	};

})(jQuery);