jQuery.fn.tabs = function(options){
	var _options = $.extend({
		tabsSelector: "a",
		activeClass: "active",
		autoSlideInterval: 7000		//set to 0 to disable auto sliding
	}, options);
	
	return $(this).each(function() {
		var opt = $.extend({}, _options, options);
		var tabLinks = $(this).find(opt.tabsSelector);
		var panels = [];
		var autoTimeout = null;
		
		function clearAuto() {
			if ( autoTimeout !== null ) {
				window.clearTimeout(autoTimeout);
				autoTimeout = null;
			}
		}
		
		function setAuto() {
			if ( opt.autoSlideInterval > 0 ) {
				clearAuto();
				
				autoTimeout = window.setTimeout(function(){
					next();
				}, opt.autoSlideInterval);
			}
		}
		
		function next() {
			var idx = tabLinks.index( tabLinks.filter("." + opt.activeClass) ) + 1;
			
			if ( idx > tabLinks.length - 1 ) {
				idx = 0;
			}
			
			$(tabLinks[idx]).trigger("click");
		}
		
		tabLinks.each(function(e, elem){
			panels.push($($(elem).attr("href")));
		});
		
		hideAllPanels();
		
		tabLinks.bind("click", function(){
			//if($(this).hasClass(_options.activeClass)) return false;
			clearAuto();
			tabLinks.removeClass(opt.activeClass);
			$(this).addClass(opt.activeClass);
			hideAllPanels();
			$($(this).attr("href")).fadeIn();
			setAuto();
			return false;
		});
		
		tabLinks.filter("." + opt.activeClass).trigger("click");
		
		function hideAllPanels(){
			$(panels).each(function(e, elem){
				$(elem).hide();
			});
		}
		
		setAuto();
	});
}
