$(document).ready(function() {
	$("ul#yourBPSLinks").ajaxifyLinks({
		ajaxUrl   : '/ajax/0/sitePromoAjaxListingBlock.html',
		target    : '#promoContentBody',
		anim      : {opactiy: 'toggle'},
		animDuration	: 200,
		clickCallback:function(data, link) {				
			$("ul#yourBPSLinks li a").removeClass("selected");
			$(link).addClass("selected");					
		}
	});
	
	NewsTicker.initialize($('#siteNews'));
});

var NewsTicker = (function() {
	var selectedElement;
	var newsTickerArray;
	
	var pausedClicked = false;	
	var newsTickerScrollHandler; 
	
	var constructor = function(element) {
		selectedElement = element;
		newsTickerArray = $("h3", element);
		registerClick();
		startForwardScroll();
	};
	
	var currentItemPositionNonArrayIndex = function() {
		return newsTickerArray.index($("h3", selectedElement).not(".hide")) + 1;
	};
	
	var previousItemPositionNonArrayIndex = function() {
		var prevItemPosNonArrayIndex = currentItemPositionNonArrayIndex() - 1;
		if (prevItemPosNonArrayIndex == 0) {
			prevItemPosNonArrayIndex = newsTickerArray.size();
		}
		
		return 	prevItemPosNonArrayIndex;
	};
	
	var nextItemPositionNonArrayIndex = function() {
		var nxtItemPosNonArrayIndex = currentItemPositionNonArrayIndex() + 1;
		if (nxtItemPosNonArrayIndex > newsTickerArray.size()) {
			nxtItemPosNonArrayIndex = 1;
		}
		
		return nxtItemPosNonArrayIndex;
	};
		
	var transistNewsTicker = function(hideItemArrayPosition, showItemArrayPosition) {
		$(newsTickerArray[hideItemArrayPosition]).fadeOut("1000");
		$(newsTickerArray[hideItemArrayPosition]).addClass("hide");
		
		$(newsTickerArray[showItemArrayPosition]).fadeIn("1000");
		$(newsTickerArray[showItemArrayPosition]).removeClass("hide");	
	};
	
	var prevAction = function() {				
		transistNewsTicker(currentItemPositionNonArrayIndex() - 1, previousItemPositionNonArrayIndex() - 1);
	};
	
	var nxtAction = function() {		
		transistNewsTicker(currentItemPositionNonArrayIndex() - 1, nextItemPositionNonArrayIndex() - 1);		
	};
	
	var registerClick = function() {
		$("a.left", selectedElement).click(function() {
			clearTimeout(newsTickerScrollHandler);
			prevAction();
			startForwardScroll();
			return false;
		});
		
		$("a.right", selectedElement).click(function() {
			clearTimeout(newsTickerScrollHandler);
			nxtAction();
			startForwardScroll();
			return false;
		});
		
		$("a.pause", selectedElement).click(function() {
			if (pausedClicked) {
				startForwardScroll();
				pausedClicked = false;
			}
			else {
				clearTimeout(newsTickerScrollHandler);
				pausedClicked = true;
			}
			return false;
		});
	};
	
	// Used 2 function so that it won't go to the next news ticker when started
	var startForwardScroll = function() {				
		newsTickerScrollHandler = setTimeout(forwardScrollLooper, 10000);
	};
	var forwardScrollLooper = function() {
		nxtAction();
		newsTickerScrollHandler = setTimeout(forwardScrollLooper, 10000);
	};
	
	return {
		initialize : constructor
	}
})();
