/* ********************************************** 
 * Subject Class   
 * observer must implements the update function
 * Jabi Suarez. 19/10/2007
 * **********************************************
 */

function Subject()
{
   this.observers = new Array();
}

Subject.prototype.notify = function( context )
{
	for (var i = 0; i < this.observers.length; ++i) {
		this.observers[i].update( context );
	}	
}

Subject.prototype.addObserver = function( observer )
{
	if( !observer.update ){
    	throw 'Wrong parameter';
	}
      
	if (this.observers.indexOf( observer, 0 ) == -1){
		this.observers.push( observer );
	}
}

Subject.prototype.removeObserver = function( observer )
{
	if( !observer.update )
		throw 'Wrong parameter';
		
	var v_indexOf = this.observers.indexOf( observer, 0 );
	if (v_indexOf != -1){   
		this.observers.splice(v_indexOf,1);
	}
}
