$(document).ready(function () {
	init();	//init animation
});

/* FRONT PAGE ANIMATION */
var animationPeriod = 10000;
var animationDuration = 3000;

var videoStrip;
var videoStripItemWidth = 104;
var videoStripItemCount;
var videoStripPageSize = 4;
var videoStripCurrentPage = 0;
var videoStripCurrentItem = 0; 
var videoStripDelayNextPage = false;
var videoStripPageSelectors;
var mouseInVideo = false;

var heroRightQueue;
var heroRightCurrent = 0;
var mouseInHeroRight = false;

var sponsorAds;
var sponsorAdsItemWidth = 150;
var sponsorAdsItemCount;
var sponsorAdsPageSize = 6;
var sponsorAdsCurrentPage = 0;
var sponsorAdsDelayNextPage = false;
var sponsorAdsHasMouse = false;

var globalMemberItems;
var globalMemberQueue;
var globalMemberCurrent = 0;
var mouseInGlobalMember = false;

var bannerAdsDisplay;
var bannerAdsStore;
var bannerAdNo = 0;
var bannerAdsHasMouse = false;

var newsHasMouse = false;
var newsDelayNext = false;
var newsInMotion  = false;

function init() {
	initVideoStrip();
	initHeroRight();
	initSponsorAds();
	initGlobalMember();
	initBannerAds();
	initNews();
	window.setTimeout(periodicAnimation, animationPeriod);
} 

function initVideoStrip() {
	$('#hero_left_info li').hide();
	$('#video').mouseenter(function(){
		mouseInVideo = true;
    }).mouseleave(function(){
		mouseInVideo = false;
    });
	videoStrip = $('#video_strip');
	videoStripItemCount = videoStrip.children().length;
	videoStrip.children().each( function (index, item) {
		$(item).children().attr('href', index);
	});
	/*createVideoPageSelectors();*/
	var selectedOverlay = $('<img class="selected" src="/images/strip_item_frame.png"/>');
	$('#video_strip a').append(selectedOverlay);
	videoStripCurrentItem = Math.random()*videoStripItemCount;
	$('#video_strip li').eq(videoStripCurrentItem).addClass('selected');
	$('#hero_left_info li').eq(videoStripCurrentItem).show();
	/*videoStripCurrentPage = Math.floor(startItem/4);*/
	shiftVideoStrip();
	/*var playOverlay = $('<img src="/visage/static/build/images/play3.png"/>');
	var playOverlayHover = $('<img class="hover" src="/visage/static/build/images/play_hover.png"/>');
	$('#video_strip a').append(playOverlay);
	$('#video_strip a').append(playOverlayHover).click(selectVideo);*/
	$('#video_strip a').click(function() {
		videoStripCurrentItem = $(this).attr('href');
		displayStripDetail();
		return false;
	});
	$('#videoPageSelectors .arrow-left').click(function() {
		if(--videoStripCurrentItem < 0) videoStripCurrentItem = 0;
		displayStripDetail();
                return false;
	});
	$('#videoPageSelectors .arrow-right').click(function() {
                if(++videoStripCurrentItem > 3) videoStripCurrentItem = 3;
                displayStripDetail();
                return false;
        });
}

function createVideoPageSelectors() {
	var maxPage = Math.ceil(videoStripItemCount / videoStripPageSize);
	if (maxPage < 2) return;
	var selectorsBox = $('#videoPageSelectors');
	var newSelector = $('<a class="arrow-left" alt="previous">&nbsp;</a>').attr('href', 'previous');
	selectorsBox.append(newSelector);
	for (var i = 0; i < maxPage; i++) {
		var newSelector = $('<a class="selector"></a>').text(i+1).attr('href', i+1);
		selectorsBox.append(newSelector);
	}
	var newSelector = $('<a class="arrow-right" alt="next">&nbsp;</a>').attr('href', 'next');
	selectorsBox.append(newSelector);
	selectorsBox.children().click(setVideoStripPage);
	selectorsBox.show();
	videoStripPageSelectors = $("#videoPageSelectors .selector");
	videoStripPageSelectors.eq(0).addClass("bold");
}

function initHeroRight() {
	$('#hero_login_btn').click(displayLoginTip);
	$("#hero_right").mouseenter(function(){
		mouseInHeroRight = true;
    }).mouseleave(function(){
		mouseInHeroRight = false;
    });
	heroRightQueue = $('.hero_right_item');
	heroRightQueue.eq(0).show();	
}

var wigglingLoginTip = false;

