BCBSettings.HomeTwitModule = {};
BCBSettings.HomeTwitModule._conf = { expandedHeight: 931 }

$(function() {
	BCBSettings.HomeTwitModule.doInitSetup();
});

BCBSettings.HomeTwitModule.doInitSetup = function() {
	$("#home-twitter-module-main-hold").each(function() {
		BCBSettings.HomeTwitModule.containerRef = this;
		BCBSettings.HomeTwitModule._conf.originalOffset = $(BCBSettings.HomeTwitModule.containerRef).offset();
		BCBSettings.HomeTwitModule.$pageBodyContent = $(BCBSettings.HomeTwitModule.containerRef).parent();
		BCBSettings.HomeTwitModule.$contentContainer = $(BCBSettings.HomeTwitModule.containerRef).find("#home-twitter-content-area");
		BCBSettings.HomeTwitModule._conf.originalHeight = BCBSettings.HomeTwitModule.$contentContainer.outerHeight();
		
		if(BCBSettings.HomeTwitModule.$contentContainer.length > 0) {
			// Scroll content parts
			BCBSettings.HomeTwitModule.$scrollArea = $('#home-twitter-content-area', BCBSettings.HomeTwitModule.containerRef);
			BCBSettings.HomeTwitModule.$scrollContent = $('.twitter-module-list', BCBSettings.HomeTwitModule.containerRef);
			
			BCBSettings.HomeTwitModule.$moduleEntries = BCBSettings.HomeTwitModule.$scrollContent.find("ul.twitter-row-list li a");
			BCBSettings.HomeTwitModule.totalEntryCount = BCBSettings.HomeTwitModule.$moduleEntries.length;
			
			var currIDItr = 1;
			BCBSettings.HomeTwitModule.$moduleEntries.each(function() {
				$(this).attr("id", "twit-blog-ent-"+currIDItr);
				currIDItr = currIDItr + 1;
			});
			
			BCBSettings.HomeTwitModule.rowEntryHeight = BCBSettings.HomeTwitModule.$scrollContent.children("li:first").outerHeight();
			
			BCBSettings.HomeTwitModule.triggerPreviousAnimation;
			BCBSettings.HomeTwitModule.triggerMoreAnimation;
			
			/** Initialise standard header bar functionality **/
			BCBSettings.HomeTwitModule.$headerContainer = $(BCBSettings.HomeTwitModule.containerRef).find("#home-twitter-head-bar");
			
			BCBSettings.HomeTwitModule.$headerContainer.hover(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					$(this).addClass("hovered");
				}
			},
			function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					$(this).removeClass("hovered");
				}
			});

			BCBSettings.HomeTwitModule.$headerContainer.click(function() {
				return false;
			});
			
			BCBSettings.HomeTwitModule.$headerContainer.mousedown(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					BCBSettings.HomeTwitModule.moveEntriesBack();
			
					BCBSettings.HomeTwitModule.triggerMoreAnimation = setInterval(BCBSettings.HomeTwitModule.moveEntriesBack, 550);
				}
			});
			
			BCBSettings.HomeTwitModule.$headerContainer.mouseup(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					clearInterval(BCBSettings.HomeTwitModule.triggerMoreAnimation);
				}
			});
			/** End Initialise standard header bar functionality **/
			
			/** Initialise standard footer bar functionality **/
			BCBSettings.HomeTwitModule.$footerContainer = $(BCBSettings.HomeTwitModule.containerRef).find("#home-twitter-bottom-bar");
			
			BCBSettings.HomeTwitModule.$footerContainer.hover(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					$(this).addClass("hovered");
				}
			},
			function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					$(this).removeClass("hovered");
				}
			});
			
			BCBSettings.HomeTwitModule.$footerContainer.click(function() {
				return false;
			});

			BCBSettings.HomeTwitModule.$footerContainer.mousedown(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					BCBSettings.HomeTwitModule.moveEntriesForward();

					BCBSettings.HomeTwitModule.triggerPreviousAnimation = setInterval(BCBSettings.HomeTwitModule.moveEntriesForward, 550);
				}
			});

			BCBSettings.HomeTwitModule.$footerContainer.mouseup(function() {
				if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
					clearInterval(BCBSettings.HomeTwitModule.triggerPreviousAnimation);
				}
			});
			/** End Initialise standard footer header bar functionality **/
			
			BCBSettings.HomeTwitModule.refreshTriggerIcons();
		}
	});
}

