/******************************************************************************
 * Tabs 2.0 - Terra Networks - Equipe Webdev
 * 2008
 * Modulo independente
 *
 * COMO UTILIZAR
 * 
 * Usar como base o exemplo abaixo
 *
 *	<div class="tabs">
 *		<ul class="tab-list">
 *			<li><a href="#tab-content1" class="anchor"><span>Aba 1</span></a></li>
 *			<li><a href="#tab-content2" class="anchor"><span>Aba 2</span></a></li>
 *		</ul>
 *
 *		<div id="tab-content1" class="tab-content">
 *			Conteúdo da aba 1
 *		</div>
 *
 *		<div id="tab-content2" class="tab-content">
 *			Conteúdo da aba 2
 *		</div>
 *	</div>
 *
 * PARAMETROS
 *
 * Ao adicionar a classe "anchor" nos links das abas passamos a ter a funcionalidade de historico, esta classe é opcional
 *
 ******************************************************************************/

(function ($) {

	$.fn.extend({
		tabs: function () {
		
			// private
			var changeTab = function (selector) {
			
				var obj = $(selector),
					tabsContainer = obj.parents(".tab-list"),
					tabsContentContainer = obj.parents(".tabs:first"),
					tabContentName = obj.hasClass("anchor") ? obj.attr("href").substr(obj.attr("href").indexOf("#"), obj.attr("href").length).replace("#t", "#") : obj.attr("href").substr(obj.attr("href").indexOf("#"), obj.attr("href").length);

				// tab
				tabsContainer.find("li.selected").removeClass("selected");
				obj.parent().addClass("selected");

				// tab content
				tabsContentContainer.find(".tab-content:first").parent().find(">.tab-content:visible:not(" + tabContentName + ")").hide();
				tabsContentContainer.find(tabContentName).show();
			
			};

			// iterate over DOM
			$(this).each(function () {
				
				var objTabs = $(this),
					initTab = null;

				objTabs.find(".tab-content").hide();

				if (objTabs.find('.anchor').size() > 0) {
					objTabs.find('.tab-list a').each(function () {
						$(this).attr('href', $(this).attr('href').replace("#", "#t"));
					});
				}

				initTab = (/#.*$/).exec(window.location.href);
				
				if (objTabs.find("a[href='" + initTab + "']").size() > 0 && initTab !== "#") {
					changeTab(objTabs.find("a[href='" + initTab + "']"));
					window.scrollTo(0, 0);
				}
				else if (objTabs.find(".tab-list .selected").size() > 0) {
					changeTab(objTabs.find(".tab-list .selected a"));
				}
				else {
					objTabs.find(".tab-list li:first").addClass("selected");
					objTabs.find(".tab-content:first").show();
				}

				// events
				objTabs.find('.tab-list a').bind('click', function (evt) {
					
					changeTab(this);
					
					if (!$(this).hasClass('anchor')) {
						evt.preventDefault();
					}
				
				});
			
			});
		
		}
	});

})(jQuery);
