function Observable(initialValue) {
	this.data=initialValue
	this.callbacks={}

	this.addCallback=addCallback_obs_fnct
	this.delCallback=delCallback_obs_fnct
	this._docallbacks=_docallbacks_obs_fnct
	this.set=set_obs_fnct
	this.get=get_obs_fnct
	this.unset=unset_obs_fnct
};


// Functions 

function addCallback_obs_fnct(name, func, obj) {
	var xobj=this
	this.callbacks[name] = function() {
		func(obj, xobj, xobj.data)
	}
};

function delCallback_obs_fnct(name) {
	delete this.callbacks[name]
};

function _docallbacks_obs_fnct() {
	for (func in this.callbacks) {
		this.callbacks[func]()
	}
};

function set_obs_fnct(data) {
	this.data=data
	this._docallbacks()
};

function get_obs_fnct() {
	return this.data
};

function unset_obs_fnct() {
	this.data = null
};
