ArrayList = function(arr){
	var items = [];
	if (arr) items = items.concat(arr);
	this.count = items.length;
	this.add = function(obj){
		items.push(obj);
		this.count = items.length;
	};
	this.clear = function(){
		items.splice(0, items.length);
		this.count = 0;
	};
	this.clone = function(){
		return new ArrayList(items);
	};
	this.contains = function(obj){
		for (var i = 0; i < items.length; i++){
			if (items[i] == obj) {
				return true;
			}
		}
		return false;
	};
	this.indexOf = function(obj){
		for (var i = 0; i < items.length; i++){
			if (items[i] == obj) {
				return i;
			}
		}
		return -1;
	};
	this.insert = function(i, obj){
		items.splice(i,0,obj);
		this.count = items.length;
	};
	this.item = function(k){
		return items[k];
	};
	this.remove = function(obj){
		var i = this.indexOf(obj);
		if (i >=0) {
			items.splice(i,1);
		}
		this.count = items.length;
	};
	this.removeAt = function(i){
		items.splice(i,1);
		this.count = items.length;
	};
	this.reverse = function(){
		items.reverse();
	};
	this.sort = function(fn){
		if (fn){
			items.sort(fn);
		} else {
			items.sort();
		}
	};
	this.setByIndex = function(i, obj){
		items[i]=obj;
		this.count=items.length;
	};
	this.toArray = function(){
		return [].concat(items);
	}
	this.toString = function(){
		return items.join(",");
	};
};
