SCROLLING_AREA = 230;
AUTO_WAIT_TIME = 60;
MANUAL_WAIT_TIME = 20;

CONTAINER_ELEMENT = "ul#h_slider_articles"; // THIS IS THE UNORDERED PARENT
BUTTON_PREVIOUS = "a#h_slider_prev";
BUTTON_NEXT = "a#h_slider_next";
RANGE_DISPLAY = "span#h_slider_count"; // WHERE TO OUTPUT THE CURRENT SLIDE AND THE RANGE

currentSlide = 0;
myTimer = 0;
myAnimator = 0;


function setUpSlides(){
	SCROLLING_AREA = $(CONTAINER_ELEMENT).height();
	$(CONTAINER_ELEMENT+' li').height(SCROLLING_AREA);
	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();
	}
}
$(document).ready(function(){
	setUpSlides();
});
//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 --;
	//trace((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(){
		//trace(this.scrollTop+' : '+curPos);
		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 = '';




agendaCurPos = agendaDest = agendaSpeed = agendaTimer = agendaTime = 0;
function highlightAgenda(item){
	if ($("ul.h_agenda_list").size()){
		$("ul.h_agenda_list>li").removeClass("highlight");
		$("li#"+item).addClass("highlight");
		$("li#"+item).each(function(i){
			prevNode = this.previousSibling;
			thisHeight = 0;
			while (prevNode){
				if (prevNode.offsetHeight) thisHeight += prevNode.offsetHeight;
				prevNode = prevNode.previousSibling;
			}
		});
		agendaDest = thisHeight;
		agendaTime = 15;
		$("ul.h_agenda_list").each(function(){agendaCurPos = this.scrollTop;});
		if (agendaSpeed == 0){
			if (agendaCurPos < agendaDest)
				agendaSpeed = 1;
			else
				agendaSpeed = -1;
		}
		clearInterval(agendaTimer);
		agendaTimer = setInterval(handleAgendaMovement,25);
	} else {
		today = new Date();
		itemList = item.split('_');
		window.location = root+'events.php?form_date_range='+today.getFullYear()+'-'+itemList[1]+'#event_'+itemList[1]+'_'+itemList[2];
	}
}

function handleAgendaMovement(){
	agendaTime --;
	//alert((speed*timeLeft)+ ":" + (agendaDest-curPos));
	if (agendaSpeed > 0){
		if ((agendaSpeed*agendaTime) < (agendaDest-agendaCurPos)){
			//we need to accelerate
			agendaSpeed *= 2;
		} else {
			//we need to decelerate
			agendaSpeed /= 2;
		}
	} else {
		//alert((agendaSpeed*timeLeft) + ':' + (agendaDest-curPos));
		if ((agendaSpeed*agendaTime) > (agendaDest-agendaCurPos)){
			//we need to accelerate
			agendaSpeed *= 2;
		} else {
			//we need to decelerate
			agendaSpeed /= 2;
		}	
	}
	agendaCurPos += agendaSpeed;
	if (agendaTime < 1){
			curPos = agendaDest;
			agendaSpeed = 0;
			clearInterval(agendaTimer);	
	}
	$("ul.h_agenda_list").each(function(){this.scrollTop = agendaCurPos;});
}
