function CallBack(func, params)
{
	this.CBFunction = func;
	this.params		= params;
}

CallBack.prototype.execute = function(primary)
{
	if(isFunction(this.CBFunction))
	return this.CBFunction(primary, this.params);
}

var __TIMEOUT = new Array();

function TimeOut(func, time, params, cb)
{
	this.id				= __TIMEOUT.length;
	this.time			= time;
	this.params			= params;
	this.CBFunction		= func;
	this.cb				= cb;
	__TIMEOUT.push(this);
	this.timeOutId		= setTimeout("__TIMEOUT["+this.id+"].execute();if(__TIMEOUT["+this.id+"].cb instanceof CallBack)__TIMEOUT["+this.id+"].cb.execute();", time);
}

TimeOut.prototype.execute = function()
{
	if(isFunction(this.CBFunction))
	return this.CBFunction(this, this.params);
}

TimeOut.prototype.destroy = function()
{
	clearTimeout(this.timeOutId);
}

var __INTERVAL = new Array();

function Interval(func, time, params, cb)
{
	this.id				= __INTERVAL.length;
	this.time			= time;
	this.params			= params;
	this.CBFunction		= func;
	this.cb				= cb;
	__INTERVAL.push(this);
	this.intervalId		= window.setInterval("__INTERVAL["+this.id+"].execute();if(__INTERVAL["+this.id+"].cb instanceof CallBack)__INTERVAL["+this.id+"].cb.execute();", time);
}

Interval.prototype.execute = function()
{
	if(isFunction(this.CBFunction))
	return this.CBFunction(this, this.params);
}

Interval.prototype.destroy = function()
{
	window.clearInterval(this.intervalId);
}
