/*
	DynAPI Distribution
	PoolManager Class by Raymond Irving (http://dyntools.shorturl.com)

	The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
	
	Note: pObj (Parent Object) must implement _CreatePoolObject() and _ResetPoolObject() functions
	
*/

function PoolManager(pObj){
	this._pool={};
	this._cnt=0;
	this._pobj=pObj;
};
var p = PoolManager.prototype;
p.getObject=function(){
	var o,ob;
	// check pool for free object
	for(o in this._pool) {
		ob=this._pool[o];
		this._pool[o] = null;
		delete this._pool[o];
		return ob;
	}
	// call parent object to create new object
	if(this._pobj._CreatePoolObject){
		return this._pobj._CreatePoolObject();
	}
};
p.storeObject=function(o){
	this._cnt++;
	// reset object via _ResetPoolObject
	o=this._pobj._ResetPoolObject(o);
	this._pool['S'+this._cnt]=o;
};