var sig_listeners=new Array();
var sig_services=new Array();
var sig_queue=new Array();
function register_listener(listener,sig_from,sig,sender)
{
	if(!sender)sender=null;
	sig_listeners.push(({'listener':listener,'sig_from':sig_from,'sig':sig,'sender':sender}));
	broadcast_sig("SIGSVR","LISTENER_REGISTERED",listener);
	return;
}
function register_service(service)
{
	return;
}
function remove_listener(listener,sig_from,sig)
{
	for(var i=0;i<sig_listeners.length;i++)
	{
		if(sig_listeners[i]['listener']==listener)
		{
			if((sig_listeners[i]['sig_from']==sig_from) || (sig_listeners[i]['sig_from']=="*"))
			{
				if((sig_listeners[i]['sig']==sig) || (sig_listeners[i]['sig']=="*"))
				{
					sig_listeners.splice(i,1);
					broadcast_sig("SIGSVR","LISTENER_REMOVED",sig);
				}
			}
		}
	}
}
function broadcast_sig(sig_from,sig,args)
{
	for(var i=0;i<sig_listeners.length;i++)
	{
		if((sig_listeners[i]['sig_from']==sig_from.tName) || (sig_listeners[i]['sig_from']=="*"))
		{
			//alert("Sending signal to " + sig_listeners[i]['listener']);
			if((sig_listeners[i]['sig']==sig) || (sig_listeners[i]['sig']=="*"))
			{
				
				sig_listeners[i]['listener'](sig_from,sig,args,sig_listeners[i]['sender']);
			}
		}
	}
}
register_listener(function(){winController.handleResize()},'*',"BR_WINDOW_SIZE_CHANGED");
