// ************************************************************************************************
// *** EventManager holds object names / method names pairs and permforms them when requested.
//	The events will be instances of this object
// ************************************************************************************************

// Constuctor
function EventManager() {
	// ************************************************************************************************
	// *** EventManager interface
	// ************************************************************************************************
	
	this.add = em_Add;
	this.exec = em_Exec;	
	
	// ************************************************************************************************
	// *** Implementation
	// ************************************************************************************************

	this.eventItems = new Array();
	
	// Subscribe an event handler (object name/method name pair)
	function em_Add(obj, method) {
		this.eventItems.push(new EventItem(obj, method));
	}
	
	// Performs all subscribed event handlers
	function em_Exec() {
		var i;
		
		for(i = 0; i < this.eventItems.length; i++)
			eval(this.eventItems[i].object + '.' + this.eventItems[i].method + '()');
	}
}

function EventItem(object, method) {
	this.object = object;
	this.method = method;
}