/**
* Abstract class Observable, for implementing the Observer pattern
*/
var Observable = {
	
	observers: [],
	
	attach: function(observer, eventName){
		 var newObserver = {
			'observer' : observer,
			'eventName' : eventName
		};
		this.observers.include(newObserver);
	},
	
	detach: function(observer){
		this.observers.erase(observer);
	},
	
	notify: function(eventName){
		var observers = this.observers;
		for (var i in observers){
			if (observers[i].eventName === eventName) {
				observers[i].observer['update'](eventName);
			}
		}
	}
	
};

var IObserver = new MethodsInterface('Observer', ['update']);