// =============================================================================
// イベントブロードキャスターオブジェクト
// =============================================================================
/*
   BroadCaster オブジェクト

   最終更新日:2003年7月18日(金)
   -----------------------------------------------------------------------------

   依存
	sniffer.js

   -----------------------------------------------------------------------------

   コンストラクタの引数
	無し

   -----------------------------------------------------------------------------

   メソッド
	- initialize( object )
		与えられたオブジェクトをブロードキャスターに仕立て上げます。

	- addListener( listener )
		観客を追加します。

	- removeListener( listener )
		観客リストからこの観客を削除します。

	- broadcastMessage( evt )
		観客達に向けてイベントを発射します。

   -----------------------------------------------------------------------------

   備考
	- Flash MXのASBroadCasterをまねています。
*/
// =============================================================================
if(sniffer.DOMable()) {



// -----------------------------------------------------------------------------
/*
   コンストラクタ
*/
BroadCaster = {
}
// -----------------------------------------------------------------------------



// -----------------------------------------------------------------------------
/*
   メソッド
	Null BroadCaster.initialize( object )

		Object object		-	ブロードキャスターに仕立て上げたい相手。
*/
BroadCaster.initialize = function( object ){
	object.addListener = this.addListener;
	object.removeListener = this.removeListener;
	object.broadcastMessage = this.broadcastMessage;

	object.listeners = new Array();
}
// -----------------------------------------------------------------------------



// -----------------------------------------------------------------------------
/*
   メソッド
	Null BroadCaster.addListener( listener )

		Object listener		-	イベントを発射したい観客。
*/
BroadCaster.addListener = function( listener ){
	this.removeListener( listener );
	this.listeners.push( listener );
}
// -----------------------------------------------------------------------------



// -----------------------------------------------------------------------------
/*
   メソッド
	Null BroadCaster.removeListener( listener )

		Object listener		-	観客リストから削除したい観客。
*/
BroadCaster.removeListener = function( listener ){
	for( var i=0; i<this.listeners.length; i++)
	{
		if(this.listeners[i] == listener)
		{
			this.listeners.splice(i,1);
			return;
		}
	}
}
// -----------------------------------------------------------------------------



// -----------------------------------------------------------------------------
/*
   メソッド
	Null BroadCaster.broadcastMessage( evt )

		String evt		-	発射するイベント
*/
BroadCaster.broadcastMessage = function( evt ){
	for( var i=0; i<this.listeners.length; i++)
	{
		this.listeners[i][evt]();
	}
}
// -----------------------------------------------------------------------------



}
