function generateFadeFunction(elementsToFadeOut, fadeOutDuration, fadeOutFrom, fadeOutTo, elementsToFadeIn, fadeInDuration, fadeInFrom, fadeInTo)
{
	var fadeFunction = "";
	var lastReferencedElement = null;
	var i; 
	var setup;

	for (i = 0; i < elementsToFadeOut.length; i++)
	{
		var functionName = elementsToFadeOut[i] + "_fadeOut";
		fadeFunction += "var " + functionName + " = new Spry.Effect.Fade('" + (elementsToFadeOut[i]) + "', {";
		setup = (lastReferencedElement == null) ? "" : "setup: " + lastReferencedElement + ".start(), ";
		fadeFunction += setup + "duration: " + fadeOutDuration + ", from: " + fadeOutFrom + ", to: " + fadeOutTo + "});" + '\n';
		lastReferencedElement = functionName;
	}

	fadeFunction += "\n";

	for (i = 0; i < elementsToFadeIn.length; i++)
	{
		var functionName = elementsToFadeIn[i] + "_fadeIn";
		fadeFunction += "var " + functionName + " = new Spry.Effect.Fade('" + (elementsToFadeIn[i]) + "', {";
		setup = (lastReferencedElement == null) ? "" : "setup: " + lastReferencedElement + ".start(), ";
		fadeFunction += setup + "duration: " + fadeInDuration + ", from: " + fadeInFrom + ", to: " + fadeInTo + "});" + '\n';
		lastReferencedElement = functionName;
	}

	fadeFunction += "\n" + lastReferencedElement + ".start();";
	return fadeFunction;
}