function displayLoginTip() {
	if (wigglingLoginTip == true) return;
	wigglingLoginTip = true;
	$('html, body').animate({scrollTop:0}, 'fast');
	var tli = $('#tip-logged-in');
	var tlo = $('#tip-logged-out');
	$('.login-box').hide();
	if(session.authenticated == "true") {
		$('#loggedin').show();
		$('#greeting-name').html(session.greetingName);
		tlo.hide();
		tli.css('left', '500px');
		if (tli.is(':hidden')) tli.fadeIn(200, wiggleLoginTip);
		else tli.fadeIn(0, wiggleLoginTip);
	} else {
		$('#login').show();
		tli.hide();
		tlo.css('left', '500px');
		if (tlo.is(':hidden')) tlo.fadeIn(200, wiggleLoginTip);
		else tlo.fadeIn(0, wiggleLoginTip);
	}		
	
	return false;
}

function wiggleLoginTip(elem) {
	$(this).animate({left: '490px'}, 200, 'swing', function(){
		$(this).animate({left: '500px'}, 200, 'swing', function(){
			$(this).animate({left: '485px'}, 300, 'swing', function(){
				$(this).animate({left: '500px'}, 300, 'swing', function(){
					$(this).animate({left: '480px'}, 400, 'swing', function(){
						$(this).animate({left: '500px'}, 400, 'swing', function() {
							wigglingLoginTip = false;
						});
					});
				});
			});
		});
	});
}

function initGlobalMember() {
	$("#global_member_holder").mouseenter(function(){
		mouseInGlobalMember = true;
    }).mouseleave(function(){
		mouseInGlobalMember = false;
    });
	globalMemberItems = $('.global_member');
	//globalMemberQueue = $('.global_member');
	globalMemberQueue = new Array();
	while (globalMemberQueue.length < globalMemberItems.size()) {
		var candidate = Math.floor(Math.random()*globalMemberItems.size());
		var alreadyExists = false;
		for (var i = 0; i < globalMemberQueue.length; i++) {
			if (candidate == globalMemberQueue[i]) alreadyExists = true;
		}
		if (alreadyExists == false) globalMemberQueue.push(candidate);		
	}
	//globalMemberCurrent = Math.floor(Math.random()*globalMemberQueue.size());
	globalMemberItems.eq(globalMemberQueue[globalMemberCurrent]).show();	
}

function initBannerAds() {
	bannerAdsDisplay = $('#banner_ad');
	bannerAdsStore = $('#banner_ad_store');
	bannerAdsStore = bannerAdsDisplay.clone(true);
	bannerAdsDisplay.empty();
	bannerAdsDisplay.mouseenter(function(){
		bannerAdsHasMouse = true;
    }).mouseleave(function(){
		bannerAdsHasMouse = false;
    });
	bannerAdNo = Math.floor(Math.random()*bannerAdsStore.children().size());
	bannerAdsDisplay.append(bannerAdsStore.children().eq(bannerAdNo).clone());
}

function periodicAnimation() {
	nextVideoStripPage();
	heroRightRotate();
	nextSponsorAdsPage();
	globalMemberRotate();
	bannerAdsRotate();
	newsRotateDown();
	window.setTimeout(periodicAnimation, animationPeriod);
}

function setVideoStripPage() {
	videoStripDelayNextPage = true;
	var action = $(this).attr('href');
	switch (action) {
		case 'previous': videoStripCurrentPage--; break;
		case 'next': videoStripCurrentPage++; break;
		default: videoStripCurrentPage = action - 1;
	}
	shiftVideoStrip();
	return false;
}

function initSponsorAds() {
	$('#sup_events_ads_frame').mouseenter(function(){
		sponsorAdsHasMouse = true;
    }).mouseleave(function(){
		sponsorAdsHasMouse = false;
    });
	sponsorAds = $('#sup_events_ads');
	sponsorAdsItemCount = sponsorAds.children().length;
	$('#sup_events_ads_left').attr('href', 'previous').click(setSponsorAdsPage);
	$('#sup_events_ads_right').attr('href', 'next').click(setSponsorAdsPage);
}

function nextVideoStripPage() {
	if (mouseInVideo || videoStripDelayNextPage) {videoStripDelayNextPage = false; return;}
	videoStripCurrentPage++;
	shiftVideoStrip();
}

function shiftVideoStrip() {
	var maxPage = Math.ceil(videoStripItemCount / videoStripPageSize) - 1;
	if (maxPage < 1) return false;
	if (videoStripCurrentPage < 0) videoStripCurrentPage = maxPage;
	if (videoStripCurrentPage > maxPage) videoStripCurrentPage = 0;
	var left = -(videoStripCurrentPage * videoStripItemWidth * videoStripPageSize);
	videoStrip.animate({"left": left}, animationDuration);
	videoStripPageSelectors.removeClass('bold');
	videoStripPageSelectors.eq(videoStripCurrentPage).addClass('bold');
	return false;
}

