jQuery(hookupSlidingBanner);

var BUTTON_WIDTH = 33;

function hookupSlidingBanner() {
	
	var banner_wrappers = jQuery("div.banner_wrap, div.banner_wrapper");
	
	banner_wrappers.each(function(id){
		
		var banners = jQuery(banner_wrappers[id]).find('div.slide');
		
		if(banners.length > 0) {
			
			var leftButton;
			var rightButton;
			var index = 0;
			var interval;
			
			function showButtons() {
				if (index > 0 && leftButton.is(":not(:visible)")) {
					leftButton.show("slide", { direction: "left" }, "fast");
				}
				if (index != banners.length - 1 && rightButton.is(":not(:visible)")) {
					rightButton.show("slide", { direction: "right" }, "fast");
				}
			}

			function hideButtons() {
				if (leftButton.is(":visible")) {
					leftButton.hide("slide", { direction: "left" }, "fast");
				}
				if (rightButton.is(":visible")) {
					rightButton.hide("slide", { direction: "right" }, "fast");
				}
			}

			function buildLeftButton() {
				var button = jQuery('<a class="left_button" href="#"></a>');
				button.click(transition(-1));
				button.hide();
				return button;
			}

			function buildRightButton() {
				var button = jQuery('<a class="right_button" href="#"></a>');
				button.click(transition(1));
				button.hide();
				return button;
			}

			function transition(direction) {
				return function() {
					index += direction;
					banners.animate(getAnimation(direction), 1000, "easeInOutCubic", showButtons);
					if (index < 1) {
						leftButton.hide();

						if (banners.is('.auto')) {
							clearInterval(interval);
							interval = setInterval(transition(1), 10000);
						}
					}
					if (index == banners.length - 1) {
						rightButton.hide();

						if (banners.is('.auto')) {
							clearInterval(interval);
							interval = setInterval(transition(-1), 10000);
						}
					}
					return false;
				}
			}

			function getAnimation(direction) {
				var operator = direction == 1 ? "-=" : "+=";
				return { left: operator + (banners.width()) }
			}

			leftButton = buildLeftButton();
			rightButton = buildRightButton();
			banners.parent().parent().prepend(rightButton).prepend(leftButton).parent().parent().hover(showButtons, hideButtons);
			if (banners.is('.auto'))
				interval = setInterval(transition(1), 10000);			
		}
	});
}
