function featureRotator(location, batch, width) {
	this.location = location;
	this.batch = batch;
	this.start = 0;
	this.width = width;
	this.left = 0;
	this.maxRight = 0;
	this.goLeft = false;
	this.goRight = true;
	this.gate = 0;
	this.i = 0;
	this.x = 0;
	this.total = 5;
	this.interval = 7000;
	this.ajaxURL = '/inc/rotatorCall.php';
	var t = this;

	$("#left").click(function() {
		t.shiftLeft();
	});

	$("#right").click(function() {
		t.shiftRight();
	});
	
	$("#featureRotator").everyTime(t.interval, 'incrementThumb', function() {
			t.i = t.i + 1;
			var mod = t.i % t.batch;
			if(t.i == t.total) {
				t.resetThumbnails();
			} else if(0==mod) {
				t.shiftRight();
			} else {
				t.setFocus(t.i);
			}
		}, times=t.total*3, belay=true);

	$("#stop").bind("click", function() {
		$("#featureRotator").stopTime();
	});
	
	this.clearActive = function()  {
		$("img.active").animate({opacity: 0.4}, 400);	
		$("img.active").removeClass("active");	
	}

	this.resetThumbnails = function() {
		this.start = this.start = 0;
		this.left = 0;
		this.clearActive();
		$("#thumbnails img").animate({left:this.left+"px"}, 1000);
		this.i = 0;
		this.setFocus(this.i);	
		if(this.gate>0) {
			$("#right").removeClass('off');
			$("#right").addClass('on');
			this.goRight = true;
		}	
		this.gate = 0;
		$("#left").removeClass('on');
		$("#left").addClass('off');
		this.goLeft = false;		
		
	}

	this.shiftRight = function() {
		if(t.goRight) {
			t.start = t.start + t.batch + 1;
			$.ajax({
				type:"GET",
				url:t.ajaxURL,
				data: {"s":this.start,"l":this.location,"b":this.batch},
				dataType:"xml",
				success: function(xml) {
					t.toggleControls(xml);
					if(t.start>t.maxRight) {
						t.loadThumbnails(xml);				
						t.hookThumbnails(t.start-1);
					}
					t.left = t.left - t.width;
					$("#thumbnails img").animate({left:t.left + "px"}, 1000);
					t.clearActive()
					t.i = t.start-1;
					t.setFocus(t.i);
					t.gate += 1;
					if(t.maxRight<t.start) {
						t.maxRight = t.start;
					}
				}				
			});
		}
	}

	this.shiftLeft = function() {
		if(this.goLeft) {
			this.start = this.start - this.batch - 1;
			this.left = this.left + this.width;
			$("#thumbnails img").animate({left:this.left+"px"}, 1000);
			this.clearActive();
			this.i = this.start;
			this.setFocus(this.i);
			this.gate += -1;
			if(this.gate==0) {
				$("#left").removeClass('on');
				$("#left").addClass('off');
				this.goLeft = false;
			}
			$("#right").removeClass('off');
			$("#right").addClass('on');
			this.goRight = true;
		}
	}
	
	this.setFocus = function(i) {
		var focus = $("#thumbnails img:eq("+i+")");
		this.clearActive();
		focus.addClass("active");
		focus.animate({opacity: 1.0}, 1000);	
		var url = focus.attr('url');		
		var img = focus.attr('full');
		$("#feature img").attr({src:img});
		$("#feature a").attr({href:url});				
		
	}

	this.hideThumbnails = function(lower, upper) {
		$("#thumbnails img:lt("+lower+")").hide();
	}
		
	this.loadThumbnails = function(xml) {
		$(xml).find('feature').each(function() {		
			var id = $(this).attr('id');
			var selected = $(this).attr('selected');
			var title = $(this).find('title').text();
			var img = $(this).find('imgsrc').text();
			var url = $(this).find('url').text();
			var thumbnail = $(this).find('thumbnail').text();
			$("#thumbnails").append('<a href="?id='+id+'" id="'+id+'"><img src="'+thumbnail+'" alt="'+title+'" full="'+img+'" index="'+t.x+'" url="'+url+'" /></a>');			
			$("#thumbnails img").animate({opacity: 0.4}, 0);
			t.x = t.x + 1;
		});	
	}

	this.hookThumbnails = function(lower) {
		$("#thumbnails a:gt("+lower+")").bind("click", function() {
			return false;
		});		
		$("#thumbnails img:gt("+lower+")").bind("click", function() {
			t.clearActive();
			var index = $(this).attr('index');
			t.setFocus(index);	
			t.i = parseInt(index);
		});
	}

	this.toggleControls = function(xml) {
		var total = $(xml).find('total').text();
		if($(xml).find('leftControl').text()=="1") {
			this.goLeft = true;
			$("#left").removeClass('off');
			$("#left").addClass('on');
		} else {
			this.goLeft = false;
			$("#left").removeClass('on');
			$("#left").addClass('off');					
		}
		if($(xml).find('rightControl').text()=="1") {
			this.goRight = true;
			$("#right").removeClass('off');
			$("#right").addClass('on');
		} else {
			this.goRight = false;
			$("#right").removeClass('on');
			$("#right").addClass('off');
		}						
	}
	
	this.setTotal = function() {
		this.total = $("#thumbnails").attr('total');
	}
}

$(document).ready(function() {
	$("#controler").show();
	var rotator = new featureRotator(175, 7, 744);
	$("#thumbnails img:gt(0)").animate({opacity: 0.4}, 0);
	rotator.setTotal();
	rotator.setFocus(0);
	rotator.hookThumbnails(-1);
});