(function(jQuery){ 

	jQuery.fn.underTabs = function(options) {

		var defaults = {}; 
		var opts = jQuery.extend(defaults, options);
		
		return this.each(function()
		{
			var jUnderTabs = jQuery(this);
			
			var jTabs = jUnderTabs.find('li');
			
			// seems to be a bug with 'is'? therefore the double negative
			jTabs.not(':not(:first)').addClass('first active');
			jTabs.not(':not(:last)').addClass('last');
			
			var tabWidth = (100 / jTabs.size()) - 0.1;
			
			jTabs.css({width: (tabWidth + '%')});
			
			var jImages = jTabs.children().filter('a, img').prependTo(jUnderTabs);
			
			jImages.wrap('<div class="tabContent"></div>');
			
			var jTabContent = jUnderTabs.find('div.tabContent');
			
			jTabContent.each(function(i)
				{
					var jContent = jQuery(this);
					var jComplexContent = jTabs.eq(i).find('div:not(.tabContent)');
					var contentText = jContent.find('img').attr('alt');
					

					
					if(jComplexContent.size())
					{
						contentText = jComplexContent.html();
					}
					
					jContent.append('<div></div><span>' + contentText + '</span>');
				});

				
				
			jTabContent.find('div').css({opacity:.8});
			jTabContent.not(':first').hide();
			
			var tabButtons = jTabs.find('span');
			
			tabButtons.css({cursor:'pointer'});
			
			tabButtons.click(function()
				{
					var jTab = jQuery(this).parent();
					
					var index = jTab.prevAll().size();
					
					jTabs.removeClass('active');
					jTab.addClass('active');
					jTabContent.hide();
					jTabContent.eq(index).addClass('active').show();
				});
				
			tabButtons.mouseover(function()
				{
					jQuery(this).addClass('over');
				});
				
			tabButtons.mouseout(function()
				{
					jQuery(this).removeClass('over');
				});
		});
	};

})(jQuery);
