
// banner cycle variables
var bannerCycleTimer;
var bannerCycleRunning = true;
var bannerCycleIndex = 0;
var intervalDuration = 8000;
var cycleIfFlash = true;

// animation variables
var fadeInTime = 600;
var fadeOutTime = 50;

// html build variables
var bannerString = "";
var selectorString = "";
var mediaPath = "";
var buttonText = "";
var linkURL = "";
var linkText = "";
var linkThumb = "";
var mediaExtension = "";
var hasFlash = false;
var hasYouTube = false;
var isYouTube = false;
var youTubePath = "";
var youTubeThumb = "";
var youTubeLink = "";
var youTubeLinkText = "";

// flash variables
var flashWidth = 944;
var flashHeight = 531;
var swfPath = "/ltr/video_player/FlvPlayerTEG.swf";
var flashvars = {};
flashvars.flvWidth = flashWidth;
flashvars.flvHeight = flashHeight;
flashvars.autoPlay = "false";
var params = {};
params.bgcolor = "#FFFFFF";
params.wmode = "opaque";
var attributes = {};
attributes.id = "videoPlayer";

function onYouTubePlayerReady(){
	var $playerTarget = $('#myVideoPlayer');
	if($playerTarget.length > 0){
		//alert('addEventListener');
		$playerTarget[0].addEventListener('onStateChange', 'youTubeStateChange');
	}
}

function reinstateYouTubeThumb(){
	var $myVideoPlayer = $('#myVideoPlayer');
	var replacementString = '<div id="noFlashContent" width="'+$myVideoPlayer.attr('width')+'" height="'+$myVideoPlayer.attr('height')+'" style="display:none">';
	$myVideoPlayer.replaceWith(replacementString);
	$('#videoThumbButton').fadeIn(fadeInTime);
	$('#videoLinkOutButton').css('bottom','20px').fadeIn(fadeInTime);
}

function youTubeStateChange(newState){
	//-1 = "unstarted"
	// 0 = "ended"
	// 1 = "playing"
	// 2 = "paused"
	// 3 = "buffering"
	// 5 = "video cued"
	if(newState == 1 || newState == 3) stopAutoCycle();
	if(newState == 0 && $('#videoThumbButton').length > 0) reinstateYouTubeThumb();
}

function stopBannerCycle(){
	// set running to false and clear timer
	bannerCycleRunning = false;
	clearInterval(bannerCycleTimer);
}

// NB - this function will be called from both YouTube API and FlvPlayer
function stopAutoCycle(){
	if (bannerCycleRunning) stopBannerCycle();
	//$('#assetContainer').animate({top:'0px'},500).parent().animate({height:'531px'},500);
	enlargePlayerArea('#assetContainer');
}

function enlargePlayerArea(targetID){
	$(targetID).animate({top:'0px'},500).parent().animate({height:'531px'},500);
}

function preFlashContent(){
	return '<div id="noFlashContent" width="944" height="404">' + '<a href="http://www.adobe.com/go/getflashplayer">' + '<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />' + '</a>' + '<p style="font-size:12px">You need Flash player 9+ and JavaScript enabled to view this video.</p>' + '</div>';
}

