function ArrayList(){
	var count = 0;
	var items = new Array(0);	
	
	function addItem(item){
		if(items == null)
			items = new Array(0);
		var len = items.length+1;
		var newItems = new Array(len);
		for(var i = 0; i<items.length; i++){
			newItems[i] = items[i];
		}
		newItems[items.length] = item; 
		items = newItems;
	}
	function removeItem(item){	
		var	index = indexOf(item);
		if(index == -1)
			return;
		items[index] = null;
		var len = items.length-1;
		var newItems = new Array(len);
		for(var i = 0; i<len; i++){
			var y = i;
			if(items[i] != null)
				newItems[i] = items[i];
			else if(i<items.length)
				newItems[y] = items[i+1];
		}
		items = newItems;
	}
	function removeItemByID(id){	
		var	item = getByID(id);
		if(item == null)
			return;
		removeItem(item);
	}	
	function indexOf(item){
		var len = items.length;		
		for(var i = 0; i<len; i++){
			if(items[i] == item)
				return i;
		}
		return -1;
	}

	function getByID(id){			
		for(var i = 0; i<items.length; i++){
			if(items[i].ID == id)
				return items[i];
		}
	}
	function getByName(name){			
		for(var i = 0; i<items.length; i++){
			if(items[i].name == name)
				return items[i];
		}
	}	
	function getItems(){
		return items;
	}
	function contains(id){			
		if(getByID(id) == null)
			return false;
		return true;
	}
	this.Contains = contains;
	this.AddItem = addItem;
	this.RemoveItem = removeItem;
	this.RemoveItemByID = removeItemByID;
	this.IndexOf = indexOf;
	this.GetByID = getByID;
	this.GetByName = getByName;
	this.Items = getItems;
}