
////////////////////////////////////////////////////////////////////////////////////////////////

//// Observer ////

// Constructor
function Observer() {
	this.name = arguments[0]!=null ? arguments[0] : "Observer";
	this.values	= new Map();
}

// GET Name
Observer.prototype.getName = function() {
	return this.name;
}

// SET Valor
Observer.prototype.setValue = function() {
	var key = arguments[0];
	var value = arguments[1];
	this.values.put(key, value);
}

// GET Valor
Observer.prototype.getValue = function() {
	var key = arguments[0];
	return this.values.get(key);
}

// Cridat des del objecte observat quan aquest canvia
Observer.prototype.update = function() {
	var observable = arguments[0];
	var arg = arguments[1];
	alert("[ Observer.update ] observer:'"+this.name+"' has received a notification \n"+
		"from observable:'"+observable.getName()+"'\narg:'"+arg+"'");
}

// Representació textual
Observer.prototype.toString = function() {
	var buff = "Observer : [ key:" + this.name + " ]";
	return buff;
}