﻿/// <reference path="jquery.intellisense.js"/>

/****************
 INITIALISATION  
****************/

$(document).ready(function()
{

	if (slideshowImages.length > 0)
	{
		initSlideshow();
	}

	if ($("#SlidePanelLinks li").length > 0)
	{
		initSlidePanelLinks();
	}

	if ($("#SlidePanelVenueConfigurations li").length > 0)
	{
		initSlidePanelConfigurations();
	}

	if ($("#SlidePanel360View li").length > 0)
	{
		initSlidePanelVRs();
	}

	$("img.SlidePanelUp, img.SlidePanelDown").click(moveSlidePanel);
	$("#SlidePanelClose").click(function() { hideSlidePanel(); });
});

/****************
    SLIDESHOW    
****************/

var slidePanelTransitioning = false;
var slideshowTimer = null;
var slideshowDelay = 5000;
var slideshowIndex = 0;
var slideshowDisabled = false;
var slideshowPaused = false;
var slideCount = 0;

var initSlideshow = function()
{
	$("#PausePlayButton").click(pausePlaySlideshow);
	$("#PreviousButton").click(function()
	{
		pauseSlideshow();
		moveSlideshow(-1);
	});
	$("#NextButton").click(function()
	{
		pauseSlideshow();
		moveSlideshow(1);
	});

	// Show controls. Timeout is for a stupid bug in safari...
	window.setTimeout("$('#SlideshowControls').show();", 10);

	// Start
	slideshowTimer = window.setTimeout("playSlideshow()", slideshowDelay);
}

var changeSlideshowImage = function(index)
{
	if (index > -1 && index < slideshowImages.length)
	{
		var newImage = slideshowImages[index];
		var config =
			{
				title: newImage.title,
				imageUrl: newImage.url,
				caption: newImage.caption
			};
		App.changeHero(config);
	}
}

var pausePlaySlideshow = function()
{
	if (!slideshowDisabled)
	{
		if (slideshowPaused) playSlideshow();
		else pauseSlideshow();
	}
}

var pauseSlideshow = function()
{
	slideshowPaused = true;
	window.clearTimeout(slideshowTimer);
	$("#PausePlayButton").attr("src", "/Images/BtnPlay.gif").attr("alt", "Play");
}

var playSlideshow = function()
{
	slideshowPaused = false;
	$("#PausePlayButton").attr("src", "/Images/BtnPause.gif").attr("alt", "Pause");
	moveSlideshow(1);
	slideshowTimer = window.setTimeout("playSlideshow()", slideshowDelay);
}

var disableSlideshow = function()
{
	slideshowDisabled = true;
	pauseSlideshow();
	$("#SlideshowControls").addClass("Disabled");
}

var enableSlideshow = function()
{
	slideshowDisabled = false;
	$("#SlideshowControls").removeClass("Disabled");
}

var moveSlideshow = function(amount)
{
	if (!slideshowDisabled)
	{
		if (!slideshowPaused) window.clearTimeout(slideshowTimer);
		setSlideshowIndex(slideshowIndex + amount);
		changeSlideshowImage(slideshowIndex);
	}
}

var setSlideshowIndex = function(newIndex)
{
	if (newIndex < 0)
		slideshowIndex = slideshowImages.length - 1;
	else if (newIndex >= slideshowImages.length)
		slideshowIndex = 0;
	else
		slideshowIndex = newIndex;
}

/****************
  SLIDE PANEL    
****************/

var initSlidePanelLinks = function()
{
	$("#LinksTrigger").click(function() { showSlidePanel("Links"); });
	$("#SlidePanelLinks li").each(function(index)
	{
		$(this).click(function()
		{
			if (window.enableAjaxTransitions)
			{
				App.executeAjaxLink($(this).find("a").attr("href"));
				return false;
			}
			else
			{
				window.location.href = $(this).find("a").attr("href");
			}
		});
	});

	// Show the controls & buttons. The timeout is for a stupid bug in safari...
	window.setTimeout("$('#SlideTriggers, #LinksTrigger').show();", 10);
}

var initSlidePanelConfigurations = function()
{
	$("#VenueConfigurations").click(function() { showSlidePanel("Configurations"); });
	$("#SlidePanelVenueConfigurations li").each(function(index)
	{
		$(this).click(function()
		{
			var configImage = configImages[index];
			var config =
				{
					imageUrl: configImage.url,
					caption: configImage.caption
				};
			App.changeHero(config);
		});
	});

	// Show the controls & buttons. The timeout is for a stupid bug in safari...
	window.setTimeout("$('#SlideTriggers, #VenueConfigurations').show();", 10);
}

