﻿Home = {

	init: function () {
		this.SlideshowVideos.init();
	},

	SlideshowVideos: {

		movideoLayoutURL: '',
		movideoApiKey: '',
		movideoFlashAppAlias: '',

		init: function () {

			var slideDelay = 0;

			// Find video holders and load video within slides
			$('#banner .video-holder').each(function () {
				var videoHolderId = $(this).attr('id');
				var movideoMediaID = videoHolderId.substring(videoHolderId.lastIndexOf('-') + 1)
				Home.SlideshowVideos.loadVideo(movideoMediaID);
				slideDelay = 4000;
			});

			// Set homepage banner slide show
			$("#home-page #banner .slides").cycle({
				fx: 'fade',
				speed: 'fast',
				timeout: 6000,
				next: '.next',
				prev: '.prev',
				pager: '.pager',
				delay: slideDelay, // initial delay, show allow any video to load up.
				before: function (currSlideElement, nextSlideElement, options, forwardFlag) {
					// before next slide, hide & pause any video
					var movideoMediaID = $(currSlideElement).attr('movideo-media-id');
					if (movideoMediaID)
						Home.SlideshowVideos.hidePauseVideo(movideoMediaID);
				},
				after: function (currSlideElement, nextSlideElement, options, forwardFlag) {
					// after the slide transition show andy videos on this slide.
					var movideoMediaID = $(nextSlideElement).attr('movideo-media-id');
					if (movideoMediaID)
						Home.SlideshowVideos.showVideo(movideoMediaID);
				}
			});

		},

		showVideo: function (movideoMediaID) {
			$('#videos').css('z-index', '100').find("#video-player-" + movideoMediaID).css('visibility', 'visible');
		},

		hidePauseVideo: function (movideoMediaID) {
			$('#videos').css('z-index', '0').find("#video-player-" + movideoMediaID).css('visibility', 'hidden').player('pause');
		},

		loadVideo: function (movideoMediaID) {
			if (movideoMediaID) {
				$('#video-player-' + movideoMediaID).html('');
				$('#video-player-' + movideoMediaID).player(
				{
					layoutURL: Home.SlideshowVideos.movideoLayoutURL,
					apiKey: Home.SlideshowVideos.movideoApiKey,
					flashAppAlias: Home.SlideshowVideos.movideoFlashAppAlias,
					mediaId: movideoMediaID,
					autoPlay: false
				})
				.bind("playerplay", function () { Home.SlideshowVideos.pauseSlideshow(movideoMediaID); })
				.bind("playerresume", function () { Home.SlideshowVideos.pauseSlideshow(movideoMediaID); })
				.bind("playerstop", function () { Home.SlideshowVideos.resumeSlideshow(movideoMediaID); })
				.bind("playerpause", function () { Home.SlideshowVideos.resumeSlideshow(movideoMediaID); });
			}
		},

		pauseSlideshow: function (movideoMediaID) {
			$('#banner .slides').cycle('pause');
			// Due to a delay in the video playing the slide may pause on the next slide. This code should 
			// display the correct slide if this happens...
			var slideIndex = $('#banner .slides .slide[movideo-media-id="' + movideoMediaID + '"]').index();
			$('#banner .slides').cycle(slideIndex);
		},

		resumeSlideshow: function () {
			$('#banner .slides').cycle('resume');
		}
	}
};

// on domready
$(document).ready(function () {
	Home.init();
});