// function to populate home banner
function populateHomeBanner(){
	
	// Decide if user doesn't have Flash, and needs the iFrame fallback for YouTube
	var useYoutubeFallback = (swfobject.hasFlashPlayerVersion("9.0.115")) ? false : true;
	//var useYoutubeFallback = true;
	
	// insert fade container div into page
	var mediaContainer = document.getElementById('homeMediaContainer');
	mediaContainer.innerHTML = '<div id="assetContainer" style="top:0px"></div><div id="fadeContainer" style="position:absolute; top:0; left:0; width:944px; height:531px; background:#FFFFFF"></div>';

	if(bannerContent.length == 1){
		$('#homeMediaSelector').css('height',0).css('padding',0).css('visible',false);
	}
	
	// loop through all objects in banner content array
	for (var i = 0; i < bannerContent.length; i++)
	{
		// get variables from array
		mediaPath = bannerContent[i].mediaPath;
		buttonText = bannerContent[i].buttonText;
		linkURL = bannerContent[i].linkURL;
		linkText = bannerContent[i].linkText;
		linkThumb = bannerContent[i].linkThumb;

		// if media path is present
		if (mediaPath)
		{
			// display first banner and link button
			if (i == 0)
			{
				// get media file extension from path
				mediaExtension = mediaPath.substring(mediaPath.lastIndexOf('.'), mediaPath.length);
				// if banner is a flash vid write
				if (mediaExtension == ".flv" || mediaExtension == ".mov"){
					$('#assetContainer').css('top','-63px');
					bannerString = preFlashContent();

					// embed flash
					flashvars.flvTarget = mediaPath;
					flashvars.flvThumb = linkThumb;
					flashvars.flvLink = linkURL;
					flashvars.linkOutText = linkText;
					flashvars.createExternalInterface = true;
					swfobject.embedSWF(swfPath, "noFlashContent", flashWidth, flashHeight, "9.0.0", false, flashvars, params, attributes);
					isYouTube = false;
				}

				// else if banner is a SWF write
				else if (mediaExtension == ".swf"){
					$('#assetContainer').css('top','-63px');
					bannerString = preFlashContent();

					// embed flash
					swfobject.embedSWF(mediaPath, "noFlashContent", flashWidth, flashHeight, "9.0.0", false, flashvars, params, attributes);
					isYouTube = false;
				}
				
				// else if is a YouTube video write html for no flash content
				else if(mediaExtension.indexOf(".com/watch?v") >= 0) {
					$('#assetContainer').css('top','-63px');
					bannerString = preFlashContent();
					isYouTube = true;
					youTubePath = mediaPath;
					youTubeThumb = linkThumb;
					youTubeLink = linkURL;
					youTubeLinkText = linkText;
				}
				// else write html for image banner
				else {
					if (linkURL) {bannerString = '<a href="' + linkURL + '" title="' + buttonText + '">';}
					bannerString = bannerString + '<img id="bannerImage" src="' + mediaPath + '" alt="' + buttonText + '" title="' + buttonText + '" />';
					if (linkURL) {bannerString = bannerString + '</a>';}
					isYouTube = false;
				}
			}
			// write media selector links
			selectorString = selectorString + '<a id="selectorButton' + i + '" href="javascript:void(0)" onclick="bannerSelect(' + i + ');return false;" title="' + buttonText + '">' + buttonText + '</a>';
		}
	}
	// replace fade container inner html with script-generated html
	var assetContainer = document.getElementById('assetContainer');
	assetContainer.innerHTML = bannerString;
	if(isYouTube){
		if(useYoutubeFallback && !(youTubeThumb != undefined && youTubeThumb != "")){
			stopAutoCycle();
			var youTubeFallback = 
				'<iframe height="531" frameborder="0" width="944" allowfullscreen="" ' +
					'src="https://www.youtube.com/embed/' + youTubePath.split('?v=')[1] + '?wmode=opaque&amp;rel=0&amp;autohide=1" ' +
					'title="YouTube video player"></iframe>';
			$('#noFlashContent').html(youTubeFallback);
			enlargePlayerArea('#assetContainer');
		}
		else{
			embedVideoPlayer(youTubePath,944,531,false,"noFlashContent","myVideoPlayer",youTubeThumb,youTubeLink,youTubeLinkText);
		}
	}

	// replace media selector inner html with script-generated html
	var mediaSelector = document.getElementById('homeMediaSelector');
	mediaSelector.innerHTML = selectorString;

	// set the on state of the first selector button
	document.getElementById('selectorButton0').className = "on";

	// if bannerImage is present
	if (document.getElementById('bannerImage') != null)
	{
		// jQuery function to wait for requested content to load
		$("#bannerImage").load(function()
		{
			// jQuery function to fade in container div opacity
			//$("#assetContainer").fadeIn(fadeInTime);
			$("#fadeContainer").fadeOut(fadeInTime);
		});
	}
	// if bannerImage is not present
	else
	{
		// jQuery function to fade in container div opacity
		//$("#assetContainer").fadeIn(0);
		$("#fadeContainer").fadeOut(0);
	}
	// detect whether any banners are flash
	for (var i in bannerContent){
		mediaPath = bannerContent[i].mediaPath;
		mediaExtension = mediaPath.substring(mediaPath.lastIndexOf('.'), mediaPath.length);
		if (mediaExtension == ".flv" || mediaExtension == ".mov") {hasFlash = true;}
		if (mediaExtension.indexOf(".com/watch?v") >= 0) {hasYouTube = true;}
	}
	// if there is more than one banner and all of them are images, start cycle
	if ((cycleIfFlash || (!hasFlash && bannerContent.length > 1)) && bannerContent.length > 1){
		bannerCycleTimer = setInterval("bannerCycle()",intervalDuration);
	}
}

