//carouselHome functionality

window.onload = function () {
	$(".carouselHome .carouselContainer:eq(0)").slideDown();
	setImgSlideWidth();
	$(".carouselHome .carouselContainer:eq(0) ul").width( $(".carouselHome .carouselContainer:eq(0) ul").find("li:last-child").position().left + $(".carouselHome .carouselContainer:eq(0) ul").find("li:last-child").width() + 1);
	$(".carouselHome #homeMenu a:eq(0)").addClass('selected');
	setCarousel($(".carouselHome .carouselContainer:eq(0)"));
	$(".carouselHome #homeMenu a").click(function(){
		var index = $(".carouselHome #homeMenu a").index(this);
		$(".carouselHome .carouselContainer").hide();
		$(".carouselHome .carouselContainer:eq(" + index +")").show();
		setImgSlideWidth();
		$(".carouselHome .carouselContainer:eq(" + index +") ul").width( $(".carouselHome .carouselContainer:eq(" + index +") ul").find("li:last-child").position().left + $(".carouselHome .carouselContainer:eq(" + index +") ul").find("li:last-child").width() + 1);
		$(".carouselHome #homeMenu a").removeClass();
		$(this).addClass('selected');
		setCarousel($(".carouselHome .carouselContainer:eq(" + index +")"));
		return false;
	});
};

//function for recalculating currently displayed carousel properties 
function setCarousel(thisCarousel){
		//set initial prevBtn to disable
        if (thisCarousel.find("ul").position().left >= 0 ) {
        	thisCarousel.find(".prevBtn").addClass("prevBtnDisabled");
        }
		else {
			thisCarousel.find(".prevBtn").removeClass("prevBtnDisabled");
		}
		//set carousel next button
		thisCarousel.find(".nextBtn").click(function () {
			if (!thisCarousel.find(".nextBtn").hasClass("nextBtnDisabled")) {
				var sliderWindowRightBoundary = -thisCarousel.find("ul").position().left + thisCarousel.find(".carouselWindow").width();
				var lastSlideVisible = thisCarousel.find("ul").find('li').filter(function(index){
					var liLeftBoundary = $(this).position().left;
					var liRightBoundary = liLeftBoundary + $(this).width();
					return (liLeftBoundary <= sliderWindowRightBoundary) && (sliderWindowRightBoundary <= liRightBoundary);
				});
				if (thisCarousel.find("ul").width() > lastSlideVisible.position().left + thisCarousel.find(".carouselWindow").width()) {
					thisCarousel.find("ul").animate({'left': lastSlideVisible.position().left * -1}, 500);
				}
				else {
					thisCarousel.find("ul").animate({'left': thisCarousel.find(".carouselWindow").width() - thisCarousel.find("ul").width()}, 500);
					thisCarousel.find(".nextBtn").addClass("nextBtnDisabled");
				}
				thisCarousel.find(".prevBtn").removeClass("prevBtnDisabled");
			}
			return false;
	    }).mousedown(function(){
			$(this).addClass('nextMouseDown');
		}).mouseup(function(){
			$(this).removeClass('nextMouseDown');
		});
		
		//set carousel previous button
		thisCarousel.find(".prevBtn").click(function () {
			if (!thisCarousel.find(".prevBtn").hasClass("prevBtnDisabled")) {
				var sliderWindowLeftBoundary = -thisCarousel.find("ul").position().left;
				var firstSlideVisible = thisCarousel.find("ul").find('li').filter(function(index){
					var liLeftBoundary = $(this).position().left;
					var liRightBoundary = liLeftBoundary + $(this).width();
					return (liLeftBoundary <= sliderWindowLeftBoundary) && (sliderWindowLeftBoundary <= liRightBoundary);
				});
				var newCarouselPosition = thisCarousel.find(".carouselWindow").width() - (firstSlideVisible.position().left + firstSlideVisible.width());
				if (newCarouselPosition > 0) {
					newCarouselPosition = 0;
					thisCarousel.find(".prevBtn").addClass("prevBtnDisabled");
				}
				thisCarousel.find(".nextBtn").removeClass("nextBtnDisabled");
				thisCarousel.find("ul").animate({'left': newCarouselPosition}, 500);
			}
			
			
			return false;
	    }).mousedown(function(){
			$(this).addClass('prevMouseDown');
		}).mouseup(function(){
			$(this).removeClass('prevMouseDown');
		});	
}

//function for setting widths for imgSlides
function setImgSlideWidth(){
	$(".carouselHome .imgSlide img").each(function(){
		$(this).parent().width($(this).width());
	});
}
