function Collection()
{
	this.iCount = 0;
	this.aryItems = new Array();
	this.add = function(itemId, itemValue) {return (Collection_add(this, itemId, itemValue));}
	this.remove = function(itemId) {return (Collection_remove(this, itemId));}
	this.count = function() {return (Collection_count(this));}
	this.get = function(itemId) {return (Collection_get(this, itemId));}
	this.print = function() {Collection_print(this);}
}

function Collection_add(obj, itemId, itemValue)
{
	if (!itemId)
		return (false);
	
	if (!isNaN(itemId))
		return (false);

	//if (Collection_get(obj, itemId))
	//	return (false);
	
	var aryItem = new Array();
	aryItem["itemId"] = itemId;
	aryItem["itemValue"] = itemValue;
	obj.aryItems[obj.iCount] = aryItem;
	
	obj.iCount++;
	
	return (true);
}

function Collection_remove(obj, itemId)
{
	if (Collection_get(obj, itemId) == null)
		return (false);
	
	var iItemIndex = Collection_getItemIndex(obj, itemId);
	if (iItemIndex == -1)
		return (false);
		
	if (obj.iCount > 1)
	{
		if (iItemIndex == (obj.iCount - 1))
			obj.aryItems[iItemIndex] == null;
		else
		{
			for (var i = iItemIndex ; i < obj.iCount - 1 ; i++)
				obj.aryItems[i] = obj.aryItems[i + 1];
				
			obj.aryItems[obj.iCount - 1] = null;
		}
	}
	else
	{
		obj.aryItems[iItemIndex] = null;
	}
	
	obj.iCount--;
	
	return (true);
}

function Collection_getItemIndex(obj, itemId)
{
	if (isNaN(itemId))
	{
		if (obj.iCount > 0)
		{
			for (var i = 0 ; i < obj.iCount ; i++)
			{
				if (obj.aryItems[i]["itemId"] == itemId)
				{
					return (i);
				}
			}
		}
	}
	else
	{
		if (itemId >= 0 && itemId <= (obj.iCount - 1))
			return (itemId);
	}
	
	return (-1);
}

function Collection_count(obj)
{
	return (obj.iCount);
}

function Collection_get(obj, itemId)
{
	var iItemIndex = Collection_getItemIndex(obj, itemId);
	
	if (iItemIndex != (-1)) 
		return obj.aryItems[iItemIndex]["itemValue"];			
	else
		return (null);
}

function Collection_print(obj)
{
	if (obj.iCount == 0)
		return;

	document.write("Collection<br />\n");
	document.write("{<br />\n");

	for (var i = 0 ; i < obj.iCount ; i++)
	{
		document.write("&nbsp;&nbsp;&nbsp;[" + i + "] => ('" + obj.aryItems[i]["itemId"] + "', " + obj.aryItems[i]["itemValue"] + ")<br />\n");
		obj.aryItems[i]["itemId"]
	}
	
	document.write("}\n");
}