// 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.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;
		}
	}
}
