function tf_TEMPLATER(containerID, templateID, minCount, maxCount)
{
	this.containerID = containerID;
	this.templateID = templateID;
	
	this.minCount = parseInt(minCount < 0 ? 0 : minCount);
	this.maxCount = parseInt(maxCount <= this.minCount ? this.minCount + 1 : maxCount);
	
	this.iteration = this.minCount;
	
	this.addBlock = function()
	{
		var template = tf_DOM.$(this.templateID);
		var container = tf_DOM.$(this.containerID);
		
		for(;;)
		{
			if(tf_DOM.$(this.templateID + this.iteration))
				this.iteration++;
			else
			{
				if(this.iteration <= this.maxCount)
				{
					var item = tf_DOM.CE('div', this.templateID + this.iteration);
					if(item)
					{
						item.innerHTML = tf_PHP.str_ireplace(this.templateID, this.iteration, template.innerHTML);
						tf_DOM.AE(item, container);
					}
				}
				else
					this.iteration--;
				
				break;
			}
		}
	}
	
	this.delBlock = function()
	{
		var container = tf_DOM.$(this.containerID);
		
		for(;;)
		{
			if(tf_DOM.$(this.templateID + this.iteration))
				this.iteration++;	
			else
			{
				this.iteration--;
				break;
			}	
		}
		
		if(this.iteration > this.minCount)
		{
			tf_DOM.RE(tf_DOM.$(this.templateID + this.iteration));
			this.iteration--;
		}
	}
};
