var jTourNav;
var jTourActiveAnim = false;

jQuery.fn.jTour = function(){
	jTourNav = $(this);													/* sets a global variable to identify the jTourNav and href/id linking */
	initMarkup($(this));												/* setup jTour wrappers */
	activateTab($(this).find('a:eq(0)'));								/* active first tab */
	$(this).find('a').click(tabClick);									/* jTour click event handler */
	$('.jTourNext a').click(function(){
		if($(jTourNav).find('.active').is('li:last-child')){
			$(jTourNav).find('a:eq(0)').trigger('click');
			return(false);
		} else {
			$(jTourNav).find('.active').next().find('a').trigger('click');	/* jTour next functionality */
			return(false);
		}
	});
	$('.jTourPrev a').click(function(){
		if($(jTourNav).find('.active').is('li:first-child')){
			$(jTourNav).find('li:last a').trigger('click');
			return(false);
		} else {
			$(jTourNav).find('.active').prev().find('a').trigger('click');	/* jTour previous functionality */
			return(false);
		}
	});
};

function tabClick() {
	if (jTourActiveAnim == false) {
		jTourActiveAnim = true;
		var fragA = $(jTourNav).find('.active a').attr('href');
		var fragB = $(this).attr('href');
		activateTab($(this));
		slide(fragA, fragB, 150);
	}
	return(false);
};

/*	initMarkup(elem)
	This function wraps page fragments in jTour markup and creates prev/next links. */
function initMarkup(elem){
	$(elem).after('<div class=\"jTourView\"><div class=\"jTourContainer\"></div></div>');
	$(elem).find('a').each(function(){ $($(this).attr('href')).appendTo('.jTourContainer'); });
	jQuery(elem).after('<div class=\"jTourPrev\"><a href=\"#\"><span>Previous</span></a></div><div class=\"jTourNext\"><a href=\"#\"><span>Next</span></a></div>');
};

/*	activateTab(elem)
	This function applies a class of .active to elem and removes it from all siblings. */
function activateTab(elem){
	$(elem).parent().siblings().removeClass('active').addClass('inactive');
	$(elem).parent().removeClass('inactive').addClass('active');
	$($(elem).attr('href')).siblings().removeClass('active').addClass('inactive');
	$($(elem).attr('href')).removeClass('inactive').addClass('active');
};

function slide(fragA, fragB, slideDuration){
	var posAx = $(fragA).getX();
	var posBx = $(fragB).getX();
	var containerOffsetX = parseInt($(fragA).parent().css('left'));
	var paneOffsetX = posAx - posBx;
	var slideX = containerOffsetX + paneOffsetX;
	
	$(fragA).parent().animate({left: slideX}, slideDuration, function() {
		$(fragA).parent().css('left', slideX);
		setTimeout('jTourActiveAnim = false', 10);
	});
};

jQuery.fn.getX = function(){
	obj = jQuery(this).get(0);
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return curleft;
};