/**
 * @author luke.cuthbertson <luke.cuthbertson@heathwallace.com>
 * @projectDescription
 * @version 0.1
 * @date
 */
(function($){

	$.fn.buildTabs = function(){ 
		return this.each(function(){
			var container = $(this);
			var content_container = container.find('.contentStyleInner');
			//gather content
			var tab_heading = container.find('h2');
			var sub_headings = container.find('h3');
			var content = container.find('.jvsTabContent');
			var foot_link = container.find('.jvsTabFoot');
			
			//empty inner container div in preparation for rebuild
			content_container.empty();
			
			//rebuild
			content_container.append(tab_heading); //add heading
			var ul = $('<ul class="nav jvsTabs"></ul>').appendTo(content_container);
			sub_headings.each(function(i){
				ul.append('<li><a href="#tab'+ (i+1) +'">'+ this.innerHTML +'</a></li>');
			});
			ul.find('li:first').addClass('current');
			ul.find('li:last').addClass('last');
			var content_wrapper = $('<div class="contentStyle06"><div class="jvsTabContentContainer"></div></div>').appendTo(content_container).children();
			content.each(function(i){
				content_wrapper.append('<div class="jvsTabContent" id="tab'+ (i+1) +'">'+content.eq(i).html()+'</div>');
			});
			$(content_container.find('.contentStyle06')).append(foot_link);
			
			//start tab script
			var templateBlock = container.find('div.jvsTabBlock');
			templateBlock.tabs();
			
		});
	}

	
	$.fn.tabs = function(opts){
		var opts = $.extend({
			tabs: '.jvsTabs',
			content: '.jvsTabContent',
			selected: 'current',
			transSpeed: 200
		}, opts);

		return this.each(function(){ 
			var tabSet = $(this);
			var content = tabSet.find(opts.content);
			var links = tabSet.find(opts.tabs+' a')
			var wrapper = content.parent().css('overflow', 'hidden');
			var current;
			
			var curLink = links.parent().filter('.'+opts.selected).find('a');
			if (!curLink.size()) {
				curLink = links.eq(0).closest('li').addClass(opts.selected);
			}
			current = content.hide().filter(curLink.attr('hash')).show().css('opacity', 1);
			
			function show(selector){
				var _h = wrapper.height();
				wrapper.stop().height('auto');
				current.stop().fadeOut(opts.transSpeed, function(){
					current = content.hide().filter(selector).show().css('opacity', 1);
					var h = wrapper.height();
					current.hide();
					wrapper.height(_h);
					wrapper.animate({height: h}, (h != _h) ? opts.transSpeed : 0, function(){
						current.fadeIn(opts.transSpeed);
						wrapper.height('auto');
					});
				});
			}
			
			links.click(function(e){ 
				e.preventDefault();
				var link = $(this);
				if (!link.closest('li').hasClass(opts.selected)) {
					links.closest('li').removeClass(opts.selected);
					link.closest('li').addClass(opts.selected);
					show(this.hash);
				}
			});
		});
		
		
	}
})(jQuery);