// function to show selected banner
function bannerShow(selectedBanner){
	
	// Decide if user doesn't have Flash, and needs the iFrame fallback for YouTube
	var useYoutubeFallback = (swfobject.hasFlashPlayerVersion("9.0.115")) ? false : true;
	//var useYoutubeFallback = true;
	
	// displplay the overlay
	$("#fadeContainer").show();
	$('#homeMediaContainer').animate({height:'404px'},300);
	
	// set variables
	bannerString = "";
	mediaPath = bannerContent[selectedBanner].mediaPath;
	buttonText = bannerContent[selectedBanner].buttonText;
	linkURL = bannerContent[selectedBanner].linkURL;
	linkText = bannerContent[selectedBanner].linkText;
	linkThumb = bannerContent[selectedBanner].linkThumb;
	mediaExtension = mediaPath.substring(mediaPath.lastIndexOf('.'), mediaPath.length);
	calledFrom = document.getElementById('selectorButton' + selectedBanner);

	// loop through all buttons in homeMediaSelector and clear the class name
	var allSelectorButtons = document.getElementById('homeMediaSelector').getElementsByTagName('a');
	for (var i in allSelectorButtons){
		allSelectorButtons[i].className = "";
	}
	// set the on state of the selected button and blur focus
	calledFrom.className = "on";
	calledFrom.blur();

	// if banner is a flash vid or SWF write html for no flash content
	if (mediaExtension == ".flv" || mediaExtension == ".mov" || mediaExtension == ".swf"){
		bannerString = preFlashContent();
		isYouTube = false;
	}
	// else if is a YouTube video write html for no flash content
	else if(mediaExtension.indexOf(".com/watch?v") >= 0) {
		bannerString = preFlashContent();
		isYouTube = true;
		youTubePath = mediaPath;
		youTubeThumb = linkThumb;
		youTubeLink = linkURL;
		youTubeLinkText = linkText;
	}
	// else write html for image banner
	else {
		if (linkURL) {bannerString = '<a href="' + linkURL + '" title="' + buttonText + '">';}
		bannerString = bannerString + "<img id=\"bannerImage\" src=\"" + mediaPath + "\" alt=\"" + buttonText + "\" title=\"" + buttonText + "\" />";
		if (linkURL) {bannerString = bannerString + "</a>";}
		isYouTube = false;
	}
	// replace fade container inner html with script-generated html
	var assetContainer = document.getElementById('assetContainer');
	assetContainer.innerHTML = bannerString;

	// if banner is flash video
	if (mediaExtension == ".flv" || mediaExtension == ".mov")
	{
		$('#assetContainer').css('top','-63px');
		// embed flash
		flashvars.flvTarget = mediaPath;
		flashvars.flvThumb = linkThumb;
		flashvars.flvLink = linkURL;
		flashvars.linkOutText = linkText;
		flashvars.createExternalInterface = true;
		swfobject.embedSWF(swfPath, "noFlashContent", flashWidth, flashHeight, "9.0.0", false, flashvars, params, attributes);

		// jQuery function to fade in container div opacity (fades flash only if param transparency set)
		//$("#assetContainer").fadeIn(0);
		$("#fadeContainer").fadeOut(fadeInTime);
	}

	// if banner is SWF
	else if (mediaExtension == ".swf")
	{
		$('#assetContainer').css('top','-63px');
		// embed flash
		swfobject.embedSWF(mediaPath, "noFlashContent", flashWidth, flashHeight, "9.0.0", false, flashvars, params, attributes);

		// jQuery function to fade in container div opacity (fades flash only if param transparency set)
		//$("#assetContainer").fadeIn(0);
		$("#fadeContainer").fadeOut(fadeInTime);
	}
	
	// if banner is YouTube video
	else if(isYouTube){
		$('#assetContainer').css('top','-63px');
		if(useYoutubeFallback && !(youTubeThumb != undefined && youTubeThumb != "")){
			stopAutoCycle();
			var youTubeFallback = 
				'<iframe height="531" frameborder="0" width="944" allowfullscreen="" ' +
					'src="https://www.youtube.com/embed/' + youTubePath.split('?v=')[1] + '?wmode=opaque&amp;rel=0&amp;autohide=1" ' +
					'title="YouTube video player"></iframe>';
			$('#noFlashContent').html(youTubeFallback);
			enlargePlayerArea('#assetContainer');
			
			// jQuery function to fade in container div opacity (fades flash only if param transparency set)
			$("#fadeContainer").fadeOut(0);
		}
		else{
			embedVideoPlayer(youTubePath,944,531,false,"noFlashContent","myVideoPlayer",youTubeThumb,youTubeLink,youTubeLinkText);
			
			// jQuery function to fade in container div opacity (fades flash only if param transparency set)
			if(youTubeThumb == ""){
				$("#fadeContainer").fadeOut(0);
			}
			else{
				$("#fadeContainer").fadeOut(fadeInTime);
			}
		}
	}
	// if banner is an image
	else
	{
		$('#assetContainer').css('top','0px');
		// jQuery function to wait for requested content to load
		$('#bannerImage').load(function()
		{
			// jQuery function to fade in container div opacity
			//$("#assetContainer").fadeIn(fadeInTime);
			$("#fadeContainer").fadeOut(fadeInTime);
		});
	}
}

// function to fade in selected banner
function bannerFade(selectedBanner)
{
	// jQuery function to fade out container div opacity, then swap content
	$("#assetContainer").fadeOut(fadeOutTime, function(){bannerShow(selectedBanner);});
}

// function to stop banner cycle and select particular banner
function bannerSelect(selectedBanner)
{
	// stop banner cycle if running
	if (bannerCycleRunning)
	{
		// set running to false and clear timer
		bannerCycleRunning = false;
		clearInterval(bannerCycleTimer);
	}
	// call function to fade in selected banner
	bannerShow(selectedBanner);
	//bannerFade(selectedBanner);
}

// function to automatically cycle through banners
function bannerCycle()
{
	// if current cycle index is less than length of banner array add 1 to cycle index
	if (bannerCycleIndex < bannerContent.length-1){
		bannerCycleIndex += 1;
	}
	// else reset cycle index to zero
	else {
		bannerCycleIndex = 0;
	}
	// display banner of the current index
	bannerShow(bannerCycleIndex);
	//bannerFade(bannerCycleIndex);
}

