
////////////////////////////////////////////////////////////////////////////////////////////////

//// Observable ////

// Constructor
function Observable() {
	this.name = arguments[0]!=null ? arguments[0] : "Observable";
	this.observers = new Array();
}

// GET Name
Observable.prototype.getName = function() {
	return this.name;
}

// ADD observador
Observable.prototype.addObserver = function() {
	var observer = arguments[0];
	this.observers[this.observers.length] = observer;
}

// Notificació d'un missatge als observadors
Observable.prototype.notifyObservers = function() {
	var arg = arguments[0]!=null ? arguments[0] : "0";
	for (var i=0; i<this.observers.length; i++) {
		this.observers[i].update(this, arg);
	}
}

// Representació textual
Observable.prototype.toString = function() {
	var buff = "Observable : [ observers:{";
	for (var i=0; i<this.observers.length; i++) {
		buff += "\n" + this.observers[i].toString() + ", ";
	}
	buff += "\n}]";
	return buff;
}
