function FunctionList()
{
	var self = this;
	var itsFunctions = new Array();


	this.add = function(inFunction)
	{
		itsFunctions[itsFunctions.length] = inFunction;
		return (self);
	};


	this.remove = function(inFunction)
	{
		var i;

		for (i = 0; i < itsFunctions.length; i++)
		{
			if (itsFunctions[i] === inFunction)
			{
				itsFunctions.splice(i,1);
				break;
			}
		}

		return (self);
	};


	this.call = function(inThis)
	{
		var i;
		var theParameters;
		var theResults;

		theParameters = new Array(arguments.length - 1);
		for (i = 1; i < arguments.length; i++)
			theParameters[i - 1] = arguments[i];
		theResults = new Array(itsFunctions.length);
		for (i = 0; i < itsFunctions.length; i++)
			theResults[i] = itsFunctions[i].apply(inThis,theParameters);

		return (theResults);
	};
}