/** 
* Copyright 2008-11 massimocorner.com
* License: http://www.massimocorner.com/license.htm
* @author      Massimo Foti (massimo@massimocorner.com)
* @version     1.0, 2011-11-19
*/

if(typeof(tmt) == "undefined"){
	var tmt = {};
}

tmt.notifier = {};

tmt.notifier.decorate = function(obj){
	obj.observers = [];

	obj.register = function(observer){
		obj.observers.push(observer);
	}

	obj.unregister = function(observer){
		for(var i=0; i<obj.observers.length; i++){
			if(obj.observers[i] == observer){
				obj.observers.splice(i, 1);
				break;
			}
		}
	}

	obj.notify = function(eventName, data){
		for(var i=0; i<obj.observers.length; i++){
			var obs = obj.observers[i];
			if((obs)){
				if(typeof obs == "function"){
					obs(eventName, this, data);
				}
				else if(obs[eventName]){
					obs[eventName](this, data);
				}
			}
		}
	}

	return obj;
}
