// functions for TestFirst site
// by Bryan Dease for sodiumhalogen.com

$(document).ready(function() { 
	    setTimeout('changeImage()',9000);
    }); 


// image slider for home page
var changeImageTimeout = null;


$('#query-tab ul li a').not('#prev,#next').click(function(){
	stopChangeImage();
	$('#query-tab ul li a').removeClass('active');
	var nextPosition = $(this).attr('rel');
	var slideNumber = $(this).attr('class')[1];
	slideNumber++;
	$(this).addClass('active');
		if (slideNumber == 9){
	  		$('#slideimg').stop().animate({'left': '0px'}, 1800, 'easeOutQuad' );
	  	} else {
	  		$('#slideimg').stop().animate({'left': '-'+nextPosition+'px'}, 1800, 'easeOutQuad' );
	  	}
	return false;
    });
    
$('#prev').click(function() {
	stopChangeImage();
	var currentID = $('#query-tab ul li a.active').attr('class').replace('q','').split(' ');
		if (currentID[0] != 2){
			$('#query-tab ul li a').removeClass('active');
			var prev = currentID[0] - 1;
			var prevPosition = $('.q'+prev).attr('rel');
			$('.q'+prev).addClass('active');
			$('#slideimg').stop().animate({'left': '-'+prevPosition+'px'}, 1800, 'easeOutQuad' );
		}	
	return false;
  	});
  	
$('#next').click(function() {
	stopChangeImage();
	var currentID = $('#query-tab ul li a.active').attr('class').replace('q','').split(' ');
		if (currentID[0] < 7){
			$('#query-tab ul li a').removeClass('active');
			currentID[0]++;
			var next = currentID[0];
			var nextPosition = $('.q'+next).attr('rel');
			$('.q'+next).addClass('active');
			$('#slideimg').stop().animate({'left': '-'+nextPosition+'px'}, 1800, 'easeOutQuad' );
		} else {
			$('#query-tab ul li a').removeClass('active');
			$('.q2').addClass('active');
			$('#slideimg').stop().animate({'left': '0px'}, 1800, 'easeOutQuad' );
		}
	return false;	
  	});

function changeImage(){
	if ( changeImageTimeout != null ) clearTimeout(changeImageTimeout);
	var thisPosition = $('#slideimg').css('left').replace('-','').split('px');
	thisPosition = thisPosition[0];
	var slideNumber = $('a[rel='+thisPosition+']').attr('class').replace('q','').split(' ');
	slideNumber = slideNumber[0];
	$('#query-tab ul li a').removeClass('active');
	slideNumber++;
	$('.q'+slideNumber).not('#prev,#next').addClass('active');
	var nextPosition = $('.q'+slideNumber).attr('rel');
		if (slideNumber == 8){
			$('#slideimg').animate({'left': '0px'}, 1800, 'easeOutQuad' );
			$('.q2').addClass('active');
			} else {
				$('#slideimg').animate({'left': '-'+nextPosition+'px'}, 1800, 'easeOutQuad' );
		}
	changeImageTimeout = setTimeout('changeImage()',9000);
	}
	

function stopChangeImage(){
	if ( changeImageTimeout != null ) clearTimeout(changeImageTimeout);
	changeImageTimeout = null;
	}


// method for chaining and pausing jquery events
var ChainCollector = function(base) {
var CLASS = arguments.callee;
this.then = this.and = this;
var queue = [], baseObject = base || {};
this.____ = function(method, args) {
queue.push({func: method, args: args});
};
this.fire = function(base) {
var object = base || baseObject, method, property;
for (var i = 0, n = queue.length; i < n; i++) {
method = queue[i];
if (object instanceof CLASS) {
object.____(method.func, method.args);
continue;
}
property = object[method.func];
object = (typeof property == 'function')
? property.apply(object, method.args)
: property;
}
return object;
};
};
ChainCollector.addMethods = function(object) {
var methods = [], property, i, n, name;
var self = this.prototype;
var reservedNames = [], blank = new this();
for (property in blank) reservedNames.push(property);
var re = new RegExp('^(?:' + reservedNames.join('|') + ')$j');
for (property in object) {
if (Number(property) != property)
methods.push(property);
}
if (object instanceof Array) {
for (i = 0, n = object.length; i < n; i++) {
if (typeof object[i] == 'string')
methods.push(object[i]);
}
}
for (i = 0, n = methods.length ; i < n; i++)
(function(name) {
if (re.test(name)) return;
self[name] = function() {
this.____(name, arguments);
return this;
};
})(methods[i]);
if (object.prototype)
this.addMethods(object.prototype);
};
jQuery.fn.wait = function(time) {
var collector = new ChainCollector(), self = this;
// Deal with scoping issues...
var fire = function() { collector.fire(self); };
setTimeout(fire, Number(time) * 1000);
return collector;
};
// Then extend ChainCollector with all jQuery's methods
ChainCollector.addMethods(jQuery);