var initSlidePanelVRs = function()
{
	$("#360View").click(function() { showSlidePanel("360"); });
	$("#SlidePanel360View li").each(function(index)
	{
		$(this).click(function()
		{
			var vrMovie = configVRs[index];
			var venueImage = $("#HeroContent");
			var modalPadding = 14;
			var movieWidth = venueImage.width() - (modalPadding * 2);
			var movieHeight = venueImage.height() + $("#ControlPanel").height() - (modalPadding * 2);
			var offset = venueImage.offset();

			// Create flash element
			var tempContainerID = "360TempContainer";
			var tempContainer = $("#" + tempContainerID);
			if (tempContainer.length == 0)
			{
				$("body").append("<div style=\"display:none;\"><div id=\"" + tempContainerID + "\"></div></div>");
			}
			var params = { wmode: "window", allowfullscreen: true };
			swfobject.embedSWF(vrMovie.url, tempContainerID, movieWidth, movieHeight, "9", false, false, params);
			tempContainer = $("#" + tempContainerID);

			// Write html to overlay & show
			var html = tempContainer.parent().html();
			App.showModalOverlay({ html: html, top: offset.top, left: offset.left, width: movieWidth, height: movieHeight });
		});
	});

	// Show the controls & buttons. The timeout is for a stupid bug in safari...
	window.setTimeout("$('#SlideTriggers, #360View').show();", 10);
}

var hideSlidePanel = function()
{
	$("#SlidePanel").animate({ height: 0 }, "normal", "linear", function()
	{
		enableSlideshow();
	});
}

var showSlidePanel = function(type)
{
	disableSlideshow();
	switch (type)
	{
		case "Configurations":
			$("#SlidePanelVenueConfigurations").show();
			$("#SlidePanelLinks, #SlidePanel360View").hide();
			break;
		case "360":
			$("#SlidePanel360View").show();
			$("#SlidePanelLinks, #SlidePanelVenueConfigurations").hide();
			break;
		default:
			$("#SlidePanelLinks").show();
			$("#SlidePanelVenueConfigurations, #SlidePanel360View").hide();
			break;
	}
	
	$("#SlidePanel").animate({ height: 404 }, "normal", "linear", function()
	{
		setSlidePanelArrows(type)
	});
};

var setSlidePanelArrows = function(type)
{
	var divID;
	switch (type)
	{
		case "Configurations": divID = "SlidePanelVenueConfigurations"; break;
		case "360": divID = "SlidePanel360View"; break;
		default: divID = "SlidePanelLinks"; break;
	}

	var slidePanel = $("#" + divID);
	var slideSandbox = slidePanel.find("div.SlideSandbox");
	var thumbList = slidePanel.find("ul");
	if (thumbList.height() > slideSandbox.height())
	{
		if (thumbList[0].offsetTop < 0)
		{
			slidePanel.find("img.SlidePanelUp").removeClass("Disabled");
		}
		else
		{
			slidePanel.find("img.SlidePanelUp").addClass("Disabled");
		}

		if (thumbList.height() + 3 + thumbList[0].offsetTop > slideSandbox.height())
		{
			slidePanel.find("img.SlidePanelDown").removeClass("Disabled");
		}
		else
		{
			slidePanel.find("img.SlidePanelDown").addClass("Disabled");
		}
	}
}

var moveSlidePanel = function()
{
	var trigger = $(this);
	if (!slidePanelTransitioning && !trigger.hasClass("Disabled"))
	{
		slidePanelTransitioning = true;
		var direction = (trigger[0].className.indexOf("Up") < 0 ? 1 : -1); // 1 = move up, -1 = move down
		var slidePanel = trigger.parents("div:first");
		var thumbList = slidePanel.find("ul");
		var thumbs = slidePanel.find("li");
		var offset = 86;
		if (thumbs.length > 1)
		{
			offset = thumbs[1].offsetTop - thumbs[0].offsetTop;
		}
		thumbList.animate({ marginTop: (direction > 0 ? "-" : "+") + ("=" + offset) }, "fast", "linear", function()
		{
			var type = "Links";
			if (trigger[0].parentNode.id.indexOf("Configurations") > -1)
			{
				type = "Configurations";
			}
			else if (trigger[0].parentNode.id.indexOf("360") > -1)
			{
				type = "360";
			}
			setSlidePanelArrows(type);
			slidePanelTransitioning = false;
		});
	}
}


