SCROLLING_AREA=200;
AUTO_WAIT_TIME = 12;
MANUAL_WAIT_TIME = 20;

CONTAINER_ELEMENT = "ul.home_news_list"; // THIS IS THE UNORDERED PARENT
BUTTON_PREVIOUS = "a.nav_left";
BUTTON_NEXT = "a.nav_right";
RANGE_DISPLAY = "span.home_news_range"; // WHERE TO OUTPUT THE CURRENT SLIDE AND THE RANGE

currentSlide = 0;

myTimer = 0;
myAnimator = 0;

function setUpSlides(){
	totalSlides = $(CONTAINER_ELEMENT+">li").size();
	if (totalSlides == 1){
		// ONLY ONE ITEM TO SHOW, SO HIDE THE NAV
		$(BUTTON_NEXT).addClass("hidden");
		$(BUTTON_PREVIOUS).addClass("hidden");
		$(RANGE_DISPLAY).addClass("hidden");
	
	} else {
	
		$(BUTTON_NEXT).bind("click",nextSlide);
		$(BUTTON_PREVIOUS).bind("click",previousSlide);
		myTimer = setTimeout(autoAdvance,(1000*AUTO_WAIT_TIME)); // Advance the slide every 10 seconds
		
		// DUPLICATE THE FIRST SLIDE TO THE END.
		$(CONTAINER_ELEMENT).append('<li>'+$(CONTAINER_ELEMENT+">li:first").html()+'</li>');
		
		updateSlideCount();
	}
}
window.onload.actions.push(setUpSlides);

function nextSlide(){
	nextSlide = currentSlide + 1;
	if (nextSlide > totalSlides) nextSlide = 0;
	scrollToSlide(nextSlide);
	currentSlide = nextSlide;
	updateSlideCount();
	resetTimer();
	return false;
}

function previousSlide(){
	nextSlide = currentSlide - 1;
	if (nextSlide < 0) {
		nextSlide = totalSlides-1;
		currentSlide = totalSlides;
		curPos = SCROLLING_AREA*currentSlide;
		$(CONTAINER_ELEMENT).each(function(){
			this.scrollTop = curPos;
		});
	}
	
	scrollToSlide(nextSlide);
	currentSlide = nextSlide;
	updateSlideCount();
	resetTimer();
	return false;
}

function updateSlideCount(){
	slideNumber = (currentSlide+1);
	if (slideNumber > totalSlides) slideNumber = 1;
	$(RANGE_DISPLAY).html(slideNumber + ' of ' + (totalSlides));
	return true;
}

function scrollToSlide(slideNumber){
	$(CONTAINER_ELEMENT).each(function(){
		curPos = this.scrollTop;
	});
	destPos = SCROLLING_AREA*slideNumber;
	if (curPos < destPos)
		speed = 1;
	else
		speed = -1;
	timeLeft = 15;
	clearInterval(myAnimator);
	myAnimator = setInterval(handleMovement,25);
	return true;
}

function handleMovement(){
	timeLeft --;
	//alert((speed*timeLeft)+ ":" + (destPos-curPos));
	if (speed > 0){
		if ((speed*timeLeft) < (destPos-curPos)){
			//we need to accelerate
			speed *= 2;
		} else {
			//we need to decelerate
			speed /= 2;
		}
	} else {
		//alert((speed*timeLeft) + ':' + (destPos-curPos));
		if ((speed*timeLeft) > (destPos-curPos)){
			//we need to accelerate
			speed *= 2;
		} else {
			//we need to decelerate
			speed /= 2;
		}	
	}
	curPos += speed;
	if (timeLeft < 1){
			curPos = destPos;
			clearInterval(myAnimator);
			//alert(currentSlide);
			if ((currentSlide == totalSlides) && (speed>0)){
				// moving forward, but we've reached the end.
				currentSlide = 0;
				curPos = SCROLLING_AREA*currentSlide;
			}
	}
	$(CONTAINER_ELEMENT).each(function(){
		this.scrollTop = curPos;
	});
}


function resetTimer(){
	clearTimeout(myTimer);
	myTimer = setTimeout(autoAdvance,(1000*MANUAL_WAIT_TIME)); // Advance the slide in 15 seconds
	
}

function autoAdvance(){
	nextSlide = currentSlide + 1;
	if (nextSlide > totalSlides) nextSlide = 0;
	scrollToSlide(nextSlide);
	currentSlide = nextSlide;
	updateSlideCount();
	myTimer = setTimeout(autoAdvance,(1000*AUTO_WAIT_TIME)); // Advance the slide every 10 seconds
}



previousItem = '';