/* Initialization */

// tp: 12/12/2007: This variable will be set globally by the json tcl template.
//var dataFileURL = '/tii/isweddings2008/js/json/home_gallery.json';

var handler = setupHomepageGallery;

/* Ajax */
var ajax = new ajaxObj ();
ajax.setMimeType ('text/plain');
tii_callFunctionOnElementLoad ('gallery', function ()
{
	ajax.doGet (dataFileURL, handler);
});

/* This function sets up the home page gallery */
function setupHomepageGallery (ajaxContent)
{
	/* Get JSON object */
	var jsonObj = eval ('(' + ajaxContent + ')');

	/* Check if there is only one slide */
	var slidesTotal = jsonObj.Gallery.SlidesTotal;
	if (slidesTotal < 2)
	{
		return;
	}

	var wait = setTimeout (startSetup, 10);
	function startSetup ()
	{
		var slide = document.getElementById ('slide');
		if (slide)
		{
			/* Get elements */
			var photoanchor = document.getElementById ('photoanchor');
			var photoimg = document.getElementById ('photoimg');
			var photocredit = document.getElementById ('photocredit');
			var navs = new Array ();
			navs [0] = document.getElementById ('nav1');
			navs [1] = document.getElementById ('nav2');
			var navAnchors = new Array ();
			for (var i = 0; i < 2; i++)
			{
				var navLis = navs [i].getElementsByTagName ('li');
				navAnchors [i] = new Array ();
				for (var j = 0; j < 3; j++)
				{
					navAnchors [i] [j] = navLis.item (j).getElementsByTagName ('a').item (0);
					navAnchors [i] [j].href = 'javascript:{}';
				}
			}
			var pagination1 = document.getElementById ('pagination1');
			var pagination2 = document.getElementById ('pagination2');
			var eyebrowimg = document.getElementById ('eyebrowimg');
			var h2 = document.getElementById ('h2');
			var text = document.getElementById ('text');
			var nextlinkanchor = document.getElementById ('nextlinkanchor');
			var upnextanchor = document.getElementById ('upnextanchor');
			
			/* Add event handlers */
			var isPlaying = true;
			var currentSlide = 0;
			var interval;
			var anchor_prev;
			var anchor_next;
			var anchor_play_pause;
			var img_play_pause;
			var playSrc;
			var pauseSrc;
			var keyevent = 'keypress';
			if (slide.onkeydown)
			{
				keyevent = 'keydown';
			}
			function attachEventHandlers (index)
			{
				anchor_prev = navAnchors [index] [2];
				anchor_next = navAnchors [index] [0];				
				anchor_play_pause = navAnchors [index] [1];
				img_play_pause = anchor_play_pause.getElementsByTagName ('img').item (0);
				if (index == 0)
				{
					img_play_pause_1 = navAnchors [0] [1].getElementsByTagName ('img').item (0);
					img_play_pause_2 = navAnchors [1] [1].getElementsByTagName ('img').item (0);
					playSrc = img_play_pause.className;
					pauseSrc = img_play_pause.src;
					
					/* Start gallery */
					interval = setInterval (function () { getNewSlide (1); }, 4000);
				}
				if (isPlaying)
				{
					img_play_pause.src = pauseSrc;
				}
				tii_addEventHandler (anchor_prev, 'click', function (event) { getNewSlide (-1, true, event); }, false);
				tii_addEventHandler (anchor_prev, keyevent, function (event) { getNewSlide (-1, true, event); }, false);
				tii_addEventHandler (anchor_next, 'click', function (event) { getNewSlide (1, true, event); }, false);
				tii_addEventHandler (anchor_next, keyevent, function (event) { getNewSlide (1, true, event); }, false);
				tii_addEventHandler (anchor_play_pause, 'click', function (event) { togglePlayPause (event); }, false);
				tii_addEventHandler (anchor_play_pause, keyevent, function (event) { togglePlayPause (event); }, false);
				
				/* Event handlers */
				function getNewSlide (increment, isManual, event)
				{
					if (event && !keyeventIsValid (event))
					{
						return;
					}
					if (isManual && interval)
					{
						img_play_pause_1.src = playSrc;
						img_play_pause_2.src = playSrc;
						clearInterval (interval);
					}
					currentSlide += increment;
					if (currentSlide < 0)
					{
						currentSlide = slidesTotal - 1;
					}
					else if (currentSlide >= slidesTotal)
					{
						currentSlide = 0;
					}



					var jsonSlide = jsonObj.Gallery.Slides [currentSlide];
					photoanchor.href = jsonSlide.PhotoUrl;
					photoimg.src = jsonSlide.PhotoSrc;
					photoimg.alt = jsonSlide.PhotoAlt;
					photocredit.innerHTML = jsonSlide.PhotoCredit;
					pagination1.innerHTML = (currentSlide + 1) + ' of ' + slidesTotal;
					pagination2.innerHTML = (currentSlide + 1) + ' of ' + slidesTotal;
					if (typeof eyebrowimg != 'undefined' && eyebrowimg)
					{
						eyebrowimg.src = jsonSlide.EyebrowSrc;
						eyebrowimg.alt = jsonSlide.EyebrowAlt;
					}
					h2.innerHTML = jsonSlide.H2;
					text.innerHTML = jsonSlide.Text;
					nextlinkanchor.href = jsonSlide.NextLinkUrl;
					nextlinkanchor.innerHTML = jsonSlide.NextLinkText;
					upnextanchor.href = jsonSlide.UpNextUrl;
					upnextanchor.innerHTML = jsonSlide.UpNextText;
				}
				function togglePlayPause (event)
				{
					if (!keyeventIsValid (event))
					{
						return;
					}
					if (isPlaying)
					{
						img_play_pause_1.src = playSrc;
						img_play_pause_2.src = playSrc;
						if (interval)
						{
							clearInterval (interval);
						}
						isPlaying = false;
					}
					else
					{
						img_play_pause_1.src = pauseSrc;
						img_play_pause_2.src = pauseSrc;
						interval = setInterval (function () { getNewSlide (1); }, 4000);
						isPlaying = true;
					}
				}
				function keyeventIsValid (event)
				{
					if (event.type == keyevent && event.keyCode != 13)
					{
						return false;
					}
					return true;
				}
			}
			attachEventHandlers (0);
			attachEventHandlers (1);
		}
	}
}