// Author: Joseba Alonso

// Version: 1.0

// LastChange: 12-1-2005



function FrameServer(){

	this.inter = setInterval("FrameServer.__instance.__frame()",1000/30);

	this.listeners = new Array();

}

// Singleton implementation

FrameServer.__instance = null;

FrameServer.getInstance = function(){

	if(!FrameServer.__instance){

		FrameServer.__instance = new FrameServer();

	}

	return FrameServer.__instance;

}

// Private

FrameServer.prototype.__frame = function(){

	for(var i=0;i<this.listeners.length;i++){

		if(this.listeners[i])this.listeners[i].obj[this.listeners[i].func]();

	}

}

// Public interface

FrameServer.prototype.addListener = function(obj,func){

	this.removeListener(obj,func);

	this.listeners[this.listeners.length] = {obj:obj,func:func};

}

FrameServer.prototype.removeListener = function(obj,func){

	for(var i=0;i<this.listeners.length;i++){

		if(this.listeners[i] && this.listeners[i].obj==obj && this.listeners[i].func==func){

			this.listeners[i] = null;;

			return;

		}

	}

}
