var Collection = {};

Collection.addItem = function(sContainerID, sTemplateID, oAfterTarget)
{
	if (oAfterTarget)
	{
		oAfterTarget.bTarget = true;

		var aItems = Collection.getItems(sContainerID);

		for (var i = 0; i < aItems.length; i++)
		{
			if (aItems[i].addTarget.bTarget == true)
			{
				if (i + 1 == aItems.length)
				{
					Collection.addItem(sContainerID, sTemplateID);
				}
				else
				{
					aItems[i + 1].parentNode.insertBefore($(sTemplateID).getElementsByTagName('div')[0].cloneNode(true), aItems[i + 1]);
				}
			}
		}
	}
	else
	{
		$(sContainerID).appendChild($(sTemplateID).getElementsByTagName('div')[0].cloneNode(true));
	}

	Collection.updateItems(sContainerID);
}

Collection.deleteItem = function(sContainerID, oTarget)
{
	var oElement = oTarget;

	do
	{
		if (oElement.className == 'collectionItem')
		{
			oElement.parentNode.removeChild(oElement);
			Collection.updateItems(sContainerID);

			break;
		}
	}
	while (oElement = oElement.parentNode)
}

Collection.getItems = function(sContainerID)
{
	var aItems = new Array();
	var aResult = $(sContainerID).getElementsByTagName('div');

	for (var i = 0; i < aResult.length; i++)
	{
		if (aResult[i].className == 'collectionItem')
		{
			aItems[aItems.length] = aResult[i];
		}
	}

	for (var i = 0; i < aItems.length; i++)
	{
		var aResult = aItems[i].getElementsByTagName('input');

		for (var j = 0; j < aResult.length; j++)
		{
			if (aResult[j].className == 'collectionItemAdd')
			{
				aItems[i].addTarget = aResult[j];
			}

			if (aResult[j].className == 'collectionItemDelete')
			{
				aItems[i].deleteTarget = aResult[j];
			}
		}
	}

	return aItems;
}

Collection.updateItems = function(sContainerID)
{
	var aItems = Collection.getItems(sContainerID);

	for (var i = 0; i < aItems.length; i++)
	{
		if (aItems.length == 1)
		{
			aItems[i].deleteTarget.disabled = true;
		}
		else
		{
			aItems[i].deleteTarget.disabled = false;
		}

		aItems[i].addTarget.bTarget = null;
	}
}