/**
 *	Alternate
 *	plugin jquery para alternar catchers e seus respectivos elementos
 *	
 *	@param $settings : { $panel string css selector element, $timeout int time in milisec }
 */
(function($){
	$.fn.alternate = function(settings) {
		$element = this;
	/**
	 *	Settings
	 *	estende os parametros padrões do plugin
	 *	@object
	 */
		var settings = jQuery.extend({}, $.fn.alternate.defaults, settings);
	/**
	 *	Runtime
	 *	objeto memoria do estado de execução
	 *	@object
	 */
		var runtime = new Object();
	/**
	 *	Runtime Count
	 *	variavel de contagem, valor padrão (0)
	 */
		runtime.count = 0;
	/**
	 *	element.a
	 *	adiciona evento click em cada link encontrado
	 */
		$element.find("a").each(function(){
			jQuery(this).click(function(e){
				$target = jQuery(e.target);
				$element.children().removeClass('current');
				jQuery(settings.panel).children().css('display','none');
				jQuery( $target.attr('href') ).fadeIn();
				$target.parent().addClass('current');
			});
			runtime.count++;
		});
	/**
	 *	mouseenter & mouseleave
	 *	adiciona evento de unbindInterval e bindInterval
	 */
		$element.mouseenter(function(){
			unbindInterval();
		}).mouseleave(function(){
			bindInterval();
		});
	/**
	 *	bindInterval
	 *	cria variavel contagem de intervalo (runtime.interval)
	 *
	 *	@return void
	 */
		function bindInterval(){
			runtime.interval = setInterval(function(){
				i = $element.children(".current").index();
				if ( i >= runtime.count )
					$element.children().eq((runtime.count)).find('a').trigger('click');
				else
					$element.children().eq((i + 1)).find('a').trigger('click');
			}, settings.timeout);
		}
	/**
	 *	unbindInterval
	 *	destroi variavel contagem de intervalo (runtime.interval)
	 *
	 *	@return void
	 */
		function unbindInterval(){ clearInterval(runtime.interval); }
	/**
	 *	Plugin Methods Dispatcher
	 */
		bindInterval();
	};
/**
 *	Plugin default parameters
 *	parametros padrões do plugin, permite alteração global:
 *		$.alternate.defaults = {}
 *	@object
 */
	$.fn.alternate.defaults = {
		panel : "",
		timeout : 2500
	};
})(jQuery);
