/*
 * jQuery JavaScript Plugin jquery.sideTabs 0.9.0
 * http://bugsoftware.co.uk/jQuery/
 *
 * Copyright (c) 2009 - 2010 Ritchie Comley
 * Dual licensed under the MIT and GPL licenses.
 *
 * Date: 2010-07-13 (Tue, 13 July 2010)
 * Revision: 0
 *
 * Dependencies:
 * jQuery 1.4.1 (jquery.com)
 *
 */

jQuery.fn.sideTabs = function(options) {

	// PRIVATE VARIABLES
	var defaults = {
			opacity:0.7,
			fadeDuration:500,
			cycle:true,
			cycleInterval: 3000
		};

	var opts = jQuery.extend(defaults, options);

	return this.each(function()
	{
		var container = jQuery(this);
		container.wrapInner('<div style="position:absolute;"></div>');
		var innerWrapper = container.find('>div');
		innerWrapper.wrapInner('<div style="position:absolute;"></div>');
		var tabWrapper = innerWrapper.find('>div');

		tabWrapper.before('<div class="tabBG"></div>');
		var tabBG = innerWrapper.find('div.tabBG');

		tabBG.css({height:tabWrapper.height(), width:tabWrapper.width(), position:'absolute', opacity:opts.opacity});

		var backgrounds = container.find('img');

		backgrounds.each(function(i) {

			var image = jQuery(this);

			image.addClass('sideTabImage' + i);

			var tabLink = image.parent().find('a');

			if(tabLink.size())
			{
				image.click(function()
				{
					document.location.href = tabLink.attr('href');
				});

				image.css({cursor:'pointer'});
			}
		});

		backgrounds.prependTo(innerWrapper);

		var tabs = tabWrapper.find('>div');

		var activeTabIndex = 0;

		var activeTab = innerWrapper.find('img.sideTabImage' + activeTabIndex);
		tabBG.before(activeTab);

		tabs.mouseover(function(){

			var tab = jQuery(this);

			makeTabActive(tab);
		});

		function makeTabActive(tab)
		{
			var i = tab.prevAll().size();

			if(i != activeTabIndex)
			{
				activeTabIndex = i;
				activeTab = innerWrapper.find('img.sideTabImage' + i);
				activeTab.css({opacity:0});
				tabBG.before(activeTab);
				activeTab.animate({opacity:1},{duration:opts.fadeDuration});
				tabs.removeClass('active');
				tab.addClass('active');
			}
		}

		if(opts.cycle)
		{
			var cyclerID;

			function doCycle()
			{
				var nextTab = tabs.eq(activeTabIndex + 1);

				if(!nextTab.size())
				{
					nextTab = tabs.eq(0);
				}

				makeTabActive(nextTab)
			}

			function startCycle()
			{
				cyclerID = window.setInterval(doCycle, opts.cycleInterval);
			}

			function stopCycle()
			{
				window.clearInterval(cyclerID);
			}

			startCycle();

			container.mouseover(stopCycle);
			container.mouseout(startCycle);
		}

	});
};


