// requires getElementsByClassName-1.0.1.js http://www.robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/
function CrossFaderController
(
	sName,				// instance name
	oCrossFaderId,		// id of the cross fader to control
	containerId,		// id of the containing item - helps us narrow where to search
	tagToAttachEvent,	// class of the items we want crossfading
	tagToChangeClass,	// tag of the items we want cross fading
	classCurrent		// the CssClass to set the current item to hightlight it
)
{
	var name = sName;
	var objContainer = document.getElementById(containerId);
	if(!objContainer)
	{
		//alert('Fader Controller "' + containerId + '" does not exist.');
		return;
	}
	var objEventItems = objContainer.getElementsByTagName(tagToAttachEvent);
	var objClassItems = objContainer.getElementsByTagName(tagToChangeClass);
	
	//
	this.Jump = function(i)
	{
		// call the "JumpTo" function of the CrossFader
		eval(oCrossFaderId + ".JumpTo(" + i + ")");
		
		// update the CssClass of the navigation items so the current item is "selected"
		for(j=0; j< objClassItems.length; j++)
		{
			if(i==j)
			{
				objClassItems[j].className += (" " + classCurrent);
			}
			else
			{
				objClassItems[j].className = objClassItems[j].className.replace(classCurrent, "");
			}
		}
	}
	
	// update the 
	this.UpdateSelection = function(i)
	{
		for(j=0; j< objClassItems.length; j++)
		{
			if(i==j)
			{
				objClassItems[j].className += (" " + classCurrent);
			}
			else
			{
				objClassItems[j].className = objClassItems[j].className.replace(classCurrent, "");
			}
		}
	}
	
	function Init()
	{
		if(objEventItems.length != objClassItems.length)
		{
			alert("Cannot set up CrossFaderControl.");
			return;
		}
		
		objClassItems[0].className += (" " + classCurrent);
		
		// set up the click events
		// i.e. for each item, tell it to call the Jump function, passing its index
		for(var i=0; i<objEventItems.length; i++)
		{
			objEventItems[i].onclick = new Function(sName + ".Jump(" + i + "); return false;");
		}
	}
	
	Init();
}