BCBSettings.HomeTwitModule.refreshTriggerIcons = function() {
	if(typeof BCBSettings.HomeTwitModule.$triggerCont=='undefined') {
		BCBSettings.HomeTwitModule.$triggerCont = $(BCBSettings.HomeTwitModule.containerRef).find("#twit-mod-trigger-hold");
		BCBSettings.HomeTwitModule.$triggerCont.hover(function() {
		  if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
			  BCBSettings.HomeTwitModule.$headerContainer.removeClass("hovered");
		  }
		},
		function() {
		  if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
			  BCBSettings.HomeTwitModule.$headerContainer.addClass("hovered");
		  }
		});
	}
	
	if(BCBSettings.HomeTwitModule.$triggerCont.length > 0) {
		if(typeof BCBSettings.HomeTwitModule.$triggerFullScreen=='undefined') {
			BCBSettings.HomeTwitModule.$triggerFullScreen = $("<a id=\"twit-mod-trig-full-screen\" href=\"#\" title=\"Trigger expanded mode\"><span class=\"accessibility\">Trigger expanded mode</span></a>");
			
			BCBSettings.HomeTwitModule.$triggerFullScreen.click(function() {
				BCBSettings.HomeTwitModule.triggerExpandedMode();
				return false;
			});
			
			BCBSettings.HomeTwitModule.$triggerCont.append(BCBSettings.HomeTwitModule.$triggerFullScreen);
		}
		
		if(typeof BCBSettings.HomeTwitModule.$triggerCarousel=='undefined') {
			BCBSettings.HomeTwitModule.$triggerCarousel = $("<a id=\"twit-mod-trig-carousel\" href=\"#\" title=\"Trigger carousel mode\"><span class=\"accessibility\">Trigger carousel mode</span></a>");
			
			BCBSettings.HomeTwitModule.$triggerCarousel.click(function() {
				BCBSettings.HomeTwitModule.triggerCollapsedMode();
				return false;
			});
			
			BCBSettings.HomeTwitModule.$triggerCont.append(BCBSettings.HomeTwitModule.$triggerCarousel);
		}
		
		if($(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
			if(BCBSettings.HomeTwitModule.$triggerCarousel.hasClass("selected")) {
				BCBSettings.HomeTwitModule.$triggerCarousel.removeClass("selected");
			}
			
			if(!BCBSettings.HomeTwitModule.$triggerFullScreen.hasClass("selected")) {
				BCBSettings.HomeTwitModule.$triggerFullScreen.addClass("selected");
			}
		} else {
			if(BCBSettings.HomeTwitModule.$triggerFullScreen.hasClass("selected")) {
				BCBSettings.HomeTwitModule.$triggerFullScreen.removeClass("selected");
			}
			
			if(!BCBSettings.HomeTwitModule.$triggerCarousel.hasClass("selected")) {
				BCBSettings.HomeTwitModule.$triggerCarousel.addClass("selected");
			}
		}
	}
}

