/**
 * wxtools is a common context shared by all Weather.com components
 */
if(typeof wxtools == 'undefined') {
	var wxtools = {};
	wxtools.logs = "";
	wxtools.logMe = function(msg) {
		wxtools.logs += msg;
	}
	var wxTools = wxtools;
}

wxtools.EventBroadcaster = new Object();
with ({
	_broadcastMessage:function(){
		var args = [];
		for(var i=0;i<arguments.length;i++) args[i]=arguments[i];
		var eventName = args.shift();
		var list = this._listeners;
		var max = list.length;
		for(var i=0;i<max;++i){
			if (list[i][eventName]) list[i][eventName].apply(list[i],args)// BM: this is to prevent handler being
			// called even though handlers do not need this event.
		}
	},
	_addListener:function(obj){
		this.removeListener(obj);
		this._listeners.push(obj);
		return true;
	},
	_removeListener:function(obj){
		var list = this._listeners;
		var i = list.length;
		while(i--){
			if(list[i]==obj){
				list.splice(i,1);
				return true;
			}
		}
		return false;
	}
}) {
	wxtools.EventBroadcaster.initialize = function(obj) {
		obj._listeners = new Array();
		obj.broadcastMessage = _broadcastMessage;
		obj.addListener = _addListener;
		obj.removeListener = _removeListener;
	};
};

var EventBroadcaster = wxtools.EventBroadcaster;