/** 
 * Thumbnail Slider V1.0
 * Pamela Ueckerman 2007 
 *
 */

/** Generic method for allowing a sliding / scrolling window of content. */

jQuery.fn.slide = function(direction, distance, duration) {
		var obj = $(this);
		var parent = $(obj).parent();

		var x;
		var y;
		var xDist = 0;
		var yDist = 0;
			
		if (direction == "LEFT" || direction == "RIGHT") {
			(direction == "LEFT")? 	x = distance : x = -distance;
				
			var currentLeftPosition = $(obj).position().left;
			var scrollableWidth = ($(parent).width() > 0)? $(parent).width() : -1;
			var maxScrollX = 0;
			$(obj).find("li").each(function () { maxScrollX += $(this).outerWidth();});
			
			if(x > 0) {
				if (currentLeftPosition < 0 && x <= -currentLeftPosition) {
					xDist = x;
				} else if (currentLeftPosition < 0 && x > -currentLeftPosition) {
					xDist = -currentLeftPosition;
				} else {
					xDist = 0;
				}		
			} else {
				if (scrollableWidth + -currentLeftPosition < maxScrollX && -x <= maxScrollX - (scrollableWidth + -currentLeftPosition)) {
					xDist = x;
				} else if (scrollableWidth + -currentLeftPosition < maxScrollX && -x > maxScrollX - (scrollableWidth + -currentLeftPosition)) {
					xDist = -(maxScrollX - (scrollableWidth + -currentLeftPosition));
				} else {
					xDist = 0;
				}		
			}
			
			$(obj).animate({
				left: (currentLeftPosition + xDist)
			}, duration );			


		} else if (direction == "UP" || direction == "DOWN") {

			(direction == "UP")? y = -distance : y = distance;
		
			var currentTopPosition = $(obj).position().top;
			var scrollableHeight = $(parent).innerHeight();
			var maxScrollY = (!maxHeight && maxHeight != -1)? $(parent).scrollHeight : maxHeight;
	
			if(y > 0) {
				if (currentTopPosition < 0 && y <= -currentTopPosition) {
					yDist = y;
				} else if (currentTopPosition < 0 && y > -currentTopPosition) {
					yDist = -currentTopPosition;
				} else {
					yDist = 0;
				}		
			} else {
				if (scrollableHeight + -currentTopPosition < maxScrollY && -y <= maxScrollY - (scrollableHeight + -currentTopPosition)) {
					yDist = y;
				} else if (scrollableHeight  + -currentTopPosition < maxScrollY && -y > maxScrollY - (scrollableHeight + -currentTopPosition)) {
					yDist = -(maxScrollY - (scrollableHeight + -currentTopPosition));
				} else {
					yDist = 0;
				}	
			}	
			
			$(obj).animate({ 
	        	left: (currentTopPosition + xDist)
	      	}, duration );
	

		}

		
};