BCBSettings.HomeTwitModule.triggerExpandedMode = function() {
	if($(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) { return; }
	
	BCBSettings.HomeTwitModule.$triggerCont.css("display", "none");
	BCBSettings.HomeTwitModule.$scrollContent.stop(true, true);
	BCBSettings.HomeTwitModule.$scrollContent.css("top", "0px");
	BCBSettings.HomeTwitModule.$scrollContent.css("left", "0px");
	BCBSettings.HomeTwitModule.$moduleEntries.toggle(false);
	$('html, body').animate({ scrollTop: 0 }, { duration: 1000, queue: false });
	BCBSettings.HomeTwitModule.$pageBodyContent.find("#home-media-carousel-hold").animate({ height: 'toggle', opacity: 'toggle' }, { duration: 1000, queue: false });
	BCBSettings.HomeTwitModule.$pageBodyContent.find("#home-second-row-hold").animate({ height: 'toggle', opacity: 'toggle' }, { duration: 1000, queue: false });
	BCBSettings.HomeTwitModule.$contentContainer.animate({ height: BCBSettings.HomeTwitModule._conf.expandedHeight }, { duration: 1000, queue: false, easing: 'jswing', complete: function() {
		$(BCBSettings.HomeTwitModule.containerRef).addClass("expanded");
		if(BCBSettings.HomeTwitModule.$headerContainer.hasClass("hovered")) { BCBSettings.HomeTwitModule.$headerContainer.removeClass("hovered"); }
		BCBSettings.HomeTwitModule.$triggerCont.css("display", "block");
		BCBSettings.HomeTwitModule.refreshTriggerIcons();
		
		BCBSettings.HomeTwitModule.animateExpandedView();
	} });
}

BCBSettings.HomeTwitModule.triggerCollapsedMode = function() {
	if(!$(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) { return; }
	
	BCBSettings.HomeTwitModule.$triggerCont.css("display", "none");
	BCBSettings.HomeTwitModule.$scrollContent.stop(true, true);
	BCBSettings.HomeTwitModule.$scrollContent.css("top", "0px");
	BCBSettings.HomeTwitModule.$scrollContent.css("left", "0px");
	BCBSettings.HomeTwitModule.$pageBodyContent.find("#home-media-carousel-hold").animate({ height: 'toggle', opacity: 'toggle' }, { duration: 1000, queue: false });
	BCBSettings.HomeTwitModule.$pageBodyContent.find("#home-second-row-hold").animate({ height: 'toggle', opacity: 'toggle' }, { duration: 1000, queue: false });
	BCBSettings.HomeTwitModule.$contentContainer.animate({ height: BCBSettings.HomeTwitModule._conf.originalHeight }, { duration: 1000, queue: false, easing: 'jswing', complete: function() {
		$('html, body').animate({ scrollTop: BCBSettings.HomeTwitModule._conf.originalOffset.top }, { duration: 100, queue: false });
		$(BCBSettings.HomeTwitModule.containerRef).removeClass("expanded");
		BCBSettings.HomeTwitModule.$triggerCont.css("display", "block");
		BCBSettings.HomeTwitModule.$moduleEntries.toggle(true);
		BCBSettings.HomeTwitModule.$moduleEntries.stop(true, true);
		BCBSettings.HomeTwitModule.entryToDisplay = 1;
		if(BCBSettings.HomeTwitModule.$headerContainer.hasClass("hovered")) { BCBSettings.HomeTwitModule.$headerContainer.removeClass("hovered"); }
		BCBSettings.HomeTwitModule.refreshTriggerIcons();
	} });
}

BCBSettings.HomeTwitModule.animateExpandedView = function() {
	if(typeof BCBSettings.HomeTwitModule.entryToDisplay=='undefined') {
		BCBSettings.HomeTwitModule.entryToDisplay = 1;
	}
	
	if($(BCBSettings.HomeTwitModule.containerRef).hasClass("expanded")) {
		if(BCBSettings.HomeTwitModule.entryToDisplay <= BCBSettings.HomeTwitModule.totalEntryCount) {
			var targetId = "twit-blog-ent-"+BCBSettings.HomeTwitModule.entryToDisplay;
			
			$targetEntry = BCBSettings.HomeTwitModule.$moduleEntries.filter("#"+targetId);
	
			$targetEntry.find(".content-hold").toggle(false);
			$targetEntry.animate({
					width: 'toggle',
					height: 'toggle',
					opacity: 'toggle'
				}, 175, 'easeOutBounce', function() {
					$targetEntry.find(".content-hold").toggle(true);
					BCBSettings.HomeTwitModule.entryToDisplay = BCBSettings.HomeTwitModule.entryToDisplay + 1;
					BCBSettings.HomeTwitModule.animateExpandedView();
			});
		}
	}
}

BCBSettings.HomeTwitModule.moveEntriesForward = function() {
	var currTopShift = BCBSettings.HomeTwitModule.$scrollContent.position().top;
	var contentHeightDisplay = currTopShift;

	if(contentHeightDisplay < 0) {
		contentHeightDisplay = -1 * contentHeightDisplay;
	}

	contentHeightDisplay = contentHeightDisplay + BCBSettings.HomeTwitModule.$scrollArea.height();

	if(BCBSettings.HomeTwitModule.$scrollContent.height() > contentHeightDisplay) {
		var newTop = (contentHeightDisplay - BCBSettings.HomeTwitModule.$scrollArea.height()) + BCBSettings.HomeTwitModule.rowEntryHeight;

		if((newTop + BCBSettings.HomeTwitModule.$scrollArea.height()) > BCBSettings.HomeTwitModule.$scrollContent.height()) {
			newTop = BCBSettings.HomeTwitModule.$scrollContent.height() - BCBSettings.HomeTwitModule.$scrollArea.height();
		}

		BCBSettings.HomeTwitModule.$scrollContent.animate({
			top: ((-1 * newTop)) + 'px'
		}, 500, function () {
		});
	}
}

BCBSettings.HomeTwitModule.moveEntriesBack = function() {
	var currTopShift = BCBSettings.HomeTwitModule.$scrollContent.position().top;
	var contentHeightDisplay = currTopShift;

	if(contentHeightDisplay < 0) {
		contentHeightDisplay = -1 * contentHeightDisplay;
	}

	contentHeightDisplay = contentHeightDisplay + BCBSettings.HomeTwitModule.$scrollArea.height();

	if(currTopShift < 0) {
		var newTop = (contentHeightDisplay - BCBSettings.HomeTwitModule.$scrollArea.height()) - BCBSettings.HomeTwitModule.rowEntryHeight;

		if(newTop < 0) {
			newTop = 0;
		}

		BCBSettings.HomeTwitModule.$scrollContent.animate({
			top: ((-1 * newTop)) + 'px'
		}, 500, function () {
		});
	}
}
