
(function($) {
	var vibeSlider = window.vibeSlider = {
	data: {
		// js data
		scrollSpacing:0, 
		scrollIndex:0,
		scrollCount:0,
		scrollTime:1250,
		scrolling:false
	},
	func: {
		// activate filter view toggle
		vs_scrollLeft: function() {
			if (vibeSlider.data.scrolling) return(false);
			if (vibeSlider.data.scrollIndex+1 == vibeSlider.data.scrollCount) return(false);
			vibeSlider.data.scrolling = true;
			setTimeout("vibeSlider.func.vs_endScroll();", vibeSlider.data.scrollTime)

			vibeSlider.data.scrollIndex++;
			vibeSlider.func.vs_animateScrollNorm();
			vibeSlider.func.vs_setArrowVisibility();
			if(SCROLLVERT){
				vibeSlider.func.vs_animateScrollVertPosLinear("left");
			}
		},
		vs_scrollRight: function() {
			console.debug("vibeSlider.data.scrolling: " + vibeSlider.data.scrolling )
			if (vibeSlider.data.scrolling) return(false);
			if (vibeSlider.data.scrollIndex == 0) return(false);

			vibeSlider.data.scrolling = true;
			setTimeout("vibeSlider.func.vs_endScroll();", vibeSlider.data.scrollTime)
			console.debug("vibeSlider.data.scrolling: " + vibeSlider.data.scrolling )

			vibeSlider.data.scrollIndex--;
			vibeSlider.func.vs_animateScrollNorm();
			vibeSlider.func.vs_setArrowVisibility();
			if(SCROLLVERT){
				vibeSlider.func.vs_animateScrollVertPosLinear("right");
			}
		},
		vs_endScroll: function() {
			vibeSlider.data.scrolling = false;
		},
		vs_animateScrollNorm: function() {
			var nextLeftPosition = vibeSlider.func.vs_getListLeft();
			vibeSlider.func.vs_animateScroll(nextLeftPosition);
		},
		vs_animateScroll: function(nextLeftPosition) {
			$(".scrollItems ul").animate(
				{left:nextLeftPosition}, {
				 duration:vibeSlider.data.scrollTime, 
				 easing: 'easeOutBack'
				});
		},
		vs_animateScrollVertPosLinear: function(direction) {
			var nextIndex = (vibeSlider.data.scrollIndex % vibeSlider.data.scrollCount);
			if (direction == "left"){
				var leavingIndex = (nextIndex == 0) ? vibeSlider.data.scrollCount-1: nextIndex-1;
				var offMarginTop = 150;
			} else {
				var leavingIndex = (nextIndex == vibeSlider.data.scrollCount-1) ? 0: nextIndex+1;
				var offMarginTop = -150;
			} 

			$("#scrollItem" + leavingIndex).animate(
				{marginTop:offMarginTop}, {
				 duration:vibeSlider.data.scrollTime, 
				 easing: 'easeOutQuad'
				});
			$("#scrollItem" + nextIndex).animate(
				{marginTop:0}, {
				 duration:vibeSlider.data.scrollTime, 
				 easing: 'easeOutQuad'
				});
		},
		vs_setArrowVisibility: function() {
			if (vibeSlider.data.scrollIndex == 0 && $(".loopContent").size() == 0){
				$("#scrollArrowLeft").fadeOut(vibeSlider.data.scrollTime/2);
			} else if (vibeSlider.data.scrollIndex+1 == vibeSlider.data.scrollCount && $(".loopContent").size() == 0){
				$("#scrollArrowRight").fadeOut(vibeSlider.data.scrollTime/2);
			} else {
				$("#scrollArrowRight").css("display", "block")
				$("#scrollArrowLeft").css("display", "block")
				$("#scrollArrowLeft").animate({opacity: .2}, .2*vibeSlider.data.scrollTime)
						.animate({opacity: .2}, .6*vibeSlider.data.scrollTime)
						.animate({opacity: 1}, .2*vibeSlider.data.scrollTime);
				$("#scrollArrowRight").animate({opacity: .2}, .2*vibeSlider.data.scrollTime)
						.animate({opacity: .2}, .6*vibeSlider.data.scrollTime)
						.animate({opacity: 1}, .2*vibeSlider.data.scrollTime);
			}
		},
		vs_scrollRightLoop: function() {
			if (vibeSlider.data.scrolling) return(false);
			vibeSlider.data.scrolling = true;
			setTimeout("vibeSlider.func.vs_endScroll();", vibeSlider.data.scrollTime);

			vibeSlider.data.scrollIndex--;
			var moveId = (vibeSlider.data.scrollIndex % vibeSlider.data.scrollCount) + 3;
			if (moveId < 0){
				moveId += vibeSlider.data.scrollCount;
			}
			if (moveId > vibeSlider.data.scrollCount-1){
				moveId -= vibeSlider.data.scrollCount;
			}
			var currentLeft = vibeSlider.func.vs_getCurrentLeft(moveId);
			var nextLeft = currentLeft - (vibeSlider.data.scrollCount) * $("#scrollItem" + moveId).width();
			$("#scrollItem" + moveId).css("left", nextLeft+"px");
					
			if(SCROLLVERT){
				vibeSlider.func.vs_animateScrollVertPos("right");
			}
			vibeSlider.func.vs_animateScrollLoop();
			vibeSlider.func.vs_setArrowVisibility();
		},
		vs_scrollLeftLoop: function() {
			if (vibeSlider.data.scrolling) return(false);
			vibeSlider.data.scrolling = true;
			setTimeout("vibeSlider.func.vs_endScroll();", vibeSlider.data.scrollTime)

			vibeSlider.data.scrollIndex++;
			var moveId = (vibeSlider.data.scrollIndex % vibeSlider.data.scrollCount) - 3;
			if (vibeSlider.data.scrollIndex < 0){
				moveId += vibeSlider.data.scrollCount;
			}
			if (moveId < 0){
				moveId += vibeSlider.data.scrollCount;
			}
			var currentLeft = vibeSlider.func.vs_getCurrentLeft(moveId);
			var nextLeft = currentLeft + (vibeSlider.data.scrollCount) * $("#scrollItem" + moveId).width();
			$("#scrollItem" + moveId).css("left", nextLeft+"px");
			
			if(SCROLLVERT){
				vibeSlider.func.vs_animateScrollVertPos("left");
			}
			vibeSlider.func.vs_animateScrollLoop();
			vibeSlider.func.vs_setArrowVisibility();
		},
		vs_getCurrentLeft: function(id) {
			return( Number($("#scrollItem" + id).css("left").replace("px", "")) );
		},
		vs_animateScrollLoop: function() {
			var nextLeftPosition = vibeSlider.func.vs_getListLeft();
			vibeSlider.func.vs_animateScroll(nextLeftPosition);
		},
		vs_animateScrollVertPos: function(direction) {
			var nextIndex = (vibeSlider.data.scrollIndex % vibeSlider.data.scrollCount);
			if (nextIndex < 0){
				nextIndex += vibeSlider.data.scrollCount;
			}
			if (direction == "left"){
				var leavingIndex = (nextIndex == 0) ? vibeSlider.data.scrollCount-1: nextIndex-1;
			} else {
				var leavingIndex = (nextIndex == vibeSlider.data.scrollCount-1) ? 0: nextIndex+1;
			} 

			$("#scrollItem" + leavingIndex).animate(
				{marginTop:150}, {
				 duration:vibeSlider.data.scrollTime, 
				 easing: 'easeOutQuad'
				});
			$("#scrollItem" + nextIndex).animate(
				{marginTop:0}, {
				 duration:vibeSlider.data.scrollTime, 
				 easing: 'easeOutQuad'
				});
		},
		vs_activateScrollButtons: function() {
			if($(".loopContent").size()){
				$("#scrollArrowRight").click(function(){
					vibeSlider.func.vs_scrollLeftLoop();
				});
				$("#overlayRight").click(function(){
					vibeSlider.func.vs_scrollLeftLoop();
				});
				$("#scrollArrowLeft").click(function(){
					vibeSlider.func.vs_scrollRightLoop();
				});
				$("#overlayLeft").click(function(){
					vibeSlider.func.vs_scrollRightLoop();
				});
				//vibeSlider.data.scrollIndex = Math.round(vibeSlider.data.scrollCount/2);
			} else if($(".scrollingContent").size()){
				$("#scrollArrowRight").click(function(){
					vibeSlider.func.vs_scrollLeft();
				});
				$("#overlayRight").click(function(){
					vibeSlider.func.vs_scrollLeft();
				});
				$("#scrollArrowLeft").click(function(){
					vibeSlider.func.vs_scrollRight();
				});
				$("#overlayLeft").click(function(){
					vibeSlider.func.vs_scrollRight();
				});

			}
		},
		vs_positionOverlays: function() {
			var overlayWidth = vibeSlider.func.vs_getOverlayWidth();
			$("#overlayRight").css("width", overlayWidth);
			$("#overlayLeft").css("width", overlayWidth);
			$("#overlayRight").css("left", $("body").width()-overlayWidth-1);
			$("#scrollArrowLeft").css("left", overlayWidth);
			$("#scrollArrowRight").css("left", $("body").width()-overlayWidth-26);
		},
		vs_setItemPositions: function() {
			var scrollingCount = 0;
			$(".scrollItems ul li").each(function(){
				$(this).css("left", scrollingCount*$(this).width()+scrollingCount*vibeSlider.data.scrollSpacing);
				if(SCROLLVERT){
					$(this).css("marginTop", 150);
				}
				$(this).attr("id", "scrollItem"+scrollingCount);
				scrollingCount++;
			});
			$("#scrollItem2").css("marginTop", 0);
		},
		vs_setListPosition: function() {
			var listLeft = vibeSlider.func.vs_getListLeft();
			$(".scrollItems ul").css("left", listLeft);
		},
		vs_getListLeft: function() {
			var overlayWidth = vibeSlider.func.vs_getOverlayWidth();
			var listLeft = overlayWidth+vibeSlider.data.scrollSpacing;
			var scrollingWidth = $(".scrollingContent ul li:first").width();
			listLeft -= vibeSlider.data.scrollIndex*(scrollingWidth+vibeSlider.data.scrollSpacing)
			return(listLeft);
		},
		vs_getOverlayWidth: function() {
			var scrollingWidth = $(".scrollingContent ul li:first").width();
			var overlayWidth = ($("body").width()-scrollingWidth)/2;// - vibeSlider.data.scrollSpacing;
			return(overlayWidth);
		},
		vs_randomizeOrder: function() {
			for (var i=0; i<5;i++){
				$(".scrollItems ul li").each(function(){
					if(Math.round(Math.random())){
						$(".scrollItems ul").prepend("<li>"+$(this).html()+"</li>");
					} else {
						$(".scrollItems ul").append("<li>"+$(this).html()+"</li>");
					}
					$(this).remove();
				});
			}
		},
		// IE 6 Fixes
		// ------------------------------------------------
		ie6Fixes: function() {
		}
	}
};
})($);

// on body load
var SCROLLVERT = true;
$(function() {
	vibeSlider.data.scrollCount = $(".scrollItems ul li").size();
	vibeSlider.func.vs_activateScrollButtons();
	vibeSlider.func.vs_positionOverlays();
	if($("#homeFeatured").size() > 0){
		vibeSlider.func.vs_randomizeOrder();
		vibeSlider.data.scrollIndex = 2;
		$("#scrollArrowLeft").css("display", "block");
	}
	if($("#wwdFeatured").size() > 0){
		vibeSlider.func.vs_randomizeOrder();
		vibeSlider.data.scrollIndex = 2;
		$("#scrollArrowLeft").css("display", "block");
		SCROLLVERT = false;
	}
	vibeSlider.func.vs_setItemPositions();
	vibeSlider.func.vs_setListPosition();
});
$(window).resize(function(){
	vibeSlider.func.vs_positionOverlays();
	vibeSlider.func.vs_setListPosition();
});



