var myChain = new Chain();
var allGalleryImages = new Array();
var whatImage = 1;
var imageNext = "";
var direction = 1;

window.addEvent('domready', function()
{	
	// Loop through gallery images
	if (!document.getElementsByTagName) return false;
	var pageLinks = document.getElementsByTagName("a");
	// Loop through the links
	for (var i=0; i < pageLinks.length; i++)
	{
		// Are we looking at gallery images
		if (pageLinks[i].className.match("popupGallery"))
		{
			// Add link to list of available gallery images to look at
			allGalleryImages[allGalleryImages.length] = pageLinks[i].href;
			pageLinks[i].onclick = function()
			{
				// Setup onclick event
				startGallery(this.href);
				return false;
		 	}
		}
		
	}
});

function startGallery(imageURL)
{
	myChain.chain(
		function(){createGallery();},
		function(){openUpGalleryDarkScreen(true, imageURL);},
		function(){openUpGalleryContainer(true);},
		function(){loadImageUp(imageURL);},
		function(){resizeContainer();},
		function(){showImage(true);},
		function(){findImageNumber();},
		function(){showNav(true);}
	);
	myChain.callChain();
}

function endGallery()
{
	myChain.chain(
		function(){showNav(false);},
		function(){showImage(false);},
		function(){openUpGalleryContainer(false);},
		function(){openUpGalleryDarkScreen(false);}
	);
	myChain.callChain();
}

function changeGalleryPic(whatdirection)
{
	direction = whatdirection;
	myChain.chain(
		function(){showNav(false);},
		function(){showImage(false);},
		function(){findImageNumber();},
		function(){whatsNextImage();},
		function(){loadImageUp(imageNext);},
		function(){resizeContainer();},
		function(){showImage(true);},
		function(){showNav(true);}
	);
	myChain.callChain();
}

function createGallery()
{
	// if the gallery has already been made. if not made make it
	var testIfLoaded = $('darkenScreenObject');
	if(!testIfLoaded)
	{
		// Create divs for gallery
		var tbody = document.getElementsByTagName("body")[0];
		var darkenScreenObject = document.createElement('div');
		darkenScreenObject.id = 'darkenScreenObject';
		var popGalleryContainer = document.createElement('div');
		popGalleryContainer.id = 'popGalleryContainer';
		var popGalleryImage = document.createElement('div');
		popGalleryImage.id = 'popGalleryImage';
		var galleryImageContainer = document.createElement('img');
		galleryImageContainer.id = 'galleryImageContainer';
		var galleryNavigation = document.createElement('div');
		galleryNavigation.id = 'galleryNavigation';
		var galleryNavigationprev = document.createElement('div');
		galleryNavigationprev.id = 'galleryNavigation-prev';
		var imageOfImage = document.createElement('div');
		imageOfImage.id = 'imageOfImage';
		var closeGallery = document.createElement('div');
		closeGallery.id = 'closeGallery';
		var galleryNavigationnext = document.createElement('div');
		galleryNavigationnext.id = 'galleryNavigation-next';
		
		// Put Divs in place in order on page
		tbody.appendChild(darkenScreenObject);
		tbody.appendChild(popGalleryContainer);
		popGalleryContainer.appendChild(popGalleryImage);
		popGalleryImage.appendChild(galleryImageContainer);
		popGalleryImage.appendChild(galleryNavigation);
		galleryNavigation.appendChild(galleryNavigationprev);
		galleryNavigation.appendChild(imageOfImage);
		galleryNavigation.appendChild(closeGallery);
		galleryNavigation.appendChild(galleryNavigationnext);
		
		// Add Text to divs
		var prevTEXT = document.createTextNode("Previous");
		var nextTEXT = document.createTextNode("Next");
		var closeTEXT = document.createTextNode("Close Gallery");
		galleryNavigationprev.appendChild(prevTEXT);
		galleryNavigationnext.appendChild(nextTEXT);
		closeGallery.appendChild(closeTEXT);

		// Add Events to text
		$('galleryImageContainer').addEvent('click', function(){endGallery();});
		$('closeGallery').addEvent('click', function(){endGallery();});
		$('galleryNavigation-prev').addEvent('click', function(){changeGalleryPic(-1);});
		$('galleryNavigation-next').addEvent('click', function(){changeGalleryPic(1);});
	}
	myChain.callChain();
}

//Open up gallery Screen
function openUpGalleryDarkScreen(inOut, imageURL)
{
	// Fade in/out the screen
	var dark = $('darkenScreenObject');
	darkFx = new Fx.Tween('darkenScreenObject');
	if(inOut)
	{
		darkFx.set('opacity', 0);
		dark.style.display = 'block';
		darkFx.start('opacity', 0, 0.85).chain(
			function(){myChain.callChain();}
		);
	}
	else
	{
		darkFx.set('opacity', 0.85);
		darkFx.start('opacity', 0.85, 0).chain(
			function(){dark.style.display = 'none';myChain.callChain();}	  
		);
	}
}

function findImageNumber()
{
	for(i=0; i<allGalleryImages.length; i++)
	{
		if(allGalleryImages[i] == $('galleryImageContainer').src)	
		{
			whatImage = i + 1;
		}
	}
	myChain.callChain();
}

function whatsNextImage()
{
	whatImage = whatImage + direction;
	if(whatImage > allGalleryImages.length) {whatImage = 1;}
	if(whatImage <= 0) {whatImage = allGalleryImages.length;}
	imageNext = allGalleryImages[whatImage-1];
	myChain.callChain();
}

function openUpGalleryContainer(inOut)
{
	if(inOut)
	{
		var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
		var dsoctop=document.all? iebody.scrollTop : pageYOffset;
		dsoctop = dsoctop + 20;
		$('popGalleryImage').style.marginTop = ""+dsoctop+"px";
		$('popGalleryContainer').style.display = "block";
	}
	else
	{
		$('popGalleryContainer').style.display = "none";
		$('galleryNavigation').style.display = "none";
	}
	myChain.callChain();
}

function loadImageUp(imageURL)
{
	
	imageFx = new Fx.Tween('galleryImageContainer');
	imageFx.set('opacity', 0);	
	
	//var myImage = new Asset.image(imageURL, {id: 'myImage', title: 'myImage', onload: function() {loadInImage(imageURL);}});
	var myImage = $('galleryImageContainer').set({
		//The 'events' property passes the object to Element:addEvents.
		'events': {
			'load': callNextChain
		},
		//Any other property uses Element:setProperty.
		'src': imageURL
	});

}

function resizeContainer()
{
	popupMx = new Fx.Morph('popGalleryImage', {duration: 500, transition: Fx.Transitions.Sine.easeOut});
	popupMx.start({
		'height': $('galleryImageContainer').height,
		'width': $('galleryImageContainer').width
	}).chain(function(){myChain.callChain();});
}

function callNextChain()
{
	myChain.callChain();
}

function showImage(inOut)
{
	if(inOut)
	{
		imageFx.start('opacity', 0, 1).chain(function() {myChain.callChain();});
	}
	else
	{
		imageFx.start('opacity', 1, 0).chain(function() {myChain.callChain();});
	}
}

function showNav(inOut)
{
	if(inOut)
	{
		$('imageOfImage').innerHTML = "Image "+whatImage+" of "+allGalleryImages.length;
		popupMx.start({
			'height': $('galleryImageContainer').height+50
		}).chain(function(){$('galleryNavigation').style.display = "block";myChain.callChain();});
	}
	else
	{
		popupMx.start({
			'height': $('galleryImageContainer').height
		}).chain(function(){$('galleryNavigation').style.display = "none";myChain.callChain();});
	}
}