jQuery.fn.tab_nav = function(settings){
	var settings = jQuery.extend(
		{
			parent_class: null,
			active_element : 'this',
			effect : 'slide',
			speed: null,
			active_class: 'active',
			close_tab : 'close',
			return_act : false
		}, settings);
	
	var s = settings;
	
	return this.each(function() {
		var classname_tab = jQuery(this).attr('class');
		var classname_tab = classname_tab.replace(s.active_class,'');
		jQuery(this).click(function()
		{
			var active_id = this.hash.replace('#','');
			// show active
			if(s.effect == 'slide') jQuery('#'+active_id).slideToggle(s.speed);
			else if(s.effect == 'fade') jQuery('#'+active_id).fadeIn(s.speed);
			jQuery('.'+classname_tab, '.'+s.parent_class).each(function()
			{
				if(s.active_element != 'this')
					jQuery(this).parents(s.parent_active).removeClass(s.active_class);
				else
					jQuery(this).removeClass(s.active_class);
				var id = this.hash.replace('#','');
				// hide elements inactive
				if(id!=active_id)
				{
					if(s.effect == 'slide') jQuery('#'+id).slideUp(s.speed);
					else if(s.effect == 'fade') jQuery('#'+id).fadeOut(s.speed);
				}
			});
			if(s.active_element != 'this')
				jQuery(this).parents(s.active_element).addClass(s.active_class);
			else
				jQuery(this).addClass(s.active_class);
			return s.return_act;
		});
		
		jQuery('.'+s.close_tab).click(function()
		{
			var close_id = this.hash.replace('#','');

			if(s.effect == 'slide')
			{
				jQuery('#'+close_id).slideUp(s.speed, function()
				{
					if(s.active_element != 'this') jQuery('.'+classname_tab, '.'+s.parent_class).parents(s.parent_active).removeClass(s.active_class);
					else jQuery('.'+classname_tab, '.'+s.parent_class).removeClass(s.active_class);
				});
			}
			else if(s.effect == 'fade')
			{
				jQuery('#'+close_id).fadeOut(s.speed, function()
				{
					if(s.active_element != 'this') jQuery('.'+classname_tab, '.'+s.parent_class).parents(s.parent_active).removeClass(s.active_class);
					else jQuery('.'+classname_tab, '.'+s.parent_class).removeClass(s.active_class);
				});
			}
			return s.return_act;
		});
	});
} 