function displayStripDetail() {
	//var index = $(this).attr('href');
	$('#hero_left_info li').hide();
	$('#hero_left_info li').eq(videoStripCurrentItem).show();
	$('#video_strip li').removeClass('selected');
	$('#video_strip li').eq(videoStripCurrentItem).addClass('selected');
	return false;
}

function heroRightRotate() {
	if (mouseInHeroRight) return;
	var heroRightPrevious = heroRightCurrent++;
	if (heroRightCurrent + 1 > heroRightQueue.length) heroRightCurrent = 0;
	heroRightQueue.eq(heroRightPrevious).fadeOut(animationDuration);
	heroRightQueue.eq(heroRightCurrent).fadeIn(animationDuration);
}

function globalMemberRotate() {
	if (mouseInGlobalMember) return;
	var globalMemberPrevious = globalMemberCurrent++;
	if (globalMemberCurrent + 1 > globalMemberQueue.length) globalMemberCurrent = 0;
	globalMemberItems.eq(globalMemberQueue[globalMemberPrevious]).fadeOut(animationDuration);
	globalMemberItems.eq(globalMemberQueue[globalMemberCurrent]).fadeIn(animationDuration);
}


function setSponsorAdsPage() {
	sponsorAdsDelayNextPage = true;
	var action = $(this).attr('href');
	switch (action) {
		case 'previous': sponsorAdsCurrentPage--; break;
		case 'next': sponsorAdsCurrentPage++; break;
		default: sponsorAdsCurrentPage = action - 1;
	}
	shiftSponsorAds();
	return false;
}

function nextSponsorAdsPage() {
	if (sponsorAdsHasMouse || sponsorAdsDelayNextPage) {sponsorAdsDelayNextPage = false; return;}
	sponsorAdsCurrentPage++;
	shiftSponsorAds();
}

function shiftSponsorAds() {
	var maxPage = Math.ceil(sponsorAdsItemCount / sponsorAdsPageSize) - 1;
	if (maxPage < 1) return false;
	if (sponsorAdsCurrentPage < 0) sponsorAdsCurrentPage = maxPage;
	if (sponsorAdsCurrentPage > maxPage) sponsorAdsCurrentPage = 0;
	var left = -(sponsorAdsCurrentPage * sponsorAdsItemWidth * sponsorAdsPageSize);
	sponsorAds.fadeOut(animationDuration / 2, function () {
		sponsorAds.css('left',''+left+'px');
		sponsorAds.fadeIn(animationDuration / 2);
	});
	//sponsorAds.animate({"left": left}, animationDuration);
	return false;
}

function bannerAdsRotate() {
	if (bannerAdsHasMouse) return;
	var oldNo = bannerAdNo;
	//Make sure that the same banner ad doesn't appear twice in a row.
	while (oldNo == bannerAdNo && bannerAdsStore.children().size() > 1) {
		bannerAdNo = Math.floor(Math.random()*bannerAdsStore.children().size());
	}
	bannerAdsDisplay.append(bannerAdsStore.children().eq(bannerAdNo).clone());
	bannerAdsDisplay.animate({"top": -63}, animationDuration, function() {
		//alert(121);
		bannerAdsDisplay.css('top', 0);
		bannerAdsDisplay.children().eq(0).remove();
	});
}

function initNews() {
	$('#news_holder').mouseenter(function(){
		newsHasMouse = true;
    }).mouseleave(function(){
		newsHasMouse = false;
    });
	$('#midrow_right .scroll.up').click(function () {
		if (newsInMotion == true) return;
		newsDelayNext = false;
		newsRotateUp();
		newsDelayNext = true;		
	});
	$('#midrow_right .scroll.down').click(function () {
		if (newsInMotion == true) return;
		newsDelayNext = false;
		newsRotateDown();
		newsDelayNext = true;
	});
}

function newsRotateDown() {
	if (newsHasMouse == true || newsDelayNext == true) {
		newsDelayNext = false;
		return;
	}
	newsInMotion = true;
	$('#news_items').animate({'top': -120}, animationDuration,
		function() {
			$('#news_items .newsitem').first().appendTo('#news_items');
			$('#news_items').css('top', 0);
			newsInMotion = false;
	});
}

function newsRotateUp() {
	if (newsHasMouse == true || newsDelayNext == true) {
		newsDelayNext = false;
		return;
	}
	newsInMotion = true;
	$('#news_items .newsitem').last().prependTo('#news_items');
	$('#news_items').css('top', -120);
	$('#news_items').animate({'top': 0}, animationDuration, function () {newsInMotion = false;});
}
